Java 类变量
这可能是一个愚蠢的问题,但我一直在想这个问题。java中的类变量和成员变量之间有什么区别吗?或者它们都是同一个变量Java 类变量,java,Java,这可能是一个愚蠢的问题,但我一直在想这个问题。java中的类变量和成员变量之间有什么区别吗?或者它们都是同一个变量 class Example { protected String str; public static String str1 = "xyz"; } 我知道str1是一个类变量,str也是一个类变量吗?它们不一样,str不是一个类变量,“static”表示一个类变量 基本区别在于,类(静态)变量可以被认为是在类的所有实例之间共享的,而类的每个实例都有一个独立的成员(实例)
class Example {
protected String str;
public static String str1 = "xyz";
}
我知道str1是一个类变量,str也是一个类变量吗?它们不一样,str不是一个类变量,“static”表示一个类变量
基本区别在于,类(静态)变量可以被认为是在类的所有实例之间共享的,而类的每个实例都有一个独立的成员(实例)变量副本。它们不一样,str不是类变量,“static”表示类变量
基本区别在于,类(静态)变量可以被认为是在类的所有实例之间共享的,而类的每个实例都有一个独立的成员(实例)变量副本。是的,区别在于,当我们谈论类属性时,每个类只有一个,当我们谈论实例属性时,每个对象只有一个
在您的代码中,受保护字符串str声明实例属性(或您称之为成员变量)和公共静态字符串str1=“xyz”声明类属性。是,区别是,当我们谈论类属性时,每个类只有一个,当我们谈论实例属性时,每个对象只有一个
在您的代码中,受保护字符串str声明实例属性(或您称之为成员变量)和公共静态字符串str1=“xyz”声明类属性。有很大区别 成员变量绑定到类的实例对象。因此,对于不同的实例对象,变量的值可能不同 静态变量是整个类的一个变量-您不需要实例化一个对象来访问它
class A {
public int memberVar;
public static int staticVar;
}
void Test() {
A obj = new A();
int var = obj.memberVar;
//var = A.memberVar -- wrong!
//vs
var = A.staticVar;
}
这有很大的区别 成员变量绑定到类的实例对象。因此,对于不同的实例对象,变量的值可能不同 静态变量是整个类的一个变量-您不需要实例化一个对象来访问它
class A {
public int memberVar;
public static int staticVar;
}
void Test() {
A obj = new A();
int var = obj.memberVar;
//var = A.memberVar -- wrong!
//vs
var = A.staticVar;
}
str
不是类变量str
是实例变量。str
不是类变量str
是一个实例变量。
类变量是定义的变量
在
不管哪一个副本存在
这个类有多少个实例
存在
类中定义的变量(即
成员变量),每个
类的对象具有单独的
抄袭
根据这些定义,str1
是一个类变量,str
不是。
类变量是定义的变量
在
不管哪一个副本存在
这个类有多少个实例
存在
类中定义的变量(即
成员变量),每个
类的对象具有单独的
抄袭
根据这些定义,
str1
是一个类变量,str
不是。有区别。str1是一个类变量,该类的所有实例都有一个值。str变量是一个实例变量,Example的每个实例(aka,new Example())都可以有不同的str值,但Example的所有实例都将共享相同的str1值。存在差异。str1是一个类变量,该类的所有实例都有一个值。str变量是一个实例变量,Example的每个实例(aka,new Example())都可以有不同的str值,但Example的所有实例都将共享相同的str1值。如果您试图在类中实现一个计数器来计算创建了多少个实例,您将立即看到为什么类变量可以做这项工作,而实例变量不能
public class MyClass {
private static int count;
public MyClass() {
count++;
...
}
public static int getCount() {
return count;
}
...
}
您可以调用
MyClass.getCount()代码>甚至在创建单个MyClass实例之前。如果您尝试在类中实现一个计数器来计算已创建的实例数,您将立即看到为什么类变量可以完成此工作,而实例变量不能
public class MyClass {
private static int count;
public MyClass() {
count++;
...
}
public static int getCount() {
return count;
}
...
}
您可以调用MyClass.getCount()代码>甚至在创建单个MyClass实例之前。str1是一个类变量,因为static是它的修饰符。静态意味着变量属于类而不是实例。
str变量没有使其成为成员或实例变量的静态修饰符。
类的每个实例都有自己的成员变量副本,str1是类变量,因为static是它的修饰符。静态意味着变量属于类而不是实例。
str变量没有使其成为成员或实例变量的静态修饰符。
类的每个实例都有自己的成员变量副本