这种方法应该是静态的吗?

时间:2014-02-17 05:25:38

标签: class methods instance

我对java很新,目前正在调试程序。所以我有一个类有一个简单的方法和一些计算。基本上当我从另一个类调用此方法来使用变量(恰好是数组的一部分,其中一些正在计算)时,我得到了我需要的计算。然后我再次在另一个课堂上调用它,它再次计算,我的数字会受到损害。有没有办法让这个方法取一些值,计算然后保持不变?

这是数组类。我需要实例化一次,然后当我再次调用它时,数组的值是静态的。有没有办法让我的方法在我调用数组时保持不变?

在另一个课程中,我使用PlanMat pm = new PlanMat() 然后像pm.materials(fSi,fS,fO);并调用数组pm.rho0 [48];

public class PlanMat {
Constants con = new Constants();
double GPa = con.GPascals;
Main m = new Main();

public int i ;
public int eos [ ];    
public double rho0 [ ]; 
public double c [ ];
public double nn [ ];
public double Ks0 [ ];
public double Ksp [ ];

public void materials(double fSi, double fS, double fO)
{

i = 0;
eos = new int [ 51 ];
rho0 = new double [ 51 ];
c = new double [ 51 ];
nn = new double [ 51 ];
Ks0 = new double [ 51 ];
Ksp =new double [ 51 ];

        double fFeS = ( ((con.M_Fe / con.M_S) + 1) * fS );
        double fFeSi = ( ((con.M_Fe / con.M_Si) + 1) * fSi);
        double fFeO = ( ((0.950 * con.M_Fe) + con.M_O) / (1.95 * con.M_O) * fO);
        double fFe =  1.0 - fFeS - fFeSi - fFeO;


        i = 48;
        eos [ i ] = 1; 
        rho0 [ i ] = 1.0 / ( (fFe / rho0[3]) + (fFeSi / rho0[21])  
                    + (fFeO / rho0[22]) + (fFeS / rho0[13]) );

        Ks0 [ i ] = fFe * Ks0[3] + fFeSi * Ks0[21] + fFeO * Ks0[22]
                    + fFeS * Ks0[13]; 
        Ksp [ i ] = fFe * Ks0[3] + fFeSi * Ks0[21] + fFeO * Ks0[22]
                    + fFeS * Ks0[13]; 
        c [ i ] = 0.0;
        nn [ i ]= 0.0;

} }

2 个答案:

答案 0 :(得分:1)

class a{

......
function()
{
a,b
}
}

class b{
...function(){
here u need your variable value.
call the function and store the variable value in new variable.
}
}
if u need to do same u can do
class c{
...function(){
here u need your variable value.
call the function and store the variable value in new variable.
}
}

答案 1 :(得分:1)

有两个实现这个目标:

First:    您应该编写setget方法,调用set方法设置值,get方法设置为get方法。您将设置值在class1中设置值,现在如果您想在class2中使用相同的值,您将调用get方法将值作为数组获取并将此数组作为参数传递给class2的构造函数

Second:       您可以将整个对象传递给class2构造函数,并在该类中使用该对象,您的值将相同,数据不会受到损害,但为此您必须在数据类上实现Serializable(您在两者中都使用它)。 )