执行以下代码时
class Foo {
static int size = 7;
static void changeIt(int size) {
size = size + 200;
System.out.println("size in changeIt is " + size);
}
public static void main(String[] args) {
System.out.println("size = " + size);
changeIt(size);
System.out.println("size after changeIt is " + size);
}
}
Run Code Online (Sandbox Code Playgroud)
答案是
size = 7
size in changeIt is 207
size after changeIt is 7
Run Code Online (Sandbox Code Playgroud)
我期待的答案是
size after changeIt is 207
Run Code Online (Sandbox Code Playgroud)
为什么静态变量的值在changeIt方法和main方法上有所不同?
为什么staticIt方法和main方法中静态变量的值不同?
值不同,因为您没有更改static变量size,您更改了局部变量size.将代码更改为:
static void changeIt() {
size = size + 200;
System.out.println("size in changeIt is " + size);
}
Run Code Online (Sandbox Code Playgroud)
或者,如果要使用具有相同名称的参数,则可以通过使用static类名对其进行限定来指定使用类变量:
static void changeIt(int size) {
Foo.size = size;
System.out.println("size in changeIt is " + Foo.size);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |