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

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

這篇具有很好參考價值的文章主要介紹了[正式學(xué)習(xí)java③]——字符串在內(nèi)存中的存儲方式、為什么字符串不可變、字符串的拼接原理,鍵盤錄入的小細(xì)節(jié)。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

??鍵盤敲爛,年薪30萬??

目錄

一、字符串

1.字符串在內(nèi)存中的存儲方式

2.創(chuàng)建字符串對象的兩種方式

3.兩種創(chuàng)建方式的區(qū)別

4.字符串對象一旦創(chuàng)建不可改變 - 為什么???

5.字符串的拼接

6.字符串的拼接原理

二、鍵盤錄入

三、總結(jié)


一、字符串

1.字符串在內(nèi)存中的存儲方式

??在java中,內(nèi)存中有兩個地方可以存儲字符串,一個是字符串池,一個是堆內(nèi)存,串池中的字符串不會重復(fù),而堆中的字符串每次都會開辟一塊新的空間,因為維護(hù)串池的是一個hashtable,以字符串hashcode作為建,引用作為值。

2.創(chuàng)建字符串對象的兩種方式

第一種 "" 直接賦值

String s1 = "123";

第二種 new關(guān)鍵字創(chuàng)建

String里面可以是字符串 可以是byte類型的數(shù)組,還可以指定數(shù)組區(qū)間

String s2 = new String("123"); //傳字符串

byte[] bytes = {'1', '2', '3'}; 
String s3 = new String(bytes); //傳數(shù)組
String s2 = new String(bytes, 0, 3);//從0索引開始拷貝,長度為3

3.兩種創(chuàng)建方式的區(qū)別

用 "" 直接賦值先從串池中查找,有直接用串池里的(字符串的復(fù)用,可節(jié)省空間),沒有在串池里創(chuàng)建一個新對象

new關(guān)鍵字創(chuàng)建是直接在堆內(nèi)存開辟一塊空間保存字符串,然后返回該空間的地址

加強(qiáng)理解示例:

String s1 = new String("aaa");

String s2 = new String("aaa");

String s3 = "aaa"

String s4 = "aaa"

System.out.println(s1 == s2); // true or false

System.out.println(s1 == s3); // true or false

System.out.println(s3 == s4); // true or false

解析:

引用數(shù)據(jù)類型 == 號比較的是地址值

s1 s2是new關(guān)鍵字創(chuàng)建的,每次都會在堆內(nèi)存中開辟新空間, 故s1 != s2

s3 在串池中查找,沒有,所以會將它保存到串池里,串池的內(nèi)存和堆肯定不一樣 s1 != s3

s4 在串池中查找,有,直接返回串池中的地址,s3 == s4

4.字符串對象一旦創(chuàng)建不可改變 - 為什么???

??先說一下final關(guān)鍵字

修飾基本數(shù)據(jù)類型 -> 變量的值不可被修改

修飾引用數(shù)據(jù)類型 -> 變量的地址值不可被修改

舉例:

final int a = 10;
a = 20; //報錯

final int[] arr = {1,2,3};
arr = new int[3]; //報錯
arr[0] = 10; //可以

??字符串用final和private兩個關(guān)鍵字修飾

字符串的底層是用一個字符數(shù)組保存的,而這個字符數(shù)組又是用final和private關(guān)鍵字修飾的,用final關(guān)鍵字修飾代表該數(shù)組的地址不能發(fā)生變化,但是你可以修改數(shù)組里面的內(nèi)容啊,這時private發(fā)揮作用了,限制這個數(shù)組只能在String類中使用,你壓根拿不到這個地址。

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

注意:String s = "aaa"; s = "bbb";這是又創(chuàng)建一個新對象把它的地址賦給了s

5.字符串的拼接

+操作符可以實現(xiàn)字符串的拼接操作

如何拼接:

String s1 = "aaa";
String s2 = "aaa"+"bbb"; //aaabbb
String s3 = new String(s1+"bbb"); //aaabbb
String s4 = ""+123; //123

就這??就這??不不不? 上才藝

String s1 = "123";

String s2 = "1"+"2"+"3";

s1 == s2 // true or false

String s3 = "1";

String s4 = s3+"2"+"3";

s1 == s3 // true or false

不會沒關(guān)系 因為我們不知道它怎么拼接的

6.字符串的拼接原理

分兩種情況:

1.沒有變量參與:

在編譯階段會將兩個字符串合并為一個,不會創(chuàng)建新的字符串對象,也就是說"1" + "2"在編譯時被替換為了"12"

2.有變量參與

有變量參與的拼接底層會創(chuàng)建StringBuilder對象拼接,這個對象也是new出來的,簡單來說就是將要拼接的字符串放到一個容器里面,拼接完最后在轉(zhuǎn)化為字符串返回。

再看這兩組題

String s1 = "123";

String s2 = "1"+"2"+"3";

s1 == s2 // true or false

沒有變量參與,s2在編譯階段就被替換為了"123",所以s1 == s2

String s3 = "1";

String s4 = s3+"2"+"3";

s1 == s3 // true or false

有變量參與,s3+“2”+“3” 會先創(chuàng)建一個StringBuilder容器,而這個容器是new出來的,拼接完再轉(zhuǎn)為字符串返回,故s1 != s3

二、鍵盤錄入

java一起 皆對象,要想錄入先獲取它的對象,固定格式

1.創(chuàng)建Scanner的對象?? 2.鍵盤錄入

Scanner sc = new Scanner(System.in);//sc就是獲取的對象
//調(diào)用sc的成員方法
int num = sc.nextInt();//錄入一個整數(shù)
String s = sc.next();//錄入一串字符串
String line = sc.nextLine();//錄入一行數(shù)據(jù)
………………

說一下小細(xì)節(jié):

回車的作用是結(jié)束本次錄入

scanner可以錄入不同數(shù)據(jù)類型的數(shù)據(jù),如果數(shù)據(jù)類型與之不匹配,直接報錯

除了nextLine 其他遇到空格 回車 制表位(tab鍵)會停止錄入,其他沒有讀取的內(nèi)容會放到緩沖區(qū),下一次讀取會讀緩沖區(qū)里面的第一個非空格 回車 制表位 字符

nextLine錄入一行數(shù)據(jù),遇到回車停止

比如說下面這個代碼

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

解析:

1空格11回車 遇到回車停止錄入,下一次讀取非空格 回車 制表位字符

就說你輸入???????? 1????????? 11???? 回車 還是輸出1, 11,

但如果你 1 中間加了回車 那他就會輸出1, 2

鍵盤錄入對象在內(nèi)存中的位置

鍵盤錄入對象也是new出來的,所以是在堆上開辟空間的,就這么簡單

來 考你考?。。?/p>

String s = sc.next(); //我輸入aaa

s == “aaa”? // true or false

答案是false啦

三、總結(jié)

字符串的兩種創(chuàng)建方式是什么?有什么區(qū)別?

字符串為什么不可改變?

+操作是如何拼接字符串的???

鍵盤錄入對象再內(nèi)存中的位置???文章來源地址http://www.zghlxwxcb.cn/news/detail-714667.html

到了這里,關(guān)于[正式學(xué)習(xí)java③]——字符串在內(nèi)存中的存儲方式、為什么字符串不可變、字符串的拼接原理,鍵盤錄入的小細(xì)節(jié)。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • java判斷某個字符串是否在字符串?dāng)?shù)組中的方法(4種)

    java判斷某個字符串是否在字符串?dāng)?shù)組中的方法(4種)

    public class Demo { ??? public static boolean useLoop(String[] arr, String targetValue) { ??????? for (String s : arr) { ??????????? if (s.equals(targetValue)) return true; ??????? } ??????? return false; ??? } ? ??? public static void main(String[] args) { ??????? String arr[] = {\\\"aa\\\", \\\"bb\\\", \\\"cc\\\"}; ??????

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

    Java中的字符串String

    目錄 一、常用方法 1、字符串構(gòu)造 2、String對象的比較 (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)計字符個數(shù) 03-字符串拼接 04-字符串反轉(zhuǎn) 注意點(diǎn) 05-金額轉(zhuǎn)化(簡單) 代碼解釋: 06-手機(jī)號屏蔽 07-身份證號碼查看 易錯點(diǎn): 08-敏感詞替換 注意點(diǎn) toCharArray() 是Java中的一個方法,它用于將字符串轉(zhuǎn)換為字符數(shù)組。 方法簽

    2024年03月28日
    瀏覽(26)
  • C語言中的字符串輸入(gets_s、fgets、scanf、fscanf)與相關(guān)內(nèi)存分配知識

    C語言中的字符串輸入(gets_s、fgets、scanf、fscanf)與相關(guān)內(nèi)存分配知識

    0. C語言的內(nèi)存分配知識 分配內(nèi)存空間有兩種方式:靜態(tài)內(nèi)存分配和動態(tài)內(nèi)存分配 0.1 靜態(tài)內(nèi)存分配 指的是在編譯時確定數(shù)組等數(shù)據(jù)類型的大小,然后由計算機(jī)分配好,通常是存在棧上的數(shù)據(jù) 例如:在聲明數(shù)組時,需要顯示的指明數(shù)組的大小 0.2 動態(tài)內(nèi)存分配 通俗一點(diǎn)就是向

    2024年02月11日
    瀏覽(20)
  • Java中的字符串是如何處理的?

    Java中的字符串是通過字符串對象來處理的。字符串是一個類,可以創(chuàng)建一個字符串對象,并在該對象上調(diào)用一系列方法來操作該字符串。 Java中的字符串是不可變的,這意味著一旦創(chuàng)建了一個字符串對象,就無法修改它的值。任何對字符串對象的操作都將返回一個新的字符串

    2024年02月02日
    瀏覽(22)
  • Java學(xué)習(xí)筆記:字符串

    Java學(xué)習(xí)筆記:字符串

    目錄 Java學(xué)習(xí)筆記:字符串 String 創(chuàng)建String對象 內(nèi)存模型 String 比較 Scanner驗證鍵入的字符串本質(zhì)是new出來的 練習(xí)案例:判斷賬戶和密碼是否一致 遍歷字符串 統(tǒng)計字符次數(shù) 字符串反轉(zhuǎn) StringBuilder StringBuilder構(gòu)造方法 鏈?zhǔn)骄幊?拼接字符串 StringJoiner 總結(jié) 必須學(xué)習(xí)使用JDK API幫助

    2024年03月17日
    瀏覽(23)
  • 如何從Java中的字符串值中獲取枚舉值

    說我有一個枚舉,它只是 我想找到一個字符串的枚舉值,例如 “A” 這將是 Blah.A。怎么可能做到這一點(diǎn)? Enum.valueOf() 是我需要的方法嗎?如果是這樣,我將如何使用它? 保持自己快人一步,享受全網(wǎng)獨(dú)家提供的一站式外包任務(wù)、遠(yuǎn)程工作、創(chuàng)意產(chǎn)品訂閱服務(wù)–huntsbot.com 是的

    2024年02月16日
    瀏覽(30)
  • Java中的String類的常用方法(對于字符串的常用操作)

    Java中的String類的常用方法(對于字符串的常用操作)

    目錄 一、獲取指定索引的字符 二、 獲取指定字符或者字符串的索引位置 三、判斷字符串是否以指定內(nèi)容開頭或結(jié)尾 四、替換指定的字符或者是字符串 五、獲取字符串的子串 六、將字符串轉(zhuǎn)換為字符數(shù)組 ?七、比較字符串的內(nèi)容是否相等 ?八、連接字符串 九、比較兩個字

    2024年02月20日
    瀏覽(28)
  • Java 新手如何使用Spring MVC 中的查詢字符串和查詢參數(shù)

    Java 新手如何使用Spring MVC 中的查詢字符串和查詢參數(shù)

    目錄 前言? ?什么是查詢字符串和查詢參數(shù)? Spring MVC中的查詢參數(shù)? 處理可選參數(shù) 處理多個值 處理查詢參數(shù)的默認(rèn)值 處理查詢字符串 示例:創(chuàng)建一個RESTful服務(wù)? 總結(jié) 作者簡介: ?懶大王敲代碼,計算機(jī)專業(yè)應(yīng)屆生 今天給大家聊聊Java 新手如何使用Spring MVC 中的查詢字符串

    2024年02月03日
    瀏覽(27)
  • Java中的List<T>對象與Json格式的字符串的相互轉(zhuǎn)換

    在這里我隨便舉一個例子 OK,以上就是互相轉(zhuǎn)換的過程 我使用的場景是在訂單的訂單列表項這里,涉及到數(shù)據(jù)庫相應(yīng)字段數(shù)據(jù)的存放與提取,我的做法是,將List轉(zhuǎn)換為Json格式字符串存入,取時再將Json格式轉(zhuǎn)為List

    2024年02月15日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包