我仍然无法完全理解这种静态和非静态。
public static void main(String args[]){
staticClass.setString("hey there");
System.out.println(staticClass.getString2());
//expecting to be blank
NonStaticCalling nonStaticCalling = new NonStaticCalling();
}
static String aw = "";
public static void setString(String a){
aw =a;
}
public String getString(){
return aw;
}
public static String getString2(){
return aw;
}
public class NonStaticCalling {
staticClass staticClass = new staticClass();
public NonStaticCalling(){
staticClass.getString();
System.out.println(staticClass.getString());
}
}
如果我理解正确的话。我声明一个新对象非静态调用。所以我假设该类的输出值为“”(空白)
有人可以给我一个更好的例子吗?感谢
答案 0 :(得分:1)
设置静态变量时,对于该类的所有实例都是相同的。静态变量也称为“类变量”。我认为你的混淆实际上是关于变量而不是方法。以这个例子为例,没有静态变量作为一个简单的例子。对于“myName”类的所有实例,“name”是相同的(抱歉,因为它是类名,所以应该把它变成大写。)
public class myName {
public static String name;
public void setName(String newName) {
name = newName;
}
public String getName() {
return name;
}
public static void main(Strings args[]) {
myName first = new myName();
myName second = new myName();
first.setName("hello");
System.out.println(second.getName()); //prints hello
}
}
答案 1 :(得分:1)
静态变量只为该StaticClass的所有对象创建一个,因此您将从新创建的对象返回相同的静态变量。
答案 2 :(得分:0)
首先,您可以致电
NonStaticCalling.getString2()
但不是
NonStaticCalling.getString()
可以在不实例化类的情况下调用静态方法。
答案 3 :(得分:0)
SomeName.setString("hey there");
System.out.println(SomeName.getString2());
//expecting to be blank
SomeName object = new SomeName();
object.setString2("hey there");
System.out.println(object.getString());
public class SomeName
{
static String aw = "";
String aw2 = "";
public SomeName()
{
}
public static void setString(String a){
aw =a;
}
public void setString2(String a){
aw2 =a;
}
public String getString(){
return aw;
}
public static String getString2(){
return aw;
}
}
这将打印你得到的东西!所以不同的是,在一个你使用类的静态属性,这意味着如果你改变它,它将来会改变使用它的每个其他对象!
在第二个中,您正在使用“对象”或类的实例,这意味着所有变量仅在该对象生存时才设置!如果你创建一个新的,你将不得不为它再次设置aw2!