Как в Java имя может стать членом первичного выражения? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как в Java имя может стать членом первичного выражения? [закрыто]

Сообщение Anonymous »

Давайте сначала взглянем на очень простой фрагмент кода.

Код: Выделить всё

class S { int x = 0; }
class Test1 {
public static void main(String[] args) {
S s = new S();
System.out.println("s.x=" + s.x);
}
}
 — это выражение доступа к полю.
Ниже приведен соответствующий синтаксис, взятый мной из Спецификации языка Java:
15.11:

FieldAccess:
Основной . Идентификатор
супер . Идентификатор
TypeName . супер. Идентификатор


15.8: Первичный:
PrimaryNoNewArray
ArrayCreationExpression


PrimaryNoNewArray:
ЛитералClassLiteral
это имя типа. это
( Выражение )
ClassInstanceCreationExpression
FieldAccess
ArrayAccess
MethodInvoke
MethodReference

Если смотреть только на синтаксис из приведенного выше фрагмента, то s.x, по-видимому, не соответствует синтаксису. Причина в том, что s, по-видимому, не принадлежит ни одному из членов первичных выражений.
К счастью , спецификация дает объяснение позже, и именно в этом заключаются мои сомнения:

Эта часть грамматики Java язык программирования необычен
в двух отношениях. Во-первых, можно было бы ожидать, что простые имена, такие как имена
локальных переменных и параметров метода, будут первичными выражениями. По
техническим причинам имена группируются вместе с первичными выражениями
чуть позже, когда будут введены постфиксные выражения (§15.14).

"имена группируются вместе с основными выражениями чуть позже, когда вводятся постфиксные выражения", Насколько я понимаю это предложение, имя будет стать членом основных выражений при определенных обстоятельствах.
15.14:

Постфиксные выражения включают использование постфикса + Операторы + и --.
Имена не считаются основными выражениями (§15.8), но
обрабатываются в грамматике отдельно, чтобы избежать определенной двусмысленности. Они
становятся взаимозаменяемыми только здесь, на уровне приоритета
постфиксных выражений.

Мой вопрос:
1.Правильно ли мое понимание выше?
2.»Они становятся взаимозаменяемыми только здесь, на уровне приоритета
постфиксных выражений
",
(1).Что означает это предложение?
(2).Можете ли вы объяснить на моем примере, почему s в s.x становится является членом основных выражений здесь? (При условии, что я правильно понимаю.)
(3). Какова связь между этим и уровнем приоритета постфиксных выражений?(4). Что означает «взаимозаменяемость»?
Спасибо, что читаете.

Подробнее здесь: https://stackoverflow.com/questions/789 ... expression
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»