递增和递减静态变量不显示更新值
Increment and decrements static variable not showing updated value
我正在研究 static 关键字的使用,发现如果一个变量被创建为静态的,那么它的一个副本就会被创建并在 class 的所有对象之间共享。
但是下面代码的输出让我很困惑,为什么它没有显示增量值。
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--);
}
}
我期望输出是:
10
11
12
12
但实际输出是:
10
11
11
11
请帮助我理解输出。
让我们检查一下打印语句,看看会发生什么:
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
问题与静态变量关系不大。
y
可以是局部变量,
行为将完全相同。
要理解第 3 和第 4 个陈述,
阅读前缀运算符和后缀运算符。
实际输出正确
Y+1 不会改变变量 y 的值。
所以 y 只会是 10。当您执行 ++y 时,它会将值更改为 11.
我正在研究 static 关键字的使用,发现如果一个变量被创建为静态的,那么它的一个副本就会被创建并在 class 的所有对象之间共享。
但是下面代码的输出让我很困惑,为什么它没有显示增量值。
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--);
}
}
我期望输出是:
10
11
12
12
但实际输出是:
10
11
11
11
请帮助我理解输出。
让我们检查一下打印语句,看看会发生什么:
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
问题与静态变量关系不大。
y
可以是局部变量,
行为将完全相同。
要理解第 3 和第 4 个陈述, 阅读前缀运算符和后缀运算符。
实际输出正确
Y+1 不会改变变量 y 的值。 所以 y 只会是 10。当您执行 ++y 时,它会将值更改为 11.