java-toString()、(String)、String.valueOf 的区别

Java类型转换与异常处理
本文探讨了Java中Integer到String的类型转换错误,解析了ClassCastException异常的原因,并对比了toString()与String.valueOf()方法的区别,强调了正确处理类型转换的重要性。
  1. Object x = new Integer(1218);
    System.out.println((String)x);

     

  2. 如上代码编译通过,运行时报错:
    java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

     

  3. toString()
    1. toString()是在Object中定义的,因此,任何继承Object的类都具有这个方法。
    2. 建议所有子类都重写此方法
    3. 它的值等于:getClass().getName()+'@'+Integer.toHexString(hashCode())
    4. 使用toString()的对象不能为null,否则会抛出异常java.lang.NullPointerException
  4. String.valueOf()
    1. String.valueOf()解决了toString()使用对象不能为空的问题
    2. public static String valueOf(Object obj) {
          return (obj == null) ? "null" : obj.toString();
      }

       

    3. 如果对象为null,则返回字符串“null”

       

  5. (String)
    1. 它是强制转换
    2. Integer o = new Integer(1218);
      System.out.println((String)o);

       

    3. 如上代码编译时就会报错:Cannot cast from Integer to String,说明Integer不能通过强制转换成String
    4. Object x = new Integer(1218);
      System.out.println((String)x);

       

    5. 在编译时没错,运行时抛出异常。这是因为x在表面上是Object,实际上是Integer。而Object是可以通过强制转换成为String的。所以,在编译的时候,x被当成了Object,大家相安无事,真正运行的时候,x被查出来是Integer,理所当然就抛出了ClassCastException。

转载于:https://www.cnblogs.com/jiangtao1218/p/10371345.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值