toString() / String.valueOf() VS 强制类型转换 (String)

原文  http://www.cnblogs.com/yuxiaoqi/p/3562161.html


public class Test {
	public static void main(String args[]) {
	    Map<String,Object> map = new HashMap<String, Object>();
	    map.put("intNum", new Integer(1));
	     
	    String a = map.get("intNum").toString();      // .toString
	    System.out.println("intNum.toString():"+a);
	    
	    String c = String.valueOf(a);
	    System.out.println("String.valueOf(intNum):"+c);
	    
	    
	    // 强转 报错: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
	    String b = (String)map.get("intNum");         
	    System.out.println("(String)intNum:"+b);
	}
}


精华:

1、toString一个方法,任何一个对象都可以有自己的字符串表达方式,就要比任何物品都可以有自己的名字一样,你可以重写这个方法,返回你需要的字符串数据

而强制类型转换成String,就是将原本不是String类型的对象转换成String类型,它不会去调用tostring方法。这就相当于你将物品A当成物品B来使用,如果两者不能转换的话,就相当于你把石头当救生圈使用了。。


2、

在任何对象使用调研toString方法之前,最好验证一下对象是否为null,这是最理想的做法。
如果不想之前验证,那么就要用String.valueOf方法来处理对象或者数据类型。


3、“转”这个术语,其实是不确切的,或者说是不科学的。
一个对象一经建立,其类型已经确定,所谓的“强转”不过是强行改变你看待它的方式。所以,英文中类型“转换”叫做Type Casting或者Class Casting,使用cast以说明改变的是其外在。
SQL Server有一个用来转型的函数叫做cast,后来提供了另一个函数叫做convert,二者略有不同,相差很小,官方推荐用convert,其实就是因为这两个函数实际上改换了数据的内在类型,所以用convert表述更为精准。
理解了我这段话,你就知道toString和强“转”之间有什么区别了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值