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