为什么打印 int 静态值会给出对象表示法值,而不是实际值

  • 本文关键字:表示 对象 打印 int 静态 java
  • 更新时间 :
  • 英文 :


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

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

只有当我直接访问 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的局部变量(将改为使用(的方法中不可见。

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

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

最新更新