作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么数据字段值会改变?我正在阅读的文字没有清楚地解释这一点。本章主要讨论数据字段封装,以及您所做的可能影响代码和此类事情的小事情。
public class Questions {
private static int j = 0;
private static int i = 0;
public static void main(String[] args) {
int i = 2;
int k = 3;
{
j = 3;
System.out.println("j is " + j);
}
k = i + j;
System.out.println("k is " + k);
System.out.println("j is " + j);
}
}
/* output is:
j is 3
k is 5
j is 3
*/
//but if you do this one thing:
public class Questions {
private static int j = 0;
private static int i = 0;
public static void main(String[] args) {
int i = 2;
int k = 3;
{
int j = 3;
System.out.println("j is " + j);
}
k = i + j;
System.out.println("k is " + k);
System.out.println("j is " + j);
}
/* the output is:
j is 3
k is 2
j is 0
*/
欢迎任何意见!
最佳答案
在第一个代码中:
{
j = 3;
System.out.println("j is " + j);
}
您只需将新值分配给在 main 外部声明的 static
字段即可。即使在本地阻止之后,更改也将持续存在。
但是在第二个代码中:
{
int j = 3;
System.out.println("j is " + j);
}
您正在声明一个新的 block 范围局部变量,它隐藏该 block 中的static
字段。在此 block 中对 j
所做的任何更改都是在 block 作用域变量中完成的,而不是在静态字段中完成的。它超出了该 block 之外的范围。而在 block 外使用的变量j
只不过是static
字段,它与 block 内声明的j
没有任何关系.
关于Java数据字段封装newby问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17643903/
我是一名优秀的程序员,十分优秀!