java String拼接時的問題匯總
剛才發(fā)現(xiàn)了一個小問題,比如我們設(shè)置一個字符串對象test并初始化為null,然后執(zhí)行test+="abc";,此時test的值不是abc,而是nullabc。這是因為我們實際上是讓test="abc"+null;,此時null會被強制轉(zhuǎn)為String類型,其值就是"null".例如下面的例子:
String test=null+"abc"; System.out.println(test);
輸出就是nullabc
所以我們在使用+=運算符的時候要先判斷是不是null,如果是的話應(yīng)該直接賦值
話又說回來,熟悉String原理就能知道,如果使用+=來創(chuàng)建字符串,會在字符串常量池中產(chǎn)生很多不需要的子串對象,所以不鼓勵使用String的拼接方式一步步創(chuàng)建字符串,應(yīng)該使用StringBuilder 和append()方法。這些類的對象能夠被多次的修改,并且不產(chǎn)生新的未使用對象。
并且這兩個類是提供了append()方法的,可以傳入char或者String,使用很方便。最后要輸出字符串的時候直接toString()即可。
內(nèi)容擴展:
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.運行結(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拼接時的問題匯總的文章就介紹到這了,更多相關(guān)java String拼接時候的一個小問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決StringBuffer和StringBuilder的擴容問題
這篇文章主要介紹了解決StringBuffer和StringBuilder的擴容問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07Spring的@Autowired加到接口上但獲取的是實現(xiàn)類的問題
這篇文章主要介紹了Spring的@Autowired加到接口上但獲取的是實現(xiàn)類的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式
這篇文章主要介紹了Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07java實現(xiàn)利用String類的簡單方法讀取xml文件中某個標簽中的內(nèi)容
下面小編就為大家?guī)硪黄猨ava實現(xiàn)利用String類的簡單方法讀取xml文件中某個標簽中的內(nèi)容。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12解決myBatis中openSession()自動提交的問題
在學(xué)習MySQL過程中,發(fā)現(xiàn)插入操作自動提交,問題原因可能是myBatis中的openSession()方法設(shè)置了自動提交,或者是MySQL的默認引擎設(shè)置為不支持事務(wù)的MyISAM,解決辦法包括更改myBatis的提交設(shè)置或?qū)ySQL表的引擎改為InnoDB2024-09-09基于SpringBoot+Redis的Session共享與單點登錄詳解
這篇文章主要介紹了基于SpringBoot+Redis的Session共享與單點登錄,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下2019-07-07