public class MyMain{
public static void main(String[] args) throws Exception {
String a = "s";
StringBuffer b = new StringBuffer("sb");
int[] c = {1};
Integer d = new Integer(5);
getRes(a);
getRes(b);
getRes(c);
getRes(d);
System.out.println(a+"--"+b.toString()+"--"+c[0]+"--"+d);
}
public static void getRes(String a) { a = a+"sssss";}
public static void getRes(StringBuffer b){ b.append("sb");}
public static void getRes(int[] c) { c[0] = c[0]+1;}
public static void getRes(Integer d) { d = d+1;}
}
...全文
76949打赏收藏
运行结果你是什么。。
public class MyMain{ public static void main(String[] args) throws Exception { String a = "s"; StringBuffer b = new StringBuffer("sb"); int[] c = {1}; Integer d = new Integer(5); getRes(a); getRes(b); getRes(c); getRes(d); System.out.println(a+"--"+b
还没明白,String 指向新对象了,Integer指向新对象了,StringBuffer没有,这个怎么判断,String和Integer对象不可变吗?[/quote]
a = a+"sssss"会创建新对象啊,StringBuffer的append方法不会产生新对象。。[/quote]元首,讲讲String和Integer不创建对象的原因,顺便元首还知道哪些包装类像这样传不创建对象
public final class A {
int x =10;
public static void p(A a) {
a = new A();
a.x = 5;
}
public static void main(String args[]) {
A a = new A();
System.out.println(a.x);
p(a);
System.out.println(a.x);
}
}
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
[/quote]
元首,我刚才DEBUG了,发现传值的时候,确实把地址传过去了,
但是
public static void getRes(Integer d) {//传过来的时候id=27
d = d + 1; // 这时id=37,说明这是一个新对象,原对象的值未改变
}
[/quote]刚洗澡想通了 public final class Integer extends Numberimplements Comparable<Integer> 这货跟String 一样是final的,全通了[/quote]
final 的啊,我擦。龙套了[/quote]
这根final不final没有关系、、
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
[/quote]
元首,我刚才DEBUG了,发现传值的时候,确实把地址传过去了,
但是
public static void getRes(Integer d) {//传过来的时候id=27
d = d + 1; // 这时id=37,说明这是一个新对象,原对象的值未改变
}
[/quote]刚洗澡想通了 public final class Integer extends Numberimplements Comparable<Integer> 这货跟String 一样是final的,全通了[/quote]
final 的啊,我擦。龙套了[/quote]
不是因为final的原因,你可以自己写一个类,定义成final的,当传入的时候一样会改变,不存在不可变类对象传递就不会改变,这跟可变不可变没关系