public class t4 {
Integer x=new Integer(3);
public static void main(String[] args) {
t4 t=new t4();
t.add(t.x);
System.out.println(t.x);
} private void add(int x) {
x++;
}
}
java不是传值么,然后这个程序把t.x的应用传给add函数应该是四啊。。
求大神解答。
Integer x=new Integer(3);
public static void main(String[] args) {
t4 t=new t4();
t.add(t.x);
System.out.println(t.x);
} private void add(int x) {
x++;
}
}
java不是传值么,然后这个程序把t.x的应用传给add函数应该是四啊。。
求大神解答。
实际上执行add的时候,仅仅是把t.x的值拷贝了过去,在add方法执行也是把t.x的值加一,完毕 这个临时的拷贝没有用了就被内存回收
还是给对象的引用拷贝过去,哦。。就是对象引用,
我还是有点不明白为什么常用数据类型比如Int,他们不是引用呢,
比如int x=4,x是一个引用,而4是一个Integer的对象。。
如果x是一个引用的话,就应该是四了。。
如果是一个对象,不是把一个对象拷贝过去,而传递一个引用,这个引用指向着内存中的同一个对象。
如果是一个int,那么如果这个int的值是3,那就直接把3传过去。
public class D
{
public static void main(String[] args)
{
Integer x = new Integer(1);
D d = new D();
d.add(x);
System.out.println(x);
}
private void add(Integer x)
{
x++;
}
}解答为:
Integer是不可变对象,你并没有改变你传进去的Integer对象(如何改变?调用这个对象上的方法或者给该对象上的字段赋值)