В следующем примере определены 2 статические переменные.Переменная 1 (myBoolean1) определена над переменной MySingletonExample (instance).
Переменная 2 (myBoolean2) определяется ниже переменной MySingletonExample (instance).
Обе переменные установлены на true , но только 1 переменная (myBoolean1) показывает правильное значение при отображении.
public class MySingletonExample
{
//static volatile boolean myBoolean1 = false;
static boolean myBoolean1 = false;
private static volatile MySingletonExample instance = new MySingletonExample();
//static volatile boolean myBoolean2 = false;
static boolean myBoolean2 = false;
private MySingletonExample()
{
myBoolean1 = true;
myBoolean2 = true;
}
protected static MySingletonExample getInstance()
{
System.out.println("myBoolean1 = " + myBoolean1);
System.out.println("myBoolean2 = " + myBoolean2);
return instance;
}
public static void main(String[] args)
{
MySingletonExample.getInstance();
System.out.println("---------------------------");
MySingletonExample.getInstance();
}
}
При выполнении это вывод.
myBoolean1 = true
myBoolean2 = false
myBoolean1 = true
myBoolean2 = false
Почему myBoolean2 не возвращает вместо этого truefalse как myBoolean1?
Разница только в размещении.Есть ли «правило» при работе со статическими переменными?