Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 这个方法应该是静态的吗?_Class_Methods_Instance - Fatal编程技术网

Class 这个方法应该是静态的吗?

Class 这个方法应该是静态的吗?,class,methods,instance,Class,Methods,Instance,我对java相当陌生,目前正在调试一个程序。所以我有一个类,它有一个简单的方法和一些计算。基本上,当我从另一个类调用这个方法来使用一个变量(恰好是数组的一部分,其中一些变量正在被计算)时,我得到了我需要的计算。然后,我在另一个类中再次调用它,它会再次计算,我的数字会受到影响。有没有办法让这个方法得到一些值,计算然后保持不变 这是数组类。我需要实例化一次,然后当我再次调用它时,让数组的值是静态的。在我调用数组时,有没有办法使方法保持不变 在另一个类中,我使用PlanMat pm=new PlanM

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

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

在另一个类中,我使用PlanMat pm=new PlanMat() 然后是pm.materials(fSi、fS、fO);并调用数组pm.rhoo[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;
}
}

有两种方法可以实现这一点:

首先
: 您应该编写
set
get
方法,调用
set
方法设置值,调用
get
方法设置值。您将设置值,比如在class1中设置值,现在如果您希望在class2中获得相同的值,您将调用get方法以获取作为数组的值,并将此数组作为参数传递给class2的构造函数


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

如果此变量等于计算,每次我调用这个方法时,它都会被更新吗?比如:int a=x+1;int b=a;一个疑问。。。下次使用时是否需要相同的变量值……这是您的需要是的,我刚刚发布了带有数组的类。我需要调用这个类,它将接收用户值,然后计算数组中的一个点(48)。当我实例化这个类一次时,它就出现了,但是当我再次实例化这个类时,它会弄乱值。当你从另一个类中获取变量的值时,它会将变量值存储到你的类中的新变量中。当你再次需要变量的值时,不要调用函数。不是从bew变量中取值,我已经这样做了,但是,我遇到了一个问题,我需要在另一个类中再次调用它。啊,看起来我仍然不知道你提到的方法。我来看看这些你能给我举个例子吗?@handroski你可以在oracle上看到这个文档你知道OOPS中的
构造函数吗?@handroski如果你不知道如何将类对象作为参数传递,你也可以读一下
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.
}
}