Существует инструмент javap, dissasembler, который покажет вам байт-код, и оттуда вы можете заключить, что такое порядок исполнения.Он выведет комментарии.
$ /usr/lib/jvm/java-7-oracle/bin/javap -c Precedence.class
Compiled from "Precedence.java"
public class Precedence {
public java.lang.String s;
public Precedence();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String...);
Code:
0: new #2 // class Precedence
3: dup
4: invokespecial #3 // Method "<init>":()V
7: ldc #4 // String My String
9: dup_x1
10: putfield #5 // Field s:Ljava/lang/String;
13: astore_1
14: getstatic #6 // Field java/lang/System.out:Ljava/io/PrintStream;
17: aload_1
18: invokevirtual #7 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
21: return
}
javap является частью JDK, путь находится на Linux, switch -c - дизассемблировать код. Вот определение инструкции ldc, не очевидно, что он делает
push a constant #index from a constant pool (String, int or float) onto the stack
Обратите внимание, что приоритет оператора отличается от порядка выполнения. –
Как я могу узнать, что это случай исполнения? –
@ThurfirHawat Я не знаю, как «как я могу узнать, что это случай исполнения» означает, но единственная проблема с приоритетом оператора здесь находится между '=' и '.'. Здесь есть несколько * других * проблем, а именно ассоциативность оператора '=' и тот факт, что 'String' value' 'My String '' создается компилятором и загрузчиком классов, а не этим кодом. – EJP