[問題] 建構子與static 變數
不好意思,想問個比較基礎的問題,我知道題意是要考static與 non-static,但我看了
很久都想不通,如下:
class Ans{
int ns;
static int s;
Ans(int ns){
if(s<ns){
s=ns;
this.ns=ns;
}
}
void print( ){
system.out.println(“ns= ”+ns+“ s= ”+s);
}
}
public class Test{
public static void main(String[ ] args){
Ans a = new Ans(50);
Ans b = new Ans(125);
Ans c = new Ans(100);
a.print( );
b.print( );
c.print( );
}
}
我以為結果會是 ns=50 s=50
ns=125 s=125
ns=100 s=100
但結果是 ns=50 s=125
ns=125 s=125
ns=0 s=125
我知道全域變數int在沒有設定的情況下,系統會預設為0
所以在new Ans(50);時,經過if判斷式,會被兩個變數設為50
所以我以為答案是我想的那樣,
但從正確答案看來,static int s;會留著之前的50,而int ns;卻會重新歸0
想請問這是為什麼呢?我以為重新new過以後,指派給新的物件,應該會是不相關的兩個
物件?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.80.31.111
※ 文章網址: https://www.ptt.cc/bbs/java/M.1468379069.A.DD3.html
推
07/13 11:27, , 1F
07/13 11:27, 1F
→
07/13 11:27, , 2F
07/13 11:27, 2F
→
07/13 11:28, , 3F
07/13 11:28, 3F
→
07/13 11:28, , 4F
07/13 11:28, 4F
→
07/13 11:28, , 5F
07/13 11:28, 5F
這是我用手機打的,有的符號跟字母按錯,更正了
→
07/13 11:32, , 6F
07/13 11:32, 6F
→
07/13 11:34, , 7F
07/13 11:34, 7F
→
07/13 11:37, , 8F
07/13 11:37, 8F
→
07/13 11:39, , 9F
07/13 11:39, 9F
→
07/13 11:42, , 10F
07/13 11:42, 10F
→
07/13 11:43, , 11F
07/13 11:43, 11F
你說的我都懂啊,我想問的是,在第一次new了a帶入50後,接著再new b 為什麼還要跟50
比,如果new幾個instance都跟static欄位沒有關係,那為什麼之後new的變數還要受到影
響?
→
07/13 20:47, , 12F
07/13 20:47, 12F
→
07/13 20:48, , 13F
07/13 20:48, 13F
→
07/13 20:48, , 14F
07/13 20:48, 14F
這些流程我知道,我想問的是上面打的那樣
※ 編輯: birdy1147 (111.80.31.111), 07/13/2016 21:45:06
→
07/13 23:05, , 15F
07/13 23:05, 15F
→
07/13 23:05, , 16F
07/13 23:05, 16F
→
07/13 23:05, , 17F
07/13 23:05, 17F
可能我表達的方式不夠好,上面回答的沒有不對,但沒有釐清到我不懂的地方,而不是什
麼我閉上眼睛說那是假的....
→
07/14 00:25, , 18F
07/14 00:25, 18F
→
07/14 00:27, , 19F
07/14 00:27, 19F
→
07/14 00:28, , 20F
07/14 00:28, 20F
→
07/14 00:30, , 21F
07/14 00:30, 21F
→
07/14 00:31, , 22F
07/14 00:31, 22F
→
07/14 00:32, , 23F
07/14 00:32, 23F
→
07/14 00:34, , 24F
07/14 00:34, 24F
→
07/14 00:34, , 25F
07/14 00:34, 25F
→
07/14 00:35, , 26F
07/14 00:35, 26F
→
07/14 00:39, , 27F
07/14 00:39, 27F
→
07/14 00:39, , 28F
07/14 00:39, 28F
→
07/14 00:40, , 29F
07/14 00:40, 29F
是我沒有表達清楚我的問題,謝謝你耐心的回應,有比較釐清我不了解的地方了,那如果
換了一個class呼叫Ans,才是等於從新載入嗎?
→
07/15 16:24, , 30F
07/15 16:24, 30F
→
07/15 16:24, , 31F
07/15 16:24, 31F
→
07/15 16:24, , 32F
07/15 16:24, 32F
少拍馬屁,你才是搞清楚好嗎?我並沒有說別人解釋得不清楚
※ 編輯: birdy1147 (111.80.12.91), 07/15/2016 18:23:21
→
07/15 18:34, , 33F
07/15 18:34, 33F
→
07/15 18:43, , 34F
07/15 18:43, 34F
→
07/15 18:44, , 35F
07/15 18:44, 35F
推
07/18 11:10, , 36F
07/18 11:10, 36F
→
07/18 11:12, , 37F
07/18 11:12, 37F
→
07/18 11:12, , 38F
07/18 11:12, 38F
→
07/18 11:12, , 39F
07/18 11:12, 39F
→
07/25 00:48, , 40F
07/25 00:48, 40F
→
07/25 00:48, , 41F
07/25 00:48, 41F
→
07/25 00:48, , 42F
07/25 00:48, 42F
→
07/25 00:51, , 43F
07/25 00:51, 43F
→
07/25 00:55, , 44F
07/25 00:55, 44F
→
07/25 00:55, , 45F
07/25 00:55, 45F
→
07/25 00:57, , 46F
07/25 00:57, 46F
→
07/25 00:57, , 47F
07/25 00:57, 47F
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章