关于改变integer的值,高手飘过吧~~

gwjupiter 2009-03-10 12:56:49
昨天遇到个需要改变integer值的问题,找API发现竟然没有相应的函数
今天随便试了下,才发现可以这样改变,呵呵
看代码:


public class IntegerTest {

public static void change(Integer i)
{
i = 8;
}

/**
* @param args
*/
public static void main(String[] args) {
Integer a = new Integer(9);
a ++;
System.out.println(a);
change(a);
System.out.println(a);
}

}




...全文
320 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
winthesky 2009-03-15
  • 打赏
  • 举报
回复
你用1.4肯定编译不过,这个只不过是1.5的自动封装,自动包装的新特性
beiouwolf 2009-03-13
  • 打赏
  • 举报
回复
Integer本身并不能运行
这个基本类型的支持类只是重写过了操作符而已
他改变的只是类内部的值而已

还有你没搞清楚引用传递和值传递的区别

ningandjin 2009-03-13
  • 打赏
  • 举报
回复
楼上正解
moolf 2009-03-13
  • 打赏
  • 举报
回复
路过!
fangchenxuan 2009-03-11
  • 打赏
  • 举报
回复


1.
Interger a=new Interger(3);
Interger b=new Interger(3);
System.out.println(a.equals(b))
输出结果为true
2.
Interger a=new Interger(3)
Interger b=new Interger(3);
System.out.println(a==b);
输出结果为false
3.
Interger a=3;
Interger b=3;
System.out.println(a==b);
输出结果为:true;
4.
Interger a=300;
Interger b=300;
System.out.println(a==b);
输出结果为:false
Interger 定义的变量范围为0-127,如果超出了范围值为false
ZangXT 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 Ostroff 的回复:]
引用 1 楼 liangchuanqi8624 的回复:
Integet和int之间是JVM自动封装和解封的,这样当然可以了啊.

在必要的时候JVM会进行自动包装和自动解包装。。
[/Quote]
谁家的jvm这么强悍?
Ostroff 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangchuanqi8624 的回复:]
Integet和int之间是JVM自动封装和解封的,这样当然可以了啊.
[/Quote]
在必要的时候JVM会进行自动包装和自动解包装。。
gwjupiter 2009-03-11
  • 打赏
  • 举报
回复
汗,我的意思是,对于integer可以像int一样进行运算,因为遇到改变integer值的问题,网上的解释是必须重新new个带新值的integer出来
传奇 2009-03-10
  • 打赏
  • 举报
回复
Integet和int之间是JVM自动封装和解封的,这样当然可以了啊.
ZangXT 2009-03-10
  • 打赏
  • 举报
回复
欺骗自己?
lysky521 2009-03-10
  • 打赏
  • 举报
回复
是对象 和引用之间的 传递问题
Fish3812 2009-03-10
  • 打赏
  • 举报
回复
这个是值传递 和引用传递的问题吧。。。
如一宝宝 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ningandjin 的回复:]
楼主在玩大家吗?
[/Quote]
ningandjin 2009-03-10
  • 打赏
  • 举报
回复
楼主在玩大家吗?
axman 2009-03-10
  • 打赏
  • 举报
回复
他那个应该是共它代码的缓存,改变一下数字重新编译一下就知道了。
ligy19840101 2009-03-10
  • 打赏
  • 举报
回复
a的值不可能变啊!
KingZChina 2009-03-10
  • 打赏
  • 举报
回复
啥意思啊? a也没变成8啊
liangpei2008 2009-03-10
  • 打赏
  • 举报
回复
LZ想说明什么?
明显没有改变Integer的值啊
axman 2009-03-10
  • 打赏
  • 举报
回复
public static void main(String[] args) {
Integer a = new Integer(999);
a ++;
System.out.println(a);
change(a);
System.out.println(a);
}
结果再看看
songbeirui 2009-03-10
  • 打赏
  • 举报
回复
public static void main(String args[]){
Integer a = new Integer(9);
//a++;
a = a+1;
System.out.println(a);
change(a);
System.out.println(a);
}

public static void change(Integer a){
a = 8;
}
加载更多回复(2)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧