国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java中的字符串

songjz / 2646人閱讀

摘要:對(duì)引用的對(duì)象在運(yùn)行時(shí)拋出異常,空串是長(zhǎng)度為的字符串,和別的字符串的區(qū)別就是長(zhǎng)度為。一塊內(nèi)存空間,堆中地址相同不同輸出分配兩塊內(nèi)存空間,棧中地址不同輸出輸出輸出輸出解決方案類是可變的,不會(huì)再字符串常量池中,而在堆中。

1、JAVA中的字符串API詳解

String對(duì)象存儲(chǔ)字符串,String類位于java.lang包中.

String s="Hello world";
String s=new String();
String s=new String("Hello world");

String類length()方法,確定字符串長(zhǎng)度;數(shù)組length是屬性;

String類equals()方法,比較兩個(gè)字符串內(nèi)容是否一致(堆中數(shù)據(jù));而不是用“==”比較(棧地址比較),Java中特有...
equalsIgnoreCase()方法:判讀兩者是否相等,忽略大小寫(xiě);
toLowerCase():全部轉(zhuǎn)為小寫(xiě);
toUpCase():全部轉(zhuǎn)為大寫(xiě);

數(shù)字轉(zhuǎn)為字符串:String number=1+"";

字符串相加:使用“+”
使用String類concat()方法

String s=new String("你好,");
String name=new String("張三!");
String sentence=s.concat(name);

注意:s.concat(name)返回值為連接后的字符串,而s并未變化!

trim()方法:去掉字符串中空格【前后空格去除,中間不去除】

字符串提取:public int indexOf(int ch)、public int indexOf(String value) 搜索第一個(gè)出現(xiàn)的字符ch(或字符串value);
public int lastIndexOf(int ch)、public int lastIndexOf(String value) 搜索最后一個(gè)出現(xiàn)的字符(或字符串value)【字符串中可能存在相同字符】;

public String substring(int index):提取從位置索引開(kāi)始的字符串部分【包括index】

public String substring(int beginindex,int endindex):提取從beginindex開(kāi)始,endindex結(jié)束字符串部分【含beginindex,不含endindex】

split(String value)方法:拆分字符串,分隔符是value,部分分隔符與正則表達(dá)式?jīng)_突:比如“|”,需要轉(zhuǎn)義“|”;

String caseString="ab,cde,fg";
String[] array=caseString.split(",");
for (String item:array) {
    System.out.println(item);
}

注意:空串與null區(qū)別,對(duì)未初始化的對(duì)象操作會(huì)被編譯器擋在門(mén)外;null是一個(gè)特殊的初始化值,是一個(gè)不指向任何對(duì)象的引用。對(duì)引用null的對(duì)象在運(yùn)行時(shí)拋出異常,空串是長(zhǎng)度為0的字符串,和別的字符串的區(qū)別就是長(zhǎng)度為0。

2、JAVA字符串不變性與常量池

字符串不變性:字符串內(nèi)存地址一旦分配之后,字符串是只讀的,不允許更改;字符串更改實(shí)際是開(kāi)辟新內(nèi)存空間,棧指針斷開(kāi)指向新空間;舊控件編程垃圾!

常量池:String的不變性機(jī)制顯然會(huì)在String常量?jī)?nèi)有大量的冗余。因此,Java為了更有效地使用內(nèi)存,JVM留出一塊特殊的內(nèi)存區(qū)域,被稱為“String常量池”。
譬如String a="abc",當(dāng)你定義這樣的變量時(shí),java會(huì)先去常量池尋找有沒(méi)有""abc"這樣的字符串,如果有,直接把內(nèi)存地址交給a,否則生成一個(gè)"abc"的字符串。當(dāng)下一個(gè)String b="abc"時(shí),JVM不會(huì)再次生成"abc",而是直接將"abc"引用給b,所以你會(huì)發(fā)現(xiàn)a==b。

Demo:

//一塊內(nèi)存空間,堆中地址相同不同
String str1="java";
String str2="java";
System.out.println(str1==str2);
輸出:true.

//分配兩塊內(nèi)存空間,棧中地址不同
String str1=new String("java");
String str2=new String("java");
System.out.println(str1==str2);
輸出:false.

String str1="java";
String str2="blog";
String s=str1+str2;
System.out.println(s=="javablog");
輸出:false.

String s="java"+"blog";
System.out.println(s=="javablog");
輸出:true.

String str2="blog";
String s="java"+str2;
System.out.println(s=="javablog");
輸出:false.

解決方案:
- StringBuffer類是可變的,不會(huì)再字符串常量池中,而在堆中。如果緩沖區(qū)溢出,容量自動(dòng)增大,固定容量為16。
- StringBuilder

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/64057.html

相關(guān)文章

  • Java JDK11中的新API

    摘要:將參數(shù)的所有字節(jié)寫(xiě)入輸出流兩個(gè)允許指定的新構(gòu)造函數(shù)。四個(gè)允許指定的新構(gòu)造函數(shù)。返回從此字符串中提取的行的流,由行終止符分隔。如上所述,使用指定的將字符編碼為字節(jié)。返回此表示的執(zhí)行客戶端中的包裝原因,如果原因不存在或未知,則返回。 有關(guān)API更改的完整列表,可在Github上獲得。 這里列出的是除了java.net.http和jdk.jfr模塊之外的所有新方法。沒(méi)有列出java.secu...

    pepperwang 評(píng)論0 收藏0
  • JavaScript中的正則表達(dá)式

    Javascript的正則表達(dá)式是前端中比較重要的部分,正則表達(dá)式主要用于字符串處理,表單驗(yàn)證等場(chǎng)合,實(shí)用高效,文章主要對(duì)JavaScript中的正則的學(xué)習(xí)與總結(jié) 正則表達(dá)式的定義 正則表達(dá)式:是一個(gè)描述字符模式的對(duì)象,JavaScrip中正則表達(dá)式用RegExp對(duì)象表示,可以使用RegExp構(gòu)造函數(shù)來(lái)創(chuàng)建正則對(duì)象 正則表達(dá)式的創(chuàng)建 1.字面量創(chuàng)建 var reg = /[a-z]/; 2.構(gòu)...

    _Zhao 評(píng)論0 收藏0
  • java:String

    摘要:類是類它內(nèi)部的方法也默認(rèn)被修飾不能重寫(xiě)字符串常量池當(dāng)這樣聲明一個(gè)字符串會(huì)檢測(cè)字符串常量池中是否存在這個(gè)值的字符串如果存在就直接賦值給否則創(chuàng)建一個(gè)新的再賦值給當(dāng)連續(xù)用同樣的方式聲明兩個(gè)字符串并作比較結(jié)果為這個(gè)操作符比較的是什么對(duì)于基本變量比較 String類是final類,它內(nèi)部的方法也默認(rèn)被final修飾,不能重寫(xiě). 字符串常量池 當(dāng)這樣聲明一個(gè)字符串 String str = h...

    U2FsdGVkX1x 評(píng)論0 收藏0
  • 最最最常見(jiàn)的Java面試題總結(jié)——第二周

    摘要:與都繼承自類,在中也是使用字符數(shù)組保存字符串,,這兩種對(duì)象都是可變的。采用字節(jié)碼的好處語(yǔ)言通過(guò)字節(jié)碼的方式,在一定程度上解決了傳統(tǒng)解釋型語(yǔ)言執(zhí)行效率低的問(wèn)題,同時(shí)又保留了解釋型語(yǔ)言可移植的特點(diǎn)。 String和StringBuffer、StringBuilder的區(qū)別是什么?String為什么是不可變的? String和StringBuffer、StringBuilder的區(qū)別 可變性...

    yearsj 評(píng)論0 收藏0
  • 《深入理解Java虛擬機(jī)》(二)Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)

    摘要:虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)分為以下幾個(gè)部分。程序計(jì)數(shù)器也是在虛擬機(jī)規(guī)范中唯一沒(méi)有規(guī)定任何異常情況的區(qū)域。在方法運(yùn)行期間不會(huì)改變局部變量表的大小。長(zhǎng)度在位和位的虛擬機(jī)中,分別為官方稱它為。 Java虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū) 詳解 2.1 概述 本文參考的是周志明的 《深入理解Java虛擬機(jī)》第二章 ,為了整理思路,簡(jiǎn)單記錄一下,方便后期查閱。 2.2 運(yùn)行時(shí)數(shù)據(jù)區(qū)域 Java虛擬機(jī)在Java程序運(yùn)行時(shí)...

    draveness 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

songjz

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<