Java字符拼接成字符串的注意點(diǎn)詳解
這兩天敲代碼的時候,偶然間發(fā)現(xiàn)一個好玩的事情,分享一下,記錄一下。
該段代碼主要是:先產(chǎn)生的幾個整數(shù),把整數(shù)轉(zhuǎn)換成對應(yīng)的字符,最后的字符拼接成字符串,在把字符拼接成字符串的時候,個人因?yàn)橥祽惺褂?號進(jìn)行操作,出現(xiàn)了一點(diǎn)小驚喜。拼接以后出現(xiàn)了兩種不同的結(jié)果,感到十分的意外,所以分析了一下出現(xiàn)的結(jié)果,記錄一下。
package top.supertd.www;
import java.util.concurrent.ThreadLocalRandom;
public class TestString {
public static void main(String[] args) {
//獲取一個產(chǎn)生隨機(jī)數(shù)的類
ThreadLocalRandom random = ThreadLocalRandom.current();
//因?yàn)榇髮懽帜窤~Z對應(yīng)的ASCII碼為65~90,所以生成這樣的隨機(jī)數(shù),
//字符和對應(yīng)的ASCII碼(整數(shù))可以互相轉(zhuǎn)換
char a = (char) random.nextInt(65, 90);
char b = (char) random.nextInt(65, 90);
char c = (char) random.nextInt(65, 90);
//把三個字符拼接成一個字符串
System.out.println(a + b + c + "");
System.out.println("" + a + b + c);
}
}
出乎意料的是,最后產(chǎn)生了兩種結(jié)果:
234 UGN
咦?!第一個輸出結(jié)果居然是數(shù)字,是不是很神奇啊,這是為什么嗎?到底發(fā)生了什么呀?
經(jīng)過對結(jié)果的分析可知:
在第一個輸出中,前三個字符相加,并不是簡單的執(zhí)行字符和字符之間的連接操作,而是把字符對應(yīng)的ASCII值相加了起來,最后在和 "" 這個空字符串相加,這時候才是執(zhí)行的字符串連接的操作,ASCII值變成了字符串,導(dǎo)致最后輸出的是“234”。
在第二個輸出中,""直接和第一個字符連接操作,變成一個新的字符串"U",這個字符串再和后面的字符相加時,后面的字符轉(zhuǎn)化成了字符串,和前面的字符串拼接在一起,變成一個新的字符串。以此類推,最后得到了字符串"UNG"。
綜上所述,單個字符之間相加時,系統(tǒng)會把其對應(yīng)的ASCII值相加起來,并不會把字符變成字符串,一個字符串和一個字符相加時,字符轉(zhuǎn)化成字符串,兩個字符串進(jìn)行拼接操作。字符串和多個字符之間用加號連接時,應(yīng)多加注意字符的位置。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于java構(gòu)造方法Vector創(chuàng)建對象源碼分析
這篇文章主要介紹了java構(gòu)造函數(shù)中對Vector源碼及原理的分析,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家早日升職加薪2021-09-09
一文詳解java如何實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用
從?Java?8?開始,便引入了一種稱為“流式?API”的編程風(fēng)格,當(dāng)然也被稱為“鏈?zhǔn)皆O(shè)置”或“鏈?zhǔn)秸{(diào)用”,本文主要來和大家討論一下如何實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用,感興趣的可以了解下2023-12-12
Spring?Boot中自動執(zhí)行sql腳本的方法實(shí)例
在SpringBoot的架構(gòu)中,DataSourceInitializer類可以在項目啟動后初始化數(shù)據(jù),我們可以通過自動執(zhí)行自定義sql腳本初始化數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Spring?Boot中自動執(zhí)行sql腳本的相關(guān)資料,需要的朋友可以參考下2022-01-01
詳解在springboot中使用Mybatis Generator的兩種方式
這篇文章主要介紹了詳解在springboot中使用Mybatis Generator的兩種方式,本文將介紹到在springboot的項目中如何去配置和使用MBG以及MBG生成代碼的兩種方式,非常具有實(shí)用價值,需要的朋友可以參考下2018-11-11
SpringCloud的網(wǎng)關(guān)Zuul和Gateway詳解
SpringCloudZuul和SpringCloudGateway都是用于構(gòu)建微服務(wù)架構(gòu)中的API網(wǎng)關(guān)的組件,但SpringCloudGateway在性能、功能特性和生態(tài)支持等方面有一些優(yōu)勢,因此推薦使用SpringCloudGateway作為首選2025-02-02

