package com.imooc;
public class Test{
public static void main(String[] args) {
T t1 = new T();
T t2 = new T();
System.out.println("t1's i ="+t1.i+"\tt1's j="+t2.j);
System.out.println("t2's i ="+t2.i+"\tt2.s j="+t2.j);
}
}
class T{
static int i = 0;
int j = 0;
T(){
i++;
j = 1;
}
}
輸出結果是這個:為什麼啊?
t1's i =2 t1's j=1
t2's i =2 t2.s j=1
一個變量如果被static 修飾,那麼在伴隨著類的實例化將在內存中,開辟一個空間用來專門存儲該變量。
特點是 被static修飾的成員變量和成員方法獨立於該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。
問題中i變量被static修飾當你new t1 的時候 i變成1 new t2時用的是同一個i 所以i在內存中變成2