国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

JAVA對(duì)象轉(zhuǎn)為Java String的幾種常用方法

2019-11-18 10:44:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  在java項(xiàng)目的實(shí)際開發(fā)和應(yīng)用中,經(jīng)常需要用到將對(duì)象轉(zhuǎn)為String這一基本功能。本文將對(duì)常用的轉(zhuǎn)換方法進(jìn)行一個(gè)總結(jié)。常用的方法有Object#toString(),(String)要轉(zhuǎn)換的對(duì)象,String.valueOf(Object)等。下面對(duì)這些方法一一進(jìn)行分析。
  
  方法1:采用 Object#toString()方法
  請(qǐng)看下面的例子:
  
    Object object = getObject();
  
  System.out.PRintln(object.toString());
  
  在這種使用方法中,因?yàn)閖ava.lang.Object類里已有public方法.toString(),所以對(duì)任何嚴(yán)格意義上的java對(duì)象都可以調(diào)用此方法。但在使用時(shí)要注重,必須保證object不是null值,否則將拋出NullPointerException異常。采用這種方法時(shí),通常派生類會(huì)覆蓋Object里的toString()方法。
  
  方法2:采用類型轉(zhuǎn)換(String)object方法
  這是標(biāo)準(zhǔn)的類型轉(zhuǎn)換,將object轉(zhuǎn)成String類型的值。使用這種方法時(shí),需要注重的是類型必須能轉(zhuǎn)成String類型。因此最好用instanceof做個(gè)類型檢查,以判定是否可以轉(zhuǎn)換。否則輕易拋出CalssCastException異常。此外,需非凡小心的是因定義為Object 類型的對(duì)象在轉(zhuǎn)成String時(shí)語(yǔ)法檢查并不會(huì)報(bào)錯(cuò),這將可能導(dǎo)致潛在的錯(cuò)誤存在。這時(shí)要格外小心。如:
  
  Object obj = new Integer(100);
  
  String strVal = (String)obj;
  
  在運(yùn)行時(shí)將會(huì)出錯(cuò),因?yàn)閷nteger類型強(qiáng)制轉(zhuǎn)換為String類型,無(wú)法通過。但是,
  
  Integer obj = new Integer(100);
  
  String strVal = (String)obj;
  
  如是格式代碼,將會(huì)報(bào)語(yǔ)法錯(cuò)誤。
  
  此外,因null值可以強(qiáng)制轉(zhuǎn)換為任何java類類型,(String)null也是合法的。
  
  方法3:采用String.valueOf(Object)
  String.valueOf(Object)的基礎(chǔ)是Object#toString()。但它與Object#toString()又有所不同。在前面方法1的分析中提到,使用后者時(shí)需保證不為null。但采用第三種方法時(shí),將不用擔(dān)心object是否為null值這一問題。為了便于說(shuō)明問題,我們來(lái)分析一下相關(guān)的源代碼。Jdk里String# valueOf(Object)源碼如下:
  
    /**
  
     * Returns the string representation of the Object argument.
  
     *
  
     * @param  obj  an Object.
  
     * @return if the argument is null, then a string equal to
  
     *     "null"; otherwise, the value of
  
     *     obj.toString() is returned.
  
     * @see   java.lang.Object#toString()
  
     */
  
    public static String valueOf(Object obj) {
  
      return (obj == null) ? "null" : obj.toString();
  
  }
  
  從上面的源碼可以很清楚的看出null值不用擔(dān)心的理由。但是,這也恰恰給了我們隱患。我們應(yīng)當(dāng)注重到,當(dāng)object為null時(shí),String.valueOf(object)的值是字符串”null”,而不是null!!!在使用過程中切記要注重。試想一下,假如我們用 if(String.valueOf(object)==null){System.out.println(“傳入的值是null!”);}這樣的語(yǔ)句將可能會(huì)發(fā)生什么問題。再想一下,向控制臺(tái)輸出時(shí),在視覺上如下語(yǔ)句在執(zhí)行的結(jié)果上有什么不同:
  
  System.out.println(String.valueOf(null));
  
  System.out.println(null);
  
  我們看到的輸出將是一模一樣的東西:null,但它們意義相同嗎?

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 清水河县| 自治县| 重庆市| 苍南县| 土默特右旗| 闸北区| 来安县| 陆丰市| 峡江县| 屏东市| 毕节市| 镇赉县| 沙湾县| 武平县| 盈江县| 建湖县| 南宁市| 萨嘎县| 津南区| 克东县| 恩施市| 连州市| 孝昌县| 大冶市| 铅山县| 安泽县| 苗栗县| 独山县| 德庆县| 邹平县| 孝义市| 辰溪县| 甘德县| 荔波县| 高雄县| 阳原县| 巴马| 新源县| 化德县| 灵武市| 陕西省|