作者moonforget (等等等等等等等等)
看板java
标题Re: 为什麽?!
时间Thu Feb 8 21:56:42 2007
※ 引述《[email protected] (夏杰)》之铭言:
: 标 题: Re: 为什麽?!
: 发信站: 中央资管龙猫资讯天地 (Thu Feb 8 16:12:20 2007)
: 转信站: ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!news.mgt.ncu!bbs
:
: ==> [email protected] (!H45) 提到:
: : ※ 引述《[email protected] (夏杰)》之铭言:
: : : 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)