我正在尝试在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
的局部变量的方法中不可见(将使用它)。
这称为“阴影”。以“最近”变量定义为准。
使用更好的变量名可以避免这种情况。