Оператор Java DOT, что он на самом деле делает

Может кто-нибудь сказать мне, что на самом деле делает оператор Java DOT?

Например,

class Person{

int value;
public void great(){...};
... 
}

Person p = new Person();

Person.great();  <--- here

Person.value;   <--- here

Я хочу знать, что такое "." оператор делает так, чтобы он мог получить меня great () или значение.

Спасибо

Ответы на вопрос(2)

также известный как разделитель или точка, используется для отделения переменной или метода от ссылочной переменной.

Только статические переменные или методы могут быть доступны с использованием имени класса.

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

objectReference.fieldName

Мы используем ссылку на объект для вызова метода объекта. Добавьте простое имя метода к ссылке на объект с помощью промежуточного точечного оператора (.), Как в

objectReference.methodName(argumentList);

В приведенном выше коде,p.great () может быть использован для вызова методаотличный() на объектеp а такжеp.value используется для доступа к переменной экземпляразначение.

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

Полный справочник, книга Герберта Шильдта

. не оператор. Поэтому он ничего не делает.

Это просто синтаксический элемент, который обозначает разделение, в данном случае, имени переменной, содержащей объект и свойство объекта. Один и тот же символ используется для разделения имен пакетов и классов.

 user244394305 июн. 2016 г., 22:51
Я вспомнил. Спасибо!
 Johannes H.05 июн. 2016 г., 22:36
Если вы действительно хотите знать, как работает компилятор, или как объект хранится в памяти, чтобы свойства можно было извлечь, или какие инструкции окажутся в скомпилированном байт-коде - это совсем другая история, совершенно другой вопрос, и СЛИШКОМ слишком сложный, чтобы на него легко было ответить. Я рекомендую читать книги на Java-движке в этом случае.
 John04 сент. 2018 г., 20:32
, это конечно оператор. Это бинарный оператор. Левый операнд преобразуется в некоторый модуль в программе, а правая рука преобразуется в подмодуль левой руки. Он имеет ассоциативность слева направо, поэтому System.out.println равен (System.out) .println, а не System. (Out.println), и имеет наивысший приоритет операторов, так что obj1.prop1 + obj2.prop2 is (obj1.prop1) + (obj2.prop2) в противоположность obj1. (prop1 + obj2) .prop2. Он указан в документации Java как оператор, он указан на диаграммах прецедентов операторов как оператор и встроен в грамматику как оператор.
 Johannes H.05 июн. 2016 г., 23:12
Анонимный пользователь, можете прокомментировать и / или предложить улучшения, пожалуйста?
 user244394305 июн. 2016 г., 22:30
Это не тот ответ, который я ищу. Можете ли вы уточнить ваш второй абзац? Благодарю.
 Johannes H.05 июн. 2016 г., 22:33
Хотя это правильный ответ - если вы не искали этого, возможно, перефразируйте ваш вопрос. На самом деле об этом не скажешь. - он имеет не намного больше функциональности, чем. на английском есть. По-английски,. отделяет два предложения. В Java он разделяет имя переменной и имя свойства. Он сообщает токенизатору (часть компилятора), что имена переменных на этом заканчиваются, а следующий символ - начало имени свойства. Вот и все.

Ваш ответ на вопрос