你理解面向对象吗?来看看这段程序吧【顺便散分】 本帖最后由 QustDong 于 2010-05-31 21:36:54 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在java中只有用new关键字才会产生新对象(String特殊除外);这里只有一个new呵呵!其实s2指向的是s1相当于s2 = s1 = new Student ();所以指向的是同一个对象! 学习了.我用Eclipse运行了下 是30哦我开始还以为是 20 呵呵,虽然是天天都是面向对象的开发,可真要说个所以然来,还真是很难的。 JF 升星星啊 谢谢LZ si,s2引用的的同一个内存空间、、、 基本数据类型存储的是实际的数值,所以“=”对基本数据类型赋值是直接将一个地方的内容复制到另一个地方;对对象进行操作时,真正操作的是对对象的引用,“s2=s1”,把s1的引用赋给s2,二者地址相同。 谢谢楼主的分享!为了便于更好地理解,我画了每一步的内存结构模拟:Student s1 = new Student();+--------+ +---------+| s1 | ------> | Student |+--------+ +---------+ | age = 0 | +---------+s1.setAge(20);+--------+ +----------+| s1 | ------> | Student |+--------+ +----------+ | age = 20 | +----------+Student s2 = s1;+--------+ +----------+| s1 | ---+--> | Student |+--------+ | +----------+ | | age = 20 | | +----------++--------+ || s2 |----++--------+s1.setAge(30);+--------+ +----------+| s1 | ---+--> | Student |+--------+ | +----------+ | | age = 30 | | +----------++--------+ || s2 |----++--------+那可以看出 s2.getAge() 就是 30 了,呵呵 :) 刚学java的时候也曾经迷惑过,接分~ 如果所有的java的试题和问题都是这样,那么作为java程序员真是太幸福了。 java中只有值传递,没有引用传递所以虽然运行了 Student s2=s1;实际上只是让 s2指向s1在内存中的地址 Student s2=s1;让s2引用了和s1同样的内容 所以可以认为s2即s1 一枚硬币的两面嘛接分:-) 楼主以前是学c++的吧,java里的对象变量都是引用 饿汉式单例模式为什么是线程安全的 欢迎java高手进组 运行后为什么总是用户名错误? java虚拟机 高手进来~鼠标监听器怎么实现的? help help..........!!!! 一个取字符的问题,进来看看! 关于generics java 关于〈input type=file>经典问题的解决方法,100分求助各位大侠 分分分!专家的命根!小虾送分!请问专家:我怎么将数据库中的数据用jTextfield 显示出呢??给一点代码把????? 代码求优化 RMIJDBC异常问题
只有用new关键字才会产生新对象(String特殊除外);这里只有一个new呵呵!其实s2指向的是s1
相当于
s2 = s1 = new Student ();所以指向的是同一个对象!
JF 升星星啊
谢谢LZ
+--------+ +---------+
| s1 | ------> | Student |
+--------+ +---------+
| age = 0 |
+---------+s1.setAge(20);
+--------+ +----------+
| s1 | ------> | Student |
+--------+ +----------+
| age = 20 |
+----------+Student s2 = s1;
+--------+ +----------+
| s1 | ---+--> | Student |
+--------+ | +----------+
| | age = 20 |
| +----------+
+--------+ |
| s2 |----+
+--------+s1.setAge(30);
+--------+ +----------+
| s1 | ---+--> | Student |
+--------+ | +----------+
| | age = 30 |
| +----------+
+--------+ |
| s2 |----+
+--------+那可以看出 s2.getAge() 就是 30 了,呵呵 :)
让s2引用了和s1同样的内容 所以可以认为s2即s1 一枚硬币的两面嘛接分:-)