java String拼接時(shí)的問題匯總
剛才發(fā)現(xiàn)了一個(gè)小問題,比如我們設(shè)置一個(gè)字符串對象test并初始化為null,然后執(zhí)行test+='abc';,此時(shí)test的值不是abc,而是nullabc。這是因?yàn)槲覀儗?shí)際上是讓test='abc'+null;,此時(shí)null會被強(qiáng)制轉(zhuǎn)為String類型,其值就是'null'.例如下面的例子:
String test=null+'abc';System.out.println(test);
輸出就是nullabc
所以我們在使用+=運(yùn)算符的時(shí)候要先判斷是不是null,如果是的話應(yīng)該直接賦值
話又說回來,熟悉String原理就能知道,如果使用+=來創(chuàng)建字符串,會在字符串常量池中產(chǎn)生很多不需要的子串對象,所以不鼓勵使用String的拼接方式一步步創(chuàng)建字符串,應(yīng)該使用StringBuilder 和append()方法。這些類的對象能夠被多次的修改,并且不產(chǎn)生新的未使用對象。
并且這兩個(gè)類是提供了append()方法的,可以傳入char或者String,使用很方便。最后要輸出字符串的時(shí)候直接toString()即可。
內(nèi)容擴(kuò)展:
java拼接字符串、格式化字符串方式
//+ String arg0 = 'Bob'; String arg1 = 'Alice'; System.out.println('hello,' + arg0 + '. I am ' + arg1 + '.'); //StringBuilder.append StringBuilder builder = new StringBuilder(); builder.append('hello,'); builder.append(arg0); builder.append('. I am '); builder.append(arg1); builder.append('.'); System.out.println(builder.toString()); //String.format String formatStr = String.format('hello,%s. I am %s.', arg0, arg1); System.out.println(formatStr); //MessageFormat.format String formattedText = MessageFormat.format('hello,{0}. I am {1}.', arg0, arg1); System.out.println(formattedText);
2.運(yùn)行結(jié)果
hello,Bob. I am Alice.hello,Bob. I am Alice.hello,Bob. I am Alice.hello,Bob. I am Alice.
到此這篇關(guān)于java String拼接時(shí)的問題匯總的文章就介紹到這了,更多相關(guān)java String拼接時(shí)候的一個(gè)小問題內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問題及解決2. python爬蟲實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊3. 使用JSP技術(shù)實(shí)現(xiàn)一個(gè)簡單的在線測試系統(tǒng)的實(shí)例詳解4. asp批量添加修改刪除操作示例代碼5. 開發(fā)效率翻倍的Web API使用技巧6. HTML 絕對路徑與相對路徑概念詳細(xì)7. 解決ajax請求后臺,有時(shí)收不到返回值的問題8. ajax請求后臺得到j(luò)son數(shù)據(jù)后動態(tài)生成樹形下拉框的方法9. .NET6打包部署到Windows Service的全過程10. WML的簡單例子及編輯、測試方法第1/2頁
