黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

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

更新時間:2022-11-23 08:53:14 來源:動力節(jié)點 瀏覽2578次

Java中的字符串類型

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

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

String

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

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

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

(1)符號常量;

(2)字面常量 “符號常量”是給常量起一個名字(符號)

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

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

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

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

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

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

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

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

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

String s3 = new String("hello");

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

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

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

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

String對象的值一旦確定,不能改變。

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

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

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

到了JDK8之后,這個char[]被優(yōu)化成了byte[]。因為不是所有的字符都需要2個字節(jié)的空間,很多只需要1個字節(jié)空間就可以了。

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

StringBuilder和StringBuffer

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

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

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

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

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

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

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

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 精品一区亚洲 | 免费可以看黄的视频 s色 | 福利社午夜剧场 | 欧美三级中文字幕hd | 精品中文字幕一区二区三区四区 | 色网址在线 | a视频在线观看 | 亚洲天堂视频在线播放 | 日韩欧美在线观看视频 | 国产精品1234区 | 91短视频版高清在线观看免费 | 成人私人影院在线观看网址 | 中国黄色一级大片 | 黄乱色伦短篇小说 | 国产禁女女网站免费看 | 好男人在线社区www在线视频一 | 国内自拍欧美 | 午夜视频免费观看黄 | 99超级碰碰成人香蕉网 | 免费的a级片 | a级高清观看视频在线看 | 欧美肥胖老女人 | 日本高清一区二区三区水蜜桃 | 国产在线观看不卡免费高清 | 日韩精品中文字幕久久 | 欧美日韩中 | 欧美成国产精品 | 簧片视频在线观看 | 亚洲一区免费观看 | 日本vs欧美一区二区三区 | 亚洲日本视频在线观看 | 中文字幕人成乱码在线观看 | 大又大又粗又爽又黄毛片女人 | 日本中文字幕免费 | 37pao成人国产永久免费视频 | 国内精品免费麻豆网站91麻豆 | 18av黄动漫在线观看 | 日韩一区二区视频在线观看 | 欧美一级片在线视频 | 亚洲欧洲日本天天堂在线观看 | 91香蕉国产视频 |