Не рабочий код, но я хотел спросить, почему инициализация через имя класса имеет более высокий приоритет, чем объекты? - PullRequest
0 голосов
/ 14 сентября 2018
//given a static variable

static int i;

//assume it is a part of class Student 
//Lets make two objects

Student s1=new Student();

Student s2=new Student();

//Here's The main deal

s1.i=20;

s2.i=22;

Student.i=27;

//The final output if you print i is 27.

System.out.println(s1.i); //27

System.out.println(s2.i);  //27

System.out.println(Student.i);  //27



//Why so?

1 Ответ

0 голосов
/ 14 сентября 2018

Поля, для которых в объявлении указан модификатор static, называются статическими полями или переменными класса.Они связаны с классом, а не с каким-либо объектом.

Вот концепция вокруг него

https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

В вашем случае i - этостатическая переменная, и она связана с классом, а не объектом.

Таким образом, буквально существует только одна переменная i для всех объектов.Вот почему вы видите, что одно и то же значение печатается для всех ваших операторов печати (с последним обновленным значением).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...