国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java中關(guān)于String類以及字符串拼接的問題

這篇具有很好參考價(jià)值的文章主要介紹了Java中關(guān)于String類以及字符串拼接的問題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

面試題

  • String為什么不可變?
答案
/*
1.Java中String類維護(hù)一個(gè)final修飾的char[]數(shù)組實(shí)現(xiàn)不可變,意味著一旦分配了內(nèi)存空間,它們就不能被修改。
2.我們所說的不可變指的是字符串池中的對(duì)象是不可更改的(這樣方便JVM的內(nèi)存管理) 但當(dāng)前變量可以修改指向
eg1.當(dāng)我們創(chuàng)建String實(shí)例的時(shí)候 字符串中存在-->返回引用,而不是開辟新的對(duì)象空間 不存在-->字符串中開辟對(duì)象空間并返回引用
eg2.當(dāng)我們使用String中的方法來對(duì)其進(jìn)行操作時(shí),例如使用 replace() 方法修改字符串內(nèi)容時(shí),實(shí)際上是創(chuàng)建了一個(gè)新的字符串對(duì)象,并將其返回。
  原始的字符串本身并沒有被修改,只是改變了指向該字符串的引用。這種設(shè)計(jì)保證了在多線程環(huán)境下,String對(duì)象不會(huì)被修改,從而提高了代碼的可靠性和安全性。
*/
  • String s1=new String("abc");創(chuàng)建了幾個(gè)字符串對(duì)象
答案
/*
創(chuàng)建一個(gè)字符串對(duì)象
在Java中,使用 String s = "abc" 方式創(chuàng)建的字符串常量在編譯期就已經(jīng)被確定并放入常量池中,
因此,如果使用 String s = "abc" 創(chuàng)建多個(gè)字符串對(duì)象時(shí),實(shí)際上只有一個(gè)對(duì)象會(huì)被創(chuàng)建。
而使用 String s = new String("abc") 方式創(chuàng)建的字符串對(duì)象則是在運(yùn)行時(shí)創(chuàng)建的,每次都會(huì)在堆中創(chuàng)建一個(gè)新的對(duì)象,
因此在本例中,該語(yǔ)句創(chuàng)建了一個(gè)在堆中的字符串對(duì)象
*/

String類部分源碼

//被final修飾不可被繼承
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    //String維護(hù)char[] 所以不可修改
    private final char value[];

創(chuàng)建String對(duì)象的方式

Java中關(guān)于String類以及字符串拼接的問題

  • str1它首先會(huì)去方法區(qū)的常量池中找,有“hello”這個(gè)對(duì)象就直接引用,沒有就創(chuàng)建一個(gè)新的對(duì)象“hello”,存放在常量池中。
  • 而new的方式首先會(huì)在堆中創(chuàng)建一個(gè)對(duì)象,然后再去常量池中找,有直接引用,沒有就創(chuàng)建一個(gè)新的對(duì)象“hello”。

兩者區(qū)別

  • 直接賦值創(chuàng)建0或1個(gè)對(duì)象,而new的方式創(chuàng)建1或2個(gè)對(duì)象。
  • 為了提升Java虛擬機(jī)的性能和減少內(nèi)存的開銷,避免字符串的重復(fù)創(chuàng)建,盡量少使用new的方式創(chuàng)建String對(duì)象

代碼分析

public static void main(String[] args) {
        String str1 = "hello";//指向常量池中的引用
        String str2 = new String("hello");//指向堆中的引用
        String str3 = str2;//str3==str2 true
        String str4 = "hello";//str1==str4 true
    }

intern()

字符串調(diào)用intern()會(huì)返回常量池中這個(gè)字符串引用,可作為鎖對(duì)象

字符串拼接

String a="A";
String b="B";
String c=new String("C");
a="A"+b;//變量拼接 指向變?yōu)槎阎械刂?a="A"+c;//變量拼接 指向變?yōu)槎阎械刂罚?a="A"+"A";//常量拼接依舊指向常量池中的地址 a=="AA" true
final String d="D";//這是常量
a="A"+d//a=="AD" true

+號(hào)變量拼接底層原理 StringBuidlerd構(gòu)造初始化容量為16的char[] 然后調(diào)用append()進(jìn)行拼接 最后將結(jié)果new String()的形式賦給左邊變量文章來源地址http://www.zghlxwxcb.cn/news/detail-426027.html

到了這里,關(guān)于Java中關(guān)于String類以及字符串拼接的問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java Stream 拼接字符串

    一、使用背景? ? ? ? ?? ? ? ? ? 在開發(fā)過程,有時(shí)候需要將集合結(jié)果轉(zhuǎn)化成字符串,按照指定的字符分隔進(jìn)行拼接,java stream的收集器提供相應(yīng)的API,操作簡(jiǎn)單方便,下面直接上示例代碼; 二、API操作

    2024年04月12日
    瀏覽(23)
  • Java中字符串占位替換、字符串拼接、字符串與Collection互轉(zhuǎn)的方式

    1、String.format 最原始最基礎(chǔ)的方式。 使用%來表示占位,后面跟上不同的標(biāo)識(shí)符,用于限定這個(gè)占位符的參數(shù)類型,由jdk原生提供支持。 示例: 2、MessageFormat 如果遇到一個(gè)參數(shù)需要替換模板中多個(gè)占位的場(chǎng)景,更友好的方式是MessageFormat,由jdk原生提供支持。 示例: 舉例:將

    2024年02月16日
    瀏覽(31)
  • Java Base64字符串與String字符串互轉(zhuǎn)方法

    Java Base64字符串與String字符串互轉(zhuǎn)方法

    在使用String轉(zhuǎn)Base64和Base64轉(zhuǎn)String上有點(diǎn)小問題,特此記錄。 結(jié)果: 也是跟上面差不多的思路,將Base64轉(zhuǎn)為byte數(shù)組,再轉(zhuǎn)為String

    2024年02月15日
    瀏覽(32)
  • Java的String(字符串詳解)

    Java的String(字符串詳解)

    主要有三種,一種是直接使用常量去構(gòu)造,要么使用new String來構(gòu)造,或者還可以使用字符數(shù)組的形式。 String 類型本身并不存儲(chǔ)數(shù)據(jù),而是存儲(chǔ)指向該字符串的引用,所以字符串類型是一個(gè)類,s1是一個(gè)引用,指向這個(gè)類。而這個(gè)類有兩個(gè)成員變量,一個(gè)名稱為value,這也是一

    2024年02月07日
    瀏覽(25)
  • Java中的字符串String

    Java中的字符串String

    目錄 一、常用方法 1、字符串構(gòu)造 2、String對(duì)象的比較 (1)、equals方法 (2)、compareTo方法 (3)、compareToIgnoreCase方法(忽略大小寫進(jìn)行比較) 3、字符串查找 4、轉(zhuǎn)化 (1)數(shù)值和字符串轉(zhuǎn)化 ?編輯 (2)大小寫轉(zhuǎn)換 (3)字符串轉(zhuǎn)數(shù)組 (4)格式化 5、字符串替換 6、字符串

    2024年02月05日
    瀏覽(21)
  • Java中的String字符串練習(xí)

    目錄 Java中的String字符串練習(xí) 01-用戶登錄 02-遍歷字符串并統(tǒng)計(jì)字符個(gè)數(shù) 03-字符串拼接 04-字符串反轉(zhuǎn) 注意點(diǎn) 05-金額轉(zhuǎn)化(簡(jiǎn)單) 代碼解釋: 06-手機(jī)號(hào)屏蔽 07-身份證號(hào)碼查看 易錯(cuò)點(diǎn): 08-敏感詞替換 注意點(diǎn) toCharArray() 是Java中的一個(gè)方法,它用于將字符串轉(zhuǎn)換為字符數(shù)組。 方法簽

    2024年03月28日
    瀏覽(26)
  • 華為OD機(jī)試 - 字符串拼接(Java & JS & Python & C)

    題目描述 給定 M(0 M ≤?30)個(gè)字符(a-z),從中取出任意字符(每個(gè)字符只能用一次)拼接成長(zhǎng)度為 N(0 N ≤ 5)的字符串, 要求相同的字符不能相鄰,計(jì)算出給定的字符列表能拼接出多少種滿足條件的字符串, 輸入非法或者無法拼接出滿足條件的字符串則返回0。 輸入描

    2024年01月22日
    瀏覽(39)
  • [正式學(xué)習(xí)java③]——字符串在內(nèi)存中的存儲(chǔ)方式、為什么字符串不可變、字符串的拼接原理,鍵盤錄入的小細(xì)節(jié)。

    [正式學(xué)習(xí)java③]——字符串在內(nèi)存中的存儲(chǔ)方式、為什么字符串不可變、字符串的拼接原理,鍵盤錄入的小細(xì)節(jié)。

    ??鍵盤敲爛,年薪30萬?? 目錄 一、字符串 1.字符串在內(nèi)存中的存儲(chǔ)方式 2.創(chuàng)建字符串對(duì)象的兩種方式 3.兩種創(chuàng)建方式的區(qū)別 4.字符串對(duì)象一旦創(chuàng)建不可改變 - 為什么??? 5.字符串的拼接 6.字符串的拼接原理 二、鍵盤錄入 三、總結(jié) ??在java中,內(nèi)存中有兩個(gè)地方可以存儲(chǔ)

    2024年02月08日
    瀏覽(26)
  • Java截取String字符串的方法

    1.指定字符截取字符串,返回字符串?dāng)?shù)組 2.指定索引,截取字符串 3.通過StringUtils類截取字符串

    2024年04月22日
    瀏覽(23)
  • Java中常見字符串拼接九種方式,總有一款你喜歡!

    Java中常見字符串拼接九種方式,總有一款你喜歡!

    在 Java 編程中,字符串拼接是一項(xiàng)非?;A(chǔ)的操作,它涉及到了很多日常開發(fā)工作中常見的場(chǎng)景,例如拼接 SQL 語(yǔ)句、構(gòu)建 HTTP 請(qǐng)求參數(shù)等等。因此,對(duì)于掌握好字符串拼接技巧不僅有助于提高代碼效率,而且能夠避免一些潛在的性能問題。 下面我們就來列舉出來幾種方式,

    2024年02月16日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包