==和equals判等、空串和null串、字符串常用API

💡涉及的知識點速通

  • 🛫 關于變量和常量你都知道啥?
  • 🛫 &和&&、|和||有什么區別?
  • 🛫 關于字符串的問題你能答對幾道?
    • 🪂 可以修改一個字符串中的值嗎?
    • 🪂 字符串使用==和equals判等的區別?
    • 🪂 空串""和null串有啥區別?
    • 🪂 這些String的常見API你都掌握了嗎?
    • 🪂 String StringBuilder StringBuffer都是啥?

??各位小伙伴們大家好,歡迎來到這個小扎扎的《Java核心技術 卷Ⅰ》筆記專欄,在這個系列專欄中我將記錄淺學這本書所得收獲,鑒于 看到就是學到、學到就是賺到 精神,這波簡直就是血賺

扎哇太棗糕的博客首頁
在這里插入圖片描述

🛫 關于變量和常量你都知道啥?

變量
首先,變量的聲明遵循以下規范:

  • 只能包含字母、數字、美元符(“$”)、下劃線(“_”),但是不能以數字開頭,且"$“和”_"并不推薦在命名的時候使用
  • 不能使用Java中的保留字
  • 變量的命名區分大小寫
  • 雖不強制要求,但是盡量使用小駝峰(第一個單詞首字母小寫其他單詞的首字母大寫)命名

??其次,Java支持一次聲明多個變量但并不提倡,因為這種形式會降低程序的可讀性(int i, j;),可以使用逐一聲明的形式,而且變量的聲明要盡可能的靠近變量第一次使用的地方
??最后,變量聲明之后還必須要進行初始化才能使用,否則會編譯器就會認為這個變量的使用是非法的。變量的初始化有三種機制:

  • 構造器:Java中如果沒有在構造器中顯式的為字段設置初始值的話,就會將其設置成默認值,也就是不同數據類型數據所對應的默認值
  • 顯式賦值:也就是最常見的使用等于號
  • 初始化代碼塊:Java中將類中使用花括號包裹起來的幾行代碼稱為是初始化代碼塊,初始化代碼塊隨著類的加載而加載,只要構造這個類的對象就會執行這個塊里的代碼。而且初始化代碼塊中的代碼會在main方法之前執行,初始化代碼塊中定義的變量和構造器一樣有默認值機制

??類變量(static修飾的變量)、實例變量可以使用構造器、顯式賦值和初始化塊三種機制進行初始化,但是局部變量則只能也必須使用賦值語句進行顯式初始化。在這里插入圖片描述常量
??Java中常量必須在main方法的外部使用final進行定義,常量定義的時候必須進行初始化,一旦初始化之后就無法改變值的大小,且常量的命名必須全部大寫。在這里插入圖片描述靜態變量和靜態常量
??靜態變量也叫類變量是使用static修飾的變量,靜態變量屬于類而不屬于任何單個的對象,也就是說即使不創建該類的對象這個靜態變量依然存在,不管創建多少個對象都是共享這一個靜態變量。非靜態變量也就是實例變量就不一樣了,實例對象屬于對象,必須使用對象調用無法直接調,每創建一個對象都會得到一個實例變量的副本,不同對象之間互不影響在這里插入圖片描述??靜態常量的使用頻率要明顯高于靜態變量,在靜態常量定義的時候往往都會加上final修飾,這樣的話它既可以被其他類直接使用類名調用,又不用擔心字段值被調用后隨意修改產生的安全問題。之前輸出語句的時候使用的out就是一個final修飾的PrintStream類型的靜態常量,PrintStream類里又內置了print、println、printf等方法用于輸出

🛫 &和&&、|和||有什么區別?

??&(邏輯與)和(邏輯或)是邏輯運算符,&&(短路與)和||(短路或)是短路邏輯運算符。這兩種運算符對應的的運算結果相同,與運算的話是全真為真、有假則假,或運算的是全假為假、有真則真。兩種類型的運算符區別在于:邏輯運算符會執行完左右兩邊的表達式之后返回一個結果,短路邏輯運算符當能夠得到結果的時候就會直接返回,也就是說短路與的左邊結果為false就會直接返回false,短路或的左邊結果為true就會直接返回true
在這里插入圖片描述??補充一種進行位移運算的位運算符,位移運算就是對一個數值的二進制表示進行左右移動的運算,其中>>表示右移高位符號位補充,<<表示左移低位補0,>>>則是右移高位補0,注意:并沒有<<<這個運算符

🛫 關于字符串的問題你能答對幾道?

🪂 可以修改一個字符串中的值嗎?

??不能。因為Java中字符串并不是內置的數據類型,而是標準Java類庫中提供的一個預定義類。字符串不只一種使用new的實例化方式,使用雙引號(“”)括起來的字符都是String類的一個實例,使用new方式實例的對象對分配在堆內存中,使用雙引號實例的對象在常量池中,字符串變量的值則是字符串對象的地址引用,不管使用哪種方式給字符串變量重新賦一個新值都是看上去改變了這個字符串的值,實際上只不過是改變了變量值的地址引用,原來的字符串對象還在內存中存儲且值不變
在這里插入圖片描述??由上圖就得以驗證我們之前的結論是正確的,使用雙引號實例化的字符串對象存儲在字符串常量池中,所以連續創建兩個內容相同的字符串會指向同一個地址。而且使用new實例化的字符串對象存儲在堆內存中,所以說使用兩種方式實例化內容相同的字符串對象,地址會不同。接下來的三種方式改變字符串的內容,地址都和原地址不同,也就是證實了字符串是一個不可變的數據類型

🪂 字符串使用==和equals判等的區別?

??==是對兩個字符串變量的引用地址值是否相等進行判斷,就算字符串的內容相等如果存儲的位置不同也會返回false。String類中重寫了Object的equals方法使之可以對字符串的內容進行判等,查看源碼不難發現重寫之后的equals方法是對兩個字符串的地址、長度、每一個字符順序進行判斷,在判斷的過程中但凡有一個不等就直接返回false。
在這里插入圖片描述??趁熱打鐵,結合字符串的兩種實例化方式和兩種判等方式找幾個題做做,答案放在文末了,記得去對照一下在這里插入圖片描述??補充一個知識點,如果想忽略字母大小寫比較兩個字符串的內容是否相等,可以使用equalsIgnoreCase方法,用法與equals相同

🪂 空串""和null串有啥區別?

??空串是一個長度為0內容為空的字符串,屬于是一個字符串對象;null串表示這個變量并未引用任何的對象或者基本數據類型值,屬于是一個供引用數據變量引用的值。空串引用String的API 會返回值,但是null串調用String的API 的話會報NullPointerException的錯誤。一般情況下都會使用if(str != null && str.length() != 0)對字符串進行檢查,符合條件才會使用這個字符串。
在這里插入圖片描述

🪂 這些String的常見API你都掌握了嗎?

在這里插入圖片描述??拓展一個compareTo方法,該方法會對比兩個字符串并返回一個int數值,對比規則:從第一個字符開始相比較,返回第一個不同的兩個字符的ASCII碼的差值(前減后),如果說一個字符串是另一個的字串就返回二者的長度差在這里插入圖片描述

🪂 String StringBuilder StringBuffer都是啥?

??這三種都是Java中用來操作字符串的類。區別就是String聲明一個不可變的對象,每次操作都會生成一個新的對象,并將新的對象地址賦給原來的字符串變量,而StringBuilder和StringBuffer都是在原來的對象上進行操作并不會產生新的對象,所以說在需要經常改變字符串內容的情況下最好使用這兩種類。在這里插入圖片描述??StringBuilder和StringBuffer也是有區別的,StringBuffer線程安全但是性能相對較差,StringBuilder線程不安全但是性能較高,于是單線程的情況下推薦使用StringBuilder,多線程的話就使用安全的StringBuffer


字符串的兩種實例化方式和兩種判等方式的問題答案在這里插入圖片描述

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

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

相關文章

倆臺電腦怎么設置同一局域網_方法 | 把手機上的照片傳到電腦上

我想把手機上的照片/視頻傳到電腦上怎么辦? 什么云盤&#xff0c;手機助手等等全扔到一邊去&#xff0c;不用。請讓我慢慢道來&#xff1a;現在&#xff0c;人們手機用的越來越多&#xff0c;即使在大街上&#xff0c;到處都是“低頭族”。但是&#xff0c;有好多小伙伴問&…

數據持化技術的發展演變(SQL、JDBC、mybatis)

文章目錄1 簡單SQL語句1.1 查詢1.2 新增1.3 修改1.4 刪除1.5 多表查詢2 JDBC2.1 什么是JDBC2.2 什么是jar和maven2.3 JDBC的使用2.4 JDBC總結3 mybatis3.1 什么是ORM?為什么是ORM不是JDBC&#xff1f;3.2 mybatis的使用3.3 mybatis總結4 mybatis與jdbc的邏輯相同處環境配置 j…

傳統蒙文字體_蒙古要改回使用傳統回鶻蒙文,這是種什么文字,蒙古為什么要改回...

喜歡就點關注吧!文字是一個國家的文化象征&#xff0c;也是其書面交流的主要工具&#xff0c;世界上的大多數國家都有自己獨特的文字&#xff0c;我們的鄰國蒙古也是如此&#xff0c;近日蒙古國實行了一場意義重大的文字改革&#xff0c;據新華社烏蘭巴托3月18日報道&#xff0…

三態輸出門實驗報告注意事項_數電基礎知識:各種IO輸出的類型

集電極開路(OC)集電極開路輸出的結構如圖1所示&#xff0c;右邊的那個三極管集電極什么都不接&#xff0c;所以叫做集電極開路&#xff1b;左邊的三極管為反相之用&#xff0c;使輸入為“0”時&#xff0c;輸出也為“0”。對于圖 1&#xff0c;當左端的輸入為“0”時&#xff0…

數據持久化技術——MP

文章目錄1 環境搭建1.1 創建一個maven的project1.2 pom.xml文件導入web開發依賴1.3 創建SpringBoot項目的主程序入口2 代碼生成器3 配置數據庫4 導入前端頁面5 開始前端控制器的編碼5.1 wrapper構造器mybatis-plus(簡稱 MP)是一個 MyBatis的增強工具&#xff0c;在 MyBatis 的基…

win7無法連接打印機拒絕訪問_如何解決局域網無法訪問SQL Server 2008 無法連接到(local)...

初次安裝使用SQL server 2008時&#xff0c;可能會遇到無法連接到(local)的情況。那么&#xff0c;如何解決此問題&#xff1f;工具/原料: SQL server 2008方法/步驟1. 打開SQL server 配置管理器-->SQL server 網絡配置-->實例名的協議(我的實例名為SQLEXPRESS)。2. 將S…

windows進程管理器_任務管理器就能搞定9成的電腦問題?方法在這里!

90% 對于電腦的不滿&#xff0c;都逃不出這幾個方面&#xff1a;電腦狀態無法隨時監測、運行卡頓、開機時間長、莫名黑屏、電池關鍵時刻不扛使(筆記本電池怎么保養&#xff1f;能不能一直插電源充電&#xff1f;可以戳這里→)&#xff0c;很多小伙伴就選擇安裝第三方軟件來解決…

三維網格精簡算法java版_ISMAR 2020 | 商湯提出手機端實時單目三維重建系統

導讀&#xff1a;商湯研究院和浙江大學CAD&CG國家重點實驗室合作研發了一個手機端實時單目三維重建系統Mobile3DRecon。與現有的基于RGBD的在線三維重建或離線生成表面網格的系統不同&#xff0c;該系統結合前端位姿跟蹤結果&#xff0c;允許用戶使用單目攝像頭在線重建場景…

【分類匯總】idea快捷鍵、idea配置、常用插件

寫在前面 千萬別看目錄很長就感覺本篇博客很絮叨繁瑣&#xff0c;里面多是配置的講解貼了很多的圖片方便大家了解&#xff0c;配置成功一次之后就可以一直使用了。 快捷鍵的使用建議大家先看&#xff0c;后續敲代碼的時候刻意的使用快捷鍵&#xff0c;相信經過兩三天的使用就可…

win10設置默認輸入法_個性化設置技巧

個性化設置技巧子墨居士前言本次內容主要是win10系統自帶的功能&#xff0c;不是用第三方軟件優化桌面的情況下&#xff0c;讓自己的電腦桌面能更美觀、更舒服。系統自身的個性化設置主要是下圖中的幾個。鼠標右擊->個性化設置。 第三方軟件的效果會更好&#xff0c;畢竟是專…

什么叫組網_家庭wifi,如何組網最合適

wifi信號通過電磁波在空中傳播的&#xff0c;屬于微波通信的一種&#xff0c;因為微波本身及發射功率的限制&#xff0c;導致wifi的穿透能力比較差&#xff0c;北方比較厚的承重強&#xff0c;鐵門、家具等對都會對wifi信號有較強的削弱作用。穿過的障礙物越多&#xff0c;這種…

java輸入輸出、數組初始化

&#x1f4a1;涉及的知識點速通&#x1f6eb; 關于輸入輸出你都知道啥?&#x1f6eb; 關于控制路程都需要注意啥?&#x1f6eb; 關于數組的問題你能答對幾道&#xff1f;&#x1fa82; 數組初始化的小細節你都知道嗎?&#x1fa82; 這些Arrays的常見API你都掌握了嗎?&#…

linux rm 命令刪除文件恢復_Linux之恢復誤刪除文件

前言每當我們在生產環境服務器上執行rm命令時&#xff0c;總是提心吊膽的&#xff0c;因為一不小心執行了誤刪&#xff0c;然后就要準備跑路了&#xff0c;畢竟人不是機器&#xff0c;更何況機器也有 bug。那么如果真的刪除了不該刪除的文件&#xff0c;比如數據庫、日志或執行…

ac2100 反彈shell無法粘貼_記一次突破反彈shell

背景某天閑著無聊&#xff0c;小伙伴發來一個某網站&#xff0c;說只能執行命令&#xff0c;不能反彈shell。測試對著目標站點一頓測試。發現確實存在shiro反序列化&#xff0c;并且存在可以利用的gadget。利用發現確實可以執行命令&#xff0c;但是我們執行反彈的時候。反彈不…

java三大特征 重載與重寫的區別

&#x1f4a1;涉及的知識點速通&#x1f6eb; OOP的三大特征都是什么?&#x1fa82; 什么是封裝?&#x1fa82; 什么是繼承?&#x1fa82; 什么是多態?&#x1f6eb; 關于構造器你都知道什么?&#x1f6eb; 關于類的源文件都需要知道什么?&#x1f6eb; 重載和重寫都是什…

發生身份驗證錯誤_Python MySQL8.0 錯誤

Python MySQL8.0 錯誤&#xff1a;authentication plugin calling_sha2_password is not supported.Python3 進行到 python3 mysql(mysql-connector)&#xff0c;然后安裝mysql-8.0.16&#xff0c;照著示例程序運行 python&#xff0c;遇到這個大大的問題&#xff1a;authentic…

vue 獲取當前元素的父元素_react獲取觸發元素的屬性 e.target.dataset

我的react項目中一個應用場景就是在點擊一個元素的時候想要獲取到這個元素的屬性。代碼如下&#xff1a;renderyear()>{return(<div><div data-value"年初">年初</div> </div>);}//點擊標簽的時候觸發的函數 TagClick(e)>{console.log…

為什么要學Redis(NoSQL數據庫)

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站尚硅谷的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&…

centos常用命令_二、Docker鏡像是什么?Docker常用命令

科技奇聞 關注讓你我共同進步文章來源&#xff1a;CSDN作者&#xff1a;IronmanJayDocker常用命令1.幫助命令docker version #查看版本號docker info #顯示Docker系統信息&#xff0c;包括鏡像和容器數docker --help #查看Docker有哪些命令…

實現定時中斷_無線傳感器網絡實驗報告(二)Timer定時應用實驗

實驗二&#xff1a; Timer定時應用實驗2.1實驗目的1. 認識并了解 CC2530 定時器&#xff1b; 2. 學習定時器的基本配置與應用&#xff1b; 3. 在 ZigBee 模塊上運行定時器程序。2.2實驗原理根據數據手冊可知 CC2530 總共有 4 個定時器&#xff0c;但是定時器 2 被系統占用&…