Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Java 实例变量还是静态变量?_Java_Static Members - Fatal编程技术网

Java 实例变量还是静态变量?

Java 实例变量还是静态变量?,java,static-members,Java,Static Members,我有一个变量,我想在2类中使用。我必须将其声明为静态变量吗?它可以是实例变量吗 public class Text extends JFrame implements ActionListener{ JTextArea t; String s; } 我想在另一节课上使用s。我必须将其声明为静态变量吗?是否可以将其声明为实例变量?我想在另一个类中使用s public class Text extends JFrame implements ActionListener{ JTextArea

我有一个变量,我想在2类中使用。我必须将其声明为静态变量吗?它可以是实例变量吗

public class Text extends JFrame implements ActionListener{

JTextArea t;
String s;
}

我想在另一节课上使用s。我必须将其声明为静态变量吗?是否可以将其声明为实例变量?

我想在另一个类中使用s

public class Text extends JFrame implements ActionListener{

JTextArea t;
String s;
}
如果在整个应用程序中,s将有一个相同的值,那么继续使用static


相反,如果它确实是一个实例变量,您可以在其他类中引用文本,并在Text.java中为s使用getter方法来访问它

您可以将其声明为实例变量,并为
s
创建一个公共getter方法

public String getValue() {
    return s;
}

还请看JB Nizet关于是否应该将其声明为静态变量或实例变量的回答。

为s创建公共getter方法,并从其他类中使用它

public class Text extends JFrame implements ActionListener{

public static JTextArea t;
String s;
};
上面的代码将使t在类本身之外可用:
Text.t
。您可能需要考虑继承,如果它应用于您的情况或使用实例开始,即:

public class Text extends JFrame implements ActionListener{   
     private JTextArea t;
     private String s;
     public JTextArea getTextArea() {
         return this.t;
     }
};
然后使用getter和setter访问它们的值,这是Java的工作方式。 要使用上述方法,您现在需要在另一个类中创建一个实例:

public class otherClass {
private Text theInstance = new Text();
JTextArea theTextArea = theInstance.getTextArea();
};

此外,停止命名变量s和t。这是一种糟糕的编码方式。使用明确的名称,这样就可以很容易地知道变量的用途。想象一下,如果几天后你想查看代码,你可能记不起代码中的
s
t
要做什么。

你不会根据如何使用变量来决定变量是否是静态的。如果所有
文本
实例都使用它,那么它必须是静态的。如果每个文本实例都有自己的
s
(不管这个选择不当的名称实际上可能代表什么),那么它必须是一个实例变量。

这一切都取决于您想使用这个变量做什么。请分享更多代码。