大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 一文看懂Java字符串?dāng)?shù)據(jù)類型都有哪些

一文看懂Java字符串?dāng)?shù)據(jù)類型都有哪些

更新時(shí)間:2022-11-23 08:53:14 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2589次

Java中的字符串類型

在Java中一共提供了三種類型可以表示字符串:String、StringBuilder、StringBuffer。

要談?wù)摓槭裁从腥齻€(gè)字符串類型,我們要先聊聊String的一些特性。

String

1.String是唯一一個(gè)設(shè)計(jì)了字面常量的引用數(shù)據(jù)類型

String str = "hello";
System.out.println("請(qǐng)輸入:");

回顧: 常量指的是不能修改變化的數(shù)據(jù)量,與它對(duì)應(yīng)的是變量。常量分兩種:

(1)符號(hào)常量;

(2)字面常量 “符號(hào)常量”是給常量起一個(gè)名字(符號(hào))

final int STUDENT_NUM = 50;
final double PI = 3.14;
final double PRICE = 3.14;

為什么要給常量起名字? 把業(yè)務(wù)含義帶入到數(shù)據(jù)量當(dāng)中; 便于修改,一改全改;

“字面常量”其實(shí)更常用,但也更容易被忽略。 當(dāng)我們?cè)诖a中出現(xiàn):5L,-19,3.4,3.14f,'A',"你的年齡是:"。 所以,注意--字面常量的特點(diǎn),特別是它的字面書(shū)寫(xiě)形式代表了數(shù)據(jù)類型。

言歸正傳,我們可以很容易的發(fā)現(xiàn)幾乎所有的字面常量都是基本數(shù)據(jù)類型,唯有String這個(gè)引用數(shù)據(jù)類型擁有一個(gè)字面常量的設(shè)計(jì)!

2.String擁有一個(gè)“字符串常量池”的設(shè)計(jì)

由于String的使用量非常大,所以對(duì)于String的字面常量,Java在設(shè)計(jì)的時(shí)候?qū)iT提供的了一個(gè)“常量池”來(lái)優(yōu)化。 “池”技術(shù),是你們現(xiàn)在第一次接觸,但以后會(huì)大量的出現(xiàn)。所謂池,就是預(yù)先在內(nèi)存當(dāng)中放置一系列的對(duì)象(字符串常量池就是放的字符串常量對(duì)象)。當(dāng)需要使用的時(shí)候,不用臨時(shí)去創(chuàng)建,而是從池當(dāng)中取一個(gè)來(lái)用就可以了。

JVM會(huì)在加載的時(shí)候,把加載到的類代碼當(dāng)中,所有書(shū)寫(xiě)的字符串常量對(duì)象,預(yù)存到一個(gè)專門的內(nèi)容空間---"字符串常量池"。然后開(kāi)始執(zhí)行指令語(yǔ)句,當(dāng)需要用到這個(gè)字符串常量對(duì)象的時(shí)候,就直接到常量池中去取。 演示

    String s0 = "hello";
    String s1 = "hello";

此時(shí),在加載期,就會(huì)在常量池當(dāng)中產(chǎn)生一個(gè)String類型的對(duì)象,里面的值是hello。然后運(yùn)行起來(lái)以后,s0和s1都會(huì)被賦值為這個(gè)對(duì)象的引用。所以,用"=="比較的時(shí)候,我們能得到true。

String s3 = new String("hello");

由于使用了new的語(yǔ)法,那么會(huì)在內(nèi)存的堆當(dāng)中產(chǎn)生一個(gè)全新的String對(duì)象,里面的字符值是hello。

String判斷非空,應(yīng)該判斷兩個(gè)條件。

其他的引用數(shù)據(jù)類型,只需要判斷是否“==”null;但是String有一種特殊性,它可能不為null,但是指向的String對(duì)象里面沒(méi)有存放字符數(shù)據(jù),是一個(gè)空串。 所以String判斷非空要用兩個(gè)條件

  //如果輸入為空
if(str == null || str.equals("")){
  
}
  //如果輸入不為空
if(str != null && !str.equals("")){
}      

String對(duì)象的值一旦確定,不能改變。

String的這個(gè)特點(diǎn)其實(shí)是和String的源代碼設(shè)計(jì)有關(guān)系。我們可以把String看成是一個(gè)封裝的char[]。

public final class String{?
    private final char[] value;    
    /*
        還有其他屬性和一大堆的方法。
    */?
}

在這個(gè)設(shè)計(jì)當(dāng)中,我們可以看到字符串中的數(shù)據(jù)值是被作為屬性存在的,而且該屬性是私有的,所以外部不能直接操作,要利用String提供的方法來(lái)操作;同時(shí)該屬性是final的,所以它的值不能被修改。

到了JDK8之后,這個(gè)char[]被優(yōu)化成了byte[]。因?yàn)椴皇撬械淖址夹枰?個(gè)字節(jié)的空間,很多只需要1個(gè)字節(jié)空間就可以了。

這種內(nèi)容不可更改的特性又會(huì)照成一個(gè)新的問(wèn)題,當(dāng)我們大量的在程序中做字符串拼接或需要修改字符串內(nèi)容的動(dòng)作時(shí),就會(huì)產(chǎn)生很多字符串對(duì)象。 所以,Java又設(shè)計(jì)了新的字符串類型專門解決這個(gè)問(wèn)題。

StringBuilder和StringBuffer

StringBuilder 是在JDK5當(dāng)中,提出來(lái)的一個(gè)輔助String的字符串類型。它最大的特點(diǎn)是:內(nèi)容可變。 注意:StringBuilder不是String類型,是一種新的類型,所以如下代碼都是錯(cuò)的:

StringBuilder sb = "hello";
System.out.println(sb + "world");

由于StringBuilder是為了彌補(bǔ)String在內(nèi)容不可變上的缺點(diǎn),所以它提供的方法幾乎都是對(duì)內(nèi)容的修改方法。

1.append()方法 它的作用是在字符串的尾部添加內(nèi)容。為了能夠?qū)⒍喾N數(shù)據(jù)類型都方便的添加到尾部,提供了大量的重載方法。

2.delete()方法 它的作用是在字符串中刪掉指定從開(kāi)始下標(biāo)到結(jié)束下標(biāo)的內(nèi)容。

3.insert()方法 它的作用是在字符串中指定位置插入新的內(nèi)容。它的第一個(gè)參數(shù)就是插入位置的下標(biāo)。

4、replace()方法 它的作用是把字符串中指定位置的內(nèi)容替換為新的內(nèi)容。StringBuffer也是一個(gè)可變的字符串序列,它和StringBuilder的構(gòu)造、提供的行為完全一樣。唯一的區(qū)別就是:StringBuffer是線程安全的。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 色优久久 | 狠狠做狠狠做综合日日 | 奇米在线观看 | 人人干人人舔 | 久久99亚洲精品久久久久网站 | 337p色噜噜 | 国产三级观看久久 | 99热久久这里只精品国产9 | 国产成人精品在线 | 欧美美女xnxx| 4399一级成人毛片 | 国产成人99 | 国产精品一二区 | 一区二区精品视频 | 色综合色狠狠天天综合色hd | 欧美亚洲国产第一页草草 | 欧美怡红院免费全部视频 | 久久精品视频一区二区三区 | 国产欧美精品一区aⅴ影院 国产欧美精品一区二区 | 精品国产午夜久久久久九九 | 狠狠干人人插 | 天天摸日日碰天天看免费 | 国产福利免费观看 | 国产欧美精品区一区二区三区 | 青青青爽线在线视频观看 | 天天射天天搞 | 日韩亚洲欧美性感视频影片免费看 | 亚洲综合色dddd26 | 久久免费网 | 成人看的一级毛片 | 久久国产乱子伦精品免费不卡 | 日韩国产欧美视频 | 日本亚洲一区二区三区 | 天天天天干 | 草莓视频caomei888 | 国产精品久久久久久久久久日本 | 亚洲一级免费视频 | 日韩精品欧美高清区 | 在线国产你懂的 | 久操免费在线视频 | jazz欧美人免费xxxxxx |