gpt4 book ai didi

java - 为什么打印 int 静态值会给出对象符号值,而不是实际值

转载 作者:行者123 更新时间:2023-12-01 19:35:09 27 4
gpt4 key购买 nike

我试图在java的主方法中打印静态int值,当我打印时,它给我的值是[Ljava.lang.String;@7852e922作为对象表示法而不是实际值。您能否解释一下内部发生的情况。

另外,当我尝试使用 ClassName.varibaleName 时,它​​的工作和打印正确的值。另外,当我使用 object 打印时。它显示了正确的结果。

仅当我直接访问 main 方法中静态变量的值时,我才会看到此问题。

我也尝试创建其他方法,它给出了结果。

class Demo1 {

static int a;

public static void main(String a[]) {
Demo1 demo1 = new Demo1();
demo1.inc();
Demo1 demo2 = new Demo1();
demo2.inc();
Demo1 demo3 = new Demo1();
demo3.inc();
System.out.print("Count value is=" + a);
System.out.print(a);
System.out.print("\n" + demo1.a);
System.out.print(demo2.a);
System.out.print(demo3.a);
}

public static void inc() {
a = a + 1;
System.out.println("Value a" + a);
}

}

我得到以下结果:

Value a1
Value a2
Value a3
Count value is=[Ljava.lang.String;@7852e922[Ljava.lang.String;@7852e922
333

但期望计数值= 3 而不是 [Ljava.lang.String;@7852e922

最佳答案

您的 int a 在也有一个名为 String[] a 的局部变量(将被使用)的方法中不可见。

这称为“阴影”。 “最接近”的变量定义获胜。

使用更好的变量名称来避免这种情况。

关于java - 为什么打印 int 静态值会给出对象符号值,而不是实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58057271/

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