我正在尝试在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的局部变量的方法中不可见(将使用它)。

这称为“阴影”。以“最近”变量定义为准。

使用更好的变量名可以避免这种情况。

10-06 16:09