该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-11
sdh5724 写道
基础类型, string是值传递。 不过, string比较特别。
其他所有继承Object对象的东西, 都是引用。 因为JAVA实际上, 说的不好听点, 任意时刻任何实例都是全JVM可见的,不然GC就管理不到它了, 看你用角度看这个理解。 整天不F规范上说的人还真不少。 别总觉得E文的技术文章就是真理哦。
String类型一样也是引用传递,只不过你不能改变String对象的内容而已,看起来似乎是值传递,如果你自己构造一个只能在构造方法中初始化对象状态,而没有任何改变对象状态的方法类,这个类和String也是一样的 |
|
返回顶楼 | |
发表时间:2009-01-11
本着认真的负责, 我刚仔细看了下
http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html 这个文章的作者根本不懂JAVA, 用这么个例子说的是传引用: public void tricky(Point arg1, Point arg2) { arg1.x = 100; arg1.y = 100; Point temp = arg1; arg1 = arg2; arg2 = temp; } public static void main(String [] args) { Point pnt1 = new Point(0,0); Point pnt2 = new Point(0,0); System.out.println("X: " + pnt1.x + " Y: " +pnt1.y); System.out.println("X: " + pnt2.x + " Y: " +pnt2.y); System.out.println(" "); tricky(pnt1,pnt2); System.out.println("X: " + pnt1.x + " Y:" + pnt1.y); System.out.println("X: " + pnt2.x + " Y: " +pnt2.y); } 通过一个方法调用, 制造一个表面上相同的对象。 实质上, 传值要做对象copy的。 这就成大忌了。 |
|
返回顶楼 | |
发表时间:2009-01-12
rxgp02a 兄 说的很明白了
不管传进来的是什么 JVM都会为其创建一个 副本的 |
|
返回顶楼 | |
发表时间:2009-01-13
按值传递的。。还和同事争执过。。。具体详见 java核心卷。
|
|
返回顶楼 | |