java-toString()、(String)、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。
相關文章
相關標籤/搜索