Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
整理出我对Java不确定的几个问题_Java - Fatal编程技术网

整理出我对Java不确定的几个问题

整理出我对Java不确定的几个问题,java,Java,上述代码的输出为: 打印20打印809010090100 有人能帮我理解为什么我会得到: 9010090 一百 静态变量可以通过多种方式访问 静态变量可以通过静态/非静态方法直接访问。 此外,还可以从对象访问静态变量 package Day4; public class clasAndobjDemo { static int a = 90; //Data memeber ,Properties static int b = 100; // Data Memeber Poper

上述代码的输出为:

打印20
打印80
90
100
90
100

有人能帮我理解为什么我会得到:

90
100
90
一百


静态变量可以通过多种方式访问

静态变量可以通过静态/非静态方法直接访问。 此外,还可以从对象访问静态变量

package Day4;

public class clasAndobjDemo {

    static int a = 90; //Data memeber ,Properties
    static int b = 100; // Data Memeber Poperties

    public static void main(String[] args) {
        clasAndobjDemo obj1 = new clasAndobjDemo();
        obj1.sub();
        obj1.sum();
        System.out.println(obj1.a);
        System.out.println(obj1.b);
        System.out.println(a);
        System.out.println(b);
    }

    public void sub() {
        int x = 80, y = 100, z = x - y;
        System.out.println("Print" + z);
    }

    public void sum() {
        int x = 80, y = 100, z = x + y;
        System.out.println("Print" + z);
    }
}
但是,不鼓励采用上述方法

由于静态变量归类所有(所有对象只有一个副本),因此无需使用实例引用即可访问它们

i、 e。 直接(在类本身内)

或者使用类名

System.out.println(a);

引用:

因为您先打印
a
,然后打印
b
(作为对象的变量),然后再打印
a
,然后再打印
b
(这一次作为静态变量从静态方法调用类)。您的
sub
sum
方法不会更改对象中的数据字段
a
b
。因此,
obj1.a
obj2.a
a
b
是相同的。你的问题是什么?它是否像“为什么可以通过对象访问静态成员”?如果是这样,答案是这样的
System.out.println(a);
clasAndobjDemo.a