pra*_*sad 1 java variables static instance-variables
我有这样的场景
public class Test{
static int a;
int b;
public static void main(String[] args){
Test t1 = new Test();
Test t2 = new Test();
}
}
Run Code Online (Sandbox Code Playgroud)
对象t1和对象t2中的变量是什么?
根据我的理解,因为变量a是静态变量,所以它将在对象1和对象2中.
而b将两者的对象被创建单独的副本.
但是,当我为变量b ie(int b=1)赋值并将其称为System.out.println(t1.b),System.out.println(t2.b)
我没有得到错误,而是从两个对象获得1作为输出.
这是为什么?
根据我的理解,因为变量a是静态变量,所以它将在对象1和对象2中.
不,它不是任何一个对象.存在时根本不参考任何特定实例.虽然Java 允许您"通过"引用它,例如,int x = t1.a;您不应该这样做.您应该通过类名称(test.a在您的情况下 - 尽管您也应该开始遵循Java命名约定)来引用它,以明确它是静态的.
并且将为两个对象创建单独的副本.
是.
但是当我为变量b ie(
int b=1)分配一个值并将其称为likeSystem.out.println(t1.b), System.out.println(t2.b)而不是获取错误时,我从两个对象获得1作为输出.
那是因为你基本上给它一个初始值来为每个新对象分配.那是完全合理的.还有两个独立变量:
t1.b = 2;
t2.b = 3;
System.out.println(t1.b); // Prints 2
System.out.println(t2.b); // Prints 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |