日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

【Java从入门到头秃专栏 4】语法篇(三) :字符串 数组

發(fā)布時間:2025/3/8 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java从入门到头秃专栏 4】语法篇(三) :字符串 数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

1 String字符串

2 數(shù)組


1 String字符串

? ? ? ? Java沒有內(nèi)置的字符串類型,而是在Java類庫中提供了一個預(yù)定義類--String。?在Java中把每一個使用雙引號括起來的字符串都看做是String類的一個實(shí)例化對象。

????????String常被稱作是不可變字符串類型,那么有人就有疑問了,我定義的字符串變量的值可以改變啊,原因是String的不可變在于:以""方式給出來的字符串對象在字符串常量池中存儲,你定義的字符串變量存儲的是地址值指向字符串對象,你看到字符串變量的值改變了是因?yàn)樽址兞看鎯Φ牡刂分底兞?#xff0c;但是字符串對象的值一直在字符串變量池中無法改變。

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

推薦使用第一種

??? 兩種方式的區(qū)別:第一種方式產(chǎn)生的字符串對象會在字符串常量池中存儲,且相同的內(nèi)容只會在其中存儲一份。第二種方式產(chǎn)生的字符串對象會放在堆內(nèi)存中,創(chuàng)建幾次就有幾個字符串對象。

1.2 String字符串常見面試題

??

?

?1.3 常用API:

1.4 字符串判等

? ? ? ? 字符串的值判等要用equals方法:字符串1.equals(字符串2),前面講過,字符串變量存儲的是字符串對象的地址,如果簡單地使用 == 進(jìn)行判等的話比對的是兩個字符串對象的地址值,有時候雖然兩個字符串的值相等,但是對象的地址值卻不一樣,返回的結(jié)果就與我們所期望的值判等結(jié)果所不一樣

1.5 空字符串和Null串

? ? ? ? 空字符串是""是長度為0的字符串,而Null串是變量值為null的String類型字符串變量。空字符串歸根結(jié)底也是一個字符串對象,但是Null串只是一個變量(還未與對象進(jìn)行關(guān)聯(lián)的變量)。有時候在對一個字符串進(jìn)行調(diào)用String字符串API的時候會報(bào)錯,原因就是Null串無法調(diào)用那些API,而空串調(diào)用API的意義也不大,所以說應(yīng)該使用if (str != null && str.length() != 0)判斷一下。

2 數(shù)組

????????數(shù)組就是用來存儲一批同種類型數(shù)據(jù)的內(nèi)存區(qū)域(可以借容器的概念方便理解),如果使用變量定義存儲很多相同類型且可以分為一組的數(shù)據(jù),會很繁瑣,此時使用數(shù)組簡便了代碼的書寫。

2.1 數(shù)組的初始化

????????數(shù)組的初始化分為靜態(tài)初始化和動態(tài)初始化,靜態(tài)初始化就是在數(shù)組定義的時候就直接給數(shù)組賦值,動態(tài)初始化就是先定義一個數(shù)組再初始化。

靜態(tài)初始化的格式如下:

?以上兩種靜態(tài)初始化的效果相同,但是一般實(shí)際開發(fā)中更喜歡使用第二種簡便寫法

動態(tài)初始化的格式如下:?

?? 定義數(shù)組時長度可以是0,長度為0的數(shù)組≠元素為null的數(shù)組

?? 數(shù)組定義完成之后,在未進(jìn)行賦值之前所有的元素會按照數(shù)據(jù)類型默認(rèn)初始化為相應(yīng)的值,整型:byte、short、int、long會初始化為0;字符型:char也初始化為0,只不過是0的字符形式計(jì)算機(jī)表示出來會亂碼;浮點(diǎn)型:float、double會初始化為0.0;布爾型:boolean會初始化為false;其他引用數(shù)據(jù)類型:String、類、接口、數(shù)組……會初始化為null

?? 使用數(shù)組名 = null的形式對數(shù)組變量進(jìn)行賦值之后,可以使用數(shù)組名輸出結(jié)果為null,但是使用數(shù)組名.length或者是數(shù)組名[索引]等方式時會拋NullPointerException (空指針異常)

?? 數(shù)組一旦定義出來,它的類型長度固定好了,若是存放其他類型的元素會在編譯時就無法通過,若是訪問長度以外的元素會拋IArrayIndexOutOfBoundsException (數(shù)組索引越界異常)。 但是數(shù)組中的元素值不固定,可以使用賦值的形式對數(shù)組中的元素進(jìn)行改變。?

2.2 數(shù)組的底層原理? ??

? ? ? ? 數(shù)組初始化的時候在內(nèi)存中創(chuàng)建一塊地址連續(xù)的區(qū)域(又叫創(chuàng)建一個數(shù)組對象)用于存儲元素,又創(chuàng)建一個數(shù)組變量底層存儲了數(shù)組對象的地址信息,數(shù)組通過地址去引用數(shù)組對象,故稱數(shù)組是一種引用數(shù)據(jù)類型。?2.3 數(shù)組的訪問和遍歷

????????數(shù)組中的所有元素都對應(yīng)著一個索引,以后再看到索引就應(yīng)該知道索引都是從零開始的,當(dāng)我們想要訪問數(shù)組元素的時候就可以使用以下方式來訪問。

數(shù)組名[索引]

還可以使用以下格式獲取數(shù)組的長度

數(shù)組名.length

數(shù)組的遍歷

?2.4 多維數(shù)組

? ? ? ? 多維數(shù)組就是數(shù)組作為數(shù)組的元素進(jìn)行存儲,常見的多維數(shù)組形式是二維數(shù)組,其他多維數(shù)組參考二維數(shù)組。二維數(shù)組就是一維數(shù)組作為數(shù)組的元素進(jìn)行存儲的形式,可以借助表格的概念幫助理解二維數(shù)組,借行列的概念理解二維。

二維數(shù)組的靜態(tài)初始化定義

?二維數(shù)組的定義可以不指定數(shù)組的列數(shù)但是不能不指定數(shù)組的行數(shù),除了以上四種二維數(shù)組的定義和初始化,還有下面兩種初始化格式但是并不推薦使用,除此之外其他都是錯誤的。

二維數(shù)組的底層原理圖

二維數(shù)組元素的訪問

數(shù)組名[行索引][列索引]?

比如說,有一個3行4列名為nums的二維數(shù)組[[1,2,3,4],[5,6,7,8],[9,10,11,12]],nums[2][3]訪問的就是行索引為2列索引為3的元素==>值為12。索引是從0開始的!nums[2]訪問的就是行索引是2的元素,因?yàn)槎S數(shù)組是數(shù)組下面存數(shù)組,故返回的是一個一維數(shù)組的地址值。

二維數(shù)組的長度

數(shù)組名.length

?? 通過以上形式獲取到的長度是二維數(shù)組的行數(shù),而數(shù)組名[行索引].length獲取到的是數(shù)組在該索引行的列數(shù)

二維數(shù)組的遍歷

?二維數(shù)組的默認(rèn)初始化值

二維數(shù)組的定義方式不同默認(rèn)初始化值也不同

????????如果定義語句為int[ ][ ] num = new int[3][2];的話,num[行索引][列索引]的輸出為0,num[行索引]的輸出是相應(yīng)的地址值;

????????如果定義語句是int[ ][ ] num = new int[3][ ];的話,num[行索引][列索引]的輸出為0,num[行索引]的輸出是null。

2.5 Arrays工具類

上一篇:

下一篇:

總結(jié)

以上是生活随笔為你收集整理的【Java从入门到头秃专栏 4】语法篇(三) :字符串 数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。