1樓:
class testperson
public static void main(string args)
}參考一下
2樓:紫風影殺
3行建構函式外面的age是類的成員變數,6行建構函式內的按格式建構函式的變數,是一個局域變數,8行輸出的是6行的那個age;9行輸出的是類的成員變數age,而類的成員變數age沒有賦初值,預設初值為0;
3樓:匿名使用者
第一個age 是呼叫的區域性變數 第2個和最後一個實際上都是呼叫的全域性變數 預設值為0.當然 this.age最好不要這樣用 this 一般代表當前
4樓:任好慕
第一個0是this.age值,建議再主機看一下this的用法,此處使用的this,是調的構造方法之上的那個變數;
第二 0是pl.age值 , pl是例項,pl.age調的是類裡的變數age,不是構造方法裡的age.
5樓:李巖
建構函式 中
println(age) 輸出的是上邊定義的 int age=10;(這個只是個區域性變數)
println(this.age) 輸出的是testperson中的age屬性的值,預設是0
main函式中的
println(p1.age)輸出的也是p1物件中的age屬性的值,因為你沒有對其進行賦值,所以還是0
如果你想在建構函式中對age進行初始化的話就要寫 this.age=10;
6樓:
類變數和區域性變數你沒有分清楚
7樓:
給你解釋一下後面2個0。 第一個0是system.out.
println(this.age); 這句輸出的。this這個關鍵字呼叫的就是類的成員變數, 也就是你**裡面第三行的age 到於第6行的age你可以理解成建構函式的區域性變數,在建構函式裡面輸出age那就是它本身的age所以是10, 第九行輸出的this.
age就是第三行的age.因為你沒賦值所以預設為0,然後 第二個0就是你第15行執行類的物件調本類的成員變數,也是調的第三行的age,因為沒賦值,所以就也是0
其實建構函式的初始化有兩種就以你這個為例
第一種public class testperson}第二種
public class testpersonpublic static void main(string args)}
8樓:同碧曼
構造器裡的int age=10寫成age=10
9樓:隔壁老王
不要誤導別人可以嗎,樓下的才是正解,你的成員變數和區域性變數都沒搞清楚,還有你把this.age和age的區別搞懂了再來回答可好?
10樓:24k君臨
這樣才是在建構函式裡初始化成員變數的做法
建構函式是用來初始化所定義的物件,如果類中沒有定義任何建構函式,則該類的對
不對,c 裡不寫類的建構函式時,編譯器會為類建立一個預設的建構函式,雖然這個函式什麼都不做,但是類的物件還是會在此時初始化,不過,物件成員的值是隨機的,比如,指標型成員變數可能為null,也有可能不為null。 no如果使用者不提供建構函式,那麼編譯器就會自動合成一個預設建構函式 除非自定義一個私有...
c語言memset初始化結構體問題
1.memset函式的原型void memset void s,char ch,size t n 函式的第一個形式引數是指標型別,所以實參因為一個地址,即 a注意 a與a是不同的.a是結構體變數名,而 a是變數a的地址.2.另外memset 是一個庫函式函式,需要加標頭檔案 include 3.正如...
c語言問題 未初始化int變數的初值
c語言問題未初始化int變數的初值是設定錯誤造成的,解決方法為 1 首先我們開啟我們的編譯器,在main函式中寫。2 然後我們宣告定義變數的型別,比如int 整形 double 雙精度 float 浮點型 char 字元型 已 int整形為例。3 之後要有個空格。4 接下來寫我們的變數名,注意區分大...