Jog*_*mar 3 java static keyword
我正在研究static关键字的使用,并发现如果一个变量被创建为static,那么它的一个副本就会被创建并在该类的所有对象之间共享.
但下面代码的输出让我感到困惑,为什么它没有显示递增的值.
public class Test {
static int y = 10;
public static void main(String[] args) {
System.out.println(y);
System.out.println(y+1);
System.out.println(++y);
System.out.println(y--);
}
}
Run Code Online (Sandbox Code Playgroud)
我期待输出为:
10
11
12
12
Run Code Online (Sandbox Code Playgroud)
但实际输出是:
10
11
11
11
Run Code Online (Sandbox Code Playgroud)
请帮我理解输出.
让我们回顾一下打印语句,看看会发生什么:
System.out.println(y); // value of y is 10 -> print 10
System.out.println(y+1); // value of y is still 10, but we print 10 + 1 -> print 11
System.out.println(++y); // value of y becomes 11 before we print -> print 11
System.out.println(y--); // value of y becomes 10 after we print -> print 11
Run Code Online (Sandbox Code Playgroud)
这个问题与静态变量几乎没有关系.
y可能是一个局部变量,行为将是完全相同的.
要理解第3和第4个语句,请阅读前缀运算符和后缀运算符.
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |