Re: 為什麼?!
※ 引述《vrgigi.bbs@bbs.mgt.ncu.edu.tw (夏傑)》之銘言:
: 標 題: Re: 為什麼?!
: 發信站: 中央資管龍貓資訊天地 (Thu Feb 8 16:12:20 2007)
: 轉信站: ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.mgt.ncu!bbs
:
: ==> H45.bbs@ptt.cc (!H45) 提到:
: : ※ 引述《vrgigi.bbs@bbs.mgt.ncu.edu.tw (夏傑)》之銘言:
: : : public class Test{
: : : public static void main(String args[]){
: : : Aa obj=new Aa(5);
: : : System.out.println("Aa= "+obj.i);
: : : }
: : : }
: : : class Aa{
: : : int i=10;
: : : public Aa(int i){
: : : i=i;
: : ^^^^
: : this.i = i;
: 為什麼就不能i=i呢?
: 不是已經把原本的i=10改成i=5 了?
:
你可以測試一些小東西來瞭解一下
第一款:
public class Test
{
public static void main(String args[])
{
Aa obj=new Aa(5);
System.out.println("Aa= "+obj.i);
}
}
class Aa
{
int i=10;
public Aa(int i)
{
System.out.println(i);
}
}
結果1:
5
Aa= 10
==================================
第二款:
public class Test
{
public static void main(String args[])
{
Aa obj=new Aa(5);
System.out.println("Aa= "+obj.i);
}
}
class Aa
{
int i=10;
public Aa(int i)
{
i=3;
System.out.println(i);
}
}
結果2:
3
Aa= 10
====================================
第三款:
public class Test
{
public static void main(String args[])
{
Aa obj=new Aa(5);
System.out.println("Aa= "+obj.i);
}
}
class Aa
{
int i=10;
public Aa(int i)
{
this.i=i;
System.out.println(i);
}
}
結果3:
5
Aa= 5
==============================
抱歉po了很長
以上三種發現差別了麼?
java會依區域塊來分別變數值
所以依你的寫法,Aa內的 int i=10 才會認定成是object.i
而你的參數int i,並沒有以 this.i = i 來指定為同一參數,所以java個別看待
你的想法是以i = i來指定,但是此行的意思只是 i = i = 5 這樣的意思而已,
以第二款例子又將 i = 3 重新定義就可以很清楚瞭解到
這個 i 跟 object.i 還是獨立的兩變數
以上如果有錯請指教....
By 一個java新手
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.199.35
※ 編輯: moonforget 來自: 140.118.199.35 (02/08 21:58)
討論串 (同標題文章)