java int和String 相互转换

1.int转换为String


int i =123;
String s;
s = i + ""; //first method;
s = Integer.valueOf(i).toString() //second method;


第一种方法:s=i+""; //会产生两个String对象

原因:String这个类是不可变的,“”(空字符串)这个String对象存储在内存的堆中

其次,s = i + ""; 创建了 字符串类型的i ,接着s的引用指向这个对象(java中string对象是共享的,以String s = “”这种方式定义的对象都存在String池中,且唯一)

所以两个 String对象 分别为字符串类型的 i和“”

+operand 是在java compiler中处理的。没有对应的java源码(jvm?)
第二种方法:s=String.valueOf(i); //直接使用String类的静态方法,只产生一个对象

原因,贴一下源码



实际上 new了一个新的对象。


对于可能常常变化的字符串,推荐使用StringBuffer/StringBuilder(前者线程安全),这两者处理变化的字符串的效率都比String高

2.String -> int 

s="12345";
int i;
第一种方法:i=Integer.parseInt(s);
第二种方法:i=Integer.valueOf(s).intValue();


第一种方法:i=Integer.parseInt(s);//直接使用静态方法,不会产生多余的对象,但会抛出异常
第二种方法:i=Integer.valueOf(s).intValue();//Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛

异常,但会多产生一个对象


参考博客 http://blog.youkuaiyun.com/memray/article/details/7312817/

http://blog.youkuaiyun.com/jackiehff/article/details/8509056

http://blog.youkuaiyun.com/zimo2013/article/details/8932855

http://blog.youkuaiyun.com/hp910315/article/details/48654777

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值