Einer meiner Freunde fragte mich, was zuerst statische Variable oder statischen Block lädt.Welches wird zuerst statische Variable oder statischer Block geladen?
Meine Antwort zeigt auf statische Variable.
So gab er mir zwei Gleichungen und die zwischen ihnen
erste Gleichung
public class Some {
public static void main(String args[])
{
System.out.println(Some.x);
}
static {
System.out.println(Some.x);
}
static int x=90;
}
O/P zu unterscheiden: 0 90
zweite Gleichung
public class Some {
public static void main(String args[])
{
System.out.println(Some.x);
}
static int x=90;
static {
System.out.println(Some.x);
}
}
O/P: 90 90
Ich habe versucht, den Byte-Code zu dekompilieren und fand, dass es für die obige Gleichung gleich ist. Bitte helfen Sie mir, zwischen ihnen zu unterscheiden. Ich bin verwirrt, wenn die statische Variable initialisiert wird.
Statisches Zeug wird sequentiell in der Reihenfolge ausgeführt, in der es in der Klasse definiert ist. –
Sind Sie sicher, dass der Byte-Code identisch ist? Ich hätte erwartet, dass die Erklärungen in einer anderen Reihenfolge erscheinen, und wie @Sudhanshu darauf hinweist, ist die Reihenfolge der Erklärungen wichtig. –
@ PatriciaShanahan ya für beide die Gleichung Byte-Code ist gleich. – Hablu