gpt4 book ai didi

Java数据字段封装newby问题

转载 作者:行者123 更新时间:2023-11-30 04:18:51 24 4
gpt4 key购买 nike

为什么数据字段值会改变?我正在阅读的文字没有清楚地解释这一点。本章主要讨论数据字段封装,以及您所做的可能影响代码和此类事情的小事情。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com