public class TestString { public void swap(Integer a, Integer b) {
Integer team;
team =a;
a = b;
b = team;
System.out.println("a="+a.intValue());
System.out.println("b="+b.intValue()); } public static void main(String[] args) { Integer a = Integer.valueOf(1);
Integer b = Integer.valueOf(3); TestString ts = new TestString();
ts.swap(a,b);
System.out.println("a="+a.intValue());
System.out.println("b="+b.intValue()); }
}这是我写的不能换值
高手指点一下???????!!!!!!!!1
Integer team;
team =a;
a = b;
b = team;
System.out.println("a="+a.intValue());
System.out.println("b="+b.intValue()); } public static void main(String[] args) { Integer a = Integer.valueOf(1);
Integer b = Integer.valueOf(3); TestString ts = new TestString();
ts.swap(a,b);
System.out.println("a="+a.intValue());
System.out.println("b="+b.intValue()); }
}这是我写的不能换值
高手指点一下???????!!!!!!!!1
解决方案 »
- 安装svn 结果总是发现 错误
- 请教一个swing线程的问题
- 请问怎么 在这个文本编辑器里面实现JScrollPane,也就是可以实现滚动,下拉?实现马上结帖!
- 返回值为空时产生NullPointerException
- Japplet
- 请教在Eclipse中如何进行lomboz配置问题??????
- jsp中怎么对一个text类型的onkeyup的值进行判断?详细见内。
- 关于JAVA制作EXE一问(不要说我在污辱跨平台,但没办法有时就是要人家方便不要多平台,毕竟现在主流还是windwos)
- 这段程序怎么编译不过?帮我看看
- 共同组建Java Team
- java的一些特殊标示符
- hibernate.cfg.xml 问题配置问题
{
int m ,n;
public void Exchange(int a, int b)
{
m=b;
n=a;
}
public static void main(String agrs[])
{
Mugs ob = new Mugs();
int m = 44;
int n = 77;
System.out.println("before exchange: m = " + m + ", n = " + n);
ob.Exchange(m, n);
System.out.println("after exchange: m = " + ob.m + ", n = " + ob.n);
}
};
给你一个参考。
Try "Integer"?
>非基本类型都可以更改吧.
>Try "Integer"?对象也有分可改(mutable)不可改(immutable)的。所有的基本类型对应的对象类型(如String、Integer等)都是不可改的(immutable)。楼主可用数组的方式让函数修改数组中的元素。--
http://www.agui.googlepages.com
mailto: agui.cn(a)gmail.com
而和你想改变的内容有关。
如果你仅仅想修改属性值,任何类型都可以,
但是如果你想在方法内改变这个对象的值,
很抱歉,任何类型都不行。
因为JAVA中虽然说传递的使用
实际上是引用的Copy.
--------------------------------
public static void increase1(A a){
a.id = 5;
}public static void increase2(A a ){
a = new A();
a.id = 5;
}
public void test(){
A a = new A();//0
increase1(a);//1
increase2(a);//2
}
-------------------------------------
由于传递的是引用的copy,即1和2处所传递的值和0处的是不同的东西,但是由于是copy,所以他们指向的是同一块地址,假设为X。increase1中改变的是属性,就相当于把X中的某一点给修改了,而0处的a仍然是指向X的,所以修改成功。而在increase2中,由于“a = new A();”,相当于将引用的copy指向了另外一个地址,但是它并没有对原来的值(即X)做任何修改,也就对于0处a没有任何影响了,所以increase2中的修改不成功。