【Java從入門到頭禿專欄 4】語法篇(三) :字符串 數組

目錄

1 String字符串

2 數組


1 String字符串

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

????????String常被稱作是不可變字符串類型,那么有人就有疑問了,我定義的字符串變量的值可以改變啊,原因是String的不可變在于:以""方式給出來的字符串對象在字符串常量池中存儲,你定義的字符串變量存儲的是地址值指向字符串對象,你看到字符串變量的值改變了是因為字符串變量存儲的地址值變了,但是字符串對象的值一直在字符串變量池中無法改變。

1.1 字符串對象的兩種創建方式

推薦使用第一種

??? 兩種方式的區別:第一種方式產生的字符串對象會在字符串常量池中存儲,且相同的內容只會在其中存儲一份。第二種方式產生的字符串對象會放在堆內存中,創建幾次就有幾個字符串對象。

1.2 String字符串常見面試題

??

?

?1.3 常用API:

1.4 字符串判等

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

1.5 空字符串和Null串

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

2 數組

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

2.1 數組的初始化

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

靜態初始化的格式如下:

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

動態初始化的格式如下:?

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

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

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

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

2.2 數組的底層原理? ??

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

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

數組名[索引]

還可以使用以下格式獲取數組的長度

數組名.length

數組的遍歷

?2.4 多維數組

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

二維數組的靜態初始化定義

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

二維數組的底層原理圖

二維數組元素的訪問

數組名[行索引][列索引]?

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

二維數組的長度

數組名.length

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

二維數組的遍歷

?二維數組的默認初始化值

二維數組的定義方式不同默認初始化值也不同

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

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

2.5 Arrays工具類

上一篇:

下一篇:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535131.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535131.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535131.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java從入門到頭禿專欄 8】語法篇(七) :反射 動態代理 注解

目錄 1 反射機制 2 反射的應用:動態代理 3 注解 1 反射機制 反射機制(Reflect Machanism),是指在程序運行期間借助Reflect API獲取任何類的內部信息,并能直接操作對象的內部屬性以及方法,Java本身而言是靜態語言但是由于Java反…

【SSM面向CRUD編程專欄 1】Spring簡介 xml配置文件 依賴注入 數據注入

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

【SSM面向CRUD編程專欄 2】Spring相關API 數據源(連接池)的配置 注解開發 整合junit

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

【SSM面向CRUD編程專欄 4】 Spring集成web環境 SpringMVC初識

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 ?…

IntelliJ IDEA里的項目搞崩了怎么辦,本地歷史版本回退拯救你崩潰的心靈

💥寫在前面: 如果你還沒有讀過雨果的悲慘世界也沒有讀過余華的活著,那你可以看看我今天早上的經歷,如果不想聽我胡侃的話,直接進入正題: 目錄 本地歷史的強大 今天早上打開IntelliJ IDEA繼續ssm模塊的代碼練…

【SSM面向CRUD編程專欄 5】使用SpringMVC進行數據響應以及獲取請求數據

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

【SSM面向CRUD編程專欄 6】springMVC攔截器、異常處理 jdbcTemplate

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

【SSM面向CRUD編程專欄 7】springAop 事務控制

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

【SSM面向CRUD編程專欄 8】一篇博客快速上手使用MyBatis進行CRUD

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

【SSM面向CRUD編程專欄 9】SSM框架整合

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

三萬字速通SSM框架入門知識點,快速上手CRUD

🛫更多ssm知識見SSM_面向CRUD編程專欄 🚕本博客總結自黑馬程序員的ssm框架視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 目…

無法在web.xml或使用此應用程序部署的jar文件中解析絕對uri:[http://java.sun.com/jsp/jstl/core]

問題簡介 本人是在進行一個ssm框架項目的編寫的時候,在數據庫中查詢到所有的商品信息并返回到頁面使用EL表達式進行展現,但是使用tomcat 9.0.58運行的時候報錯會出現以下報錯情況。 頁面報錯: 控制臺報錯: 解決方法 首先看看是不…

check the manual that corresponds to your MySQL server version for the right syntax to use near

首先判斷自己是在什么情況下報的錯,如果是MyBatis的SQL報錯的話,建議直接點擊目錄跳轉到MyBatis時SQL報錯,避免浪費時間。如果本文能夠對你有所幫助的話,還請在評論區多多支持 目錄 🍻運行SQL語句、SQL文件等報錯 &…

MyBatis的逆向工程工具,自動生成數據庫對應的POJO實體類、mapper接口、增刪改查mapper.xml文件

下載MyBatis的逆向工程工具,并解壓縮到一個不包含中文字符的文件夾下,我直接放到了D盤下,下載地址:MyBatis逆向工程工具下載 如何使用MyBatis的逆向工程工具 下載之后使用idea在一個新窗口中打開,選中工具文件之后&am…

『收藏向 期末SSM課設救急』 教你從搭建到測試運行手擼一個SSM項目實戰,附帶源碼,前端頁面、解析和一般遇到的問題(排雷)

🛫ssm知識學習見SSM_面向CRUD編程專欄 🚕本項目來自動力節點的【米米商城】 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 項目…

【SpringBoot 2】(一)基礎知識了解學習

🛫更多知識總結見SpringBoot 2專欄 🚕本篇知識點總結自尚硅谷雷神的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 ? 目錄…

【SpringBoot 2】(二)快速入門案例HelloWorld

🛫更多知識總結見SpringBoot 2專欄 ( 🚕本篇知識點總結自尚硅谷雷神的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 ? 目…

【SpringBoot 2】(三)SpringBoot相較于Spring的特點

🛫更多知識總結見SpringBoot 2專欄 🚕本篇知識點總結自尚硅谷雷神的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客主頁🚀🚀 ? 目錄…

井通swtc能不能漲到2元_買一支2塊到3塊之間的股票,買幾十萬股嗎?這樣操作效果怎么樣?...

有很多新股民有一種看法,認為高價股風險很大,那么可不可以買2到3元的低價股,是不是風險就很小,以后上漲的力度就會很大?這是很多股民都存在的一個誤區,也是很多股市的所謂高手的誤導,他們說&…

cad應用程序的組件中發生了未經處理的異常_什么是CAD/CAM?

與許多其他行業一樣,牙科技術的生產階段也越來越自動化。由于牙科實驗室工作的價格已成為治療計劃和治療的主要因素,因此自動化可以在西歐和美國等高薪地區實現更具競爭力的生產。現在,計算機技術的進步使高性價比的單件生產成為可能。近年來…