作者PsMonkey (痞子军团团长)
站内java
标题Re: [问题] 初学者的几点小疑问
时间Sun Jan 21 20:39:09 2007
※ 引述《war3rd (war3rd)》之铭言:
: 以下这二支小程式....
: 程式一:
: public static void main (String[] args){
: Integer n1 = new Integer(47);
: Integer n2 = new Integer(47);
: System.out.println(n1==n2);
: Integer i1 = 47;
: Integer i2 = 47;
: System.out.println(i1==i2);
: Integer p1 = 147;
: Integer p2 = 147;
: System.out.println(p1==p2);
: }
: }
: 因为小弟刚接触java(自修) 如果觉得问题太蠢还请见谅
: 问题1:为何n1==n2(结果:false)而i1==i2(结果:true) 他们的值不是都相等吗?
: 还是Integer oo = new Integer (xx) 与 Integer oo = xx 二种方式有哪不同吗?
一个有 new,一个没有阿...
n1 肯定不等於 n2
请看看 Object.equal() 或是 Integer.equal()
简单地说,如果 == 两边是 obejct 的话,那是比较记忆体位置
: 问题2: 那又为啥同样是 Integer oo = xx 的方式
: i1==i2(ture) 而p1==p2(false) 这又是为啥?我只不过数字修正了一下
至於 i1, i2, p1, p2,我没有测试...
不过你应该是用到 auto boxing 的功能 [远目]
: 程式二:
: class Letter {
: char c;
: }
: public class test{
: static void f(Letter y) {
: y.c='Z';
: }
: public static void main (String[] args){
: Letter x= new Letter();
: x.c= 'a';
: System.out.println("1:x.c: "+x.c);
: f(x);
: System.out.println("2:x.c: "+x.c);
: }
: }
: 问题3: 为何第二次的输出 x.c的字元是Z 而不是a 呢?
: ps: 如果有有违反板规请告知 我会自d的(因为不知算不算是作业文^^u)
请参考 Java 的参数传递
--
侃侃长论鲜窒碍 网站:
http://www.psmonkey.idv.tw
众目睽睽无心颤 个人版:telnet://legend.twbbs.org
茕居少聊常人事
杀头容易告白难 欢迎参观 Java 版(@ptt.cc) \囧/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.197.241