string 長度_String源碼解析

26506bda5147aef085de9d32f287505c.png

本章源碼分析基于JDK1.7

實現的接口

String類被final修飾詞修飾,代表不可修改的特性,它實現了三個接口,Serializable是序列化接口,Compareble是排序接口,Char是字符序列接口。

39b998b6f0b6eaa8b83b35288f14782b.png

主要成員變量

char[]:String通過char[]來實現String的各種功能,字符串由字符數組實現。

hash:用于緩存hash值,因為String類是final不可修改的,所以hash值也是固定的,為了避免重復計算hash值而緩存。

CASE_INSENSITIVE_ORDER:排序器,由上可知String類實現了Compareble接口,這里的Comparator用于忽視大小寫的字符串的比較。

dd91bcc424ad6a4bc8459bd4668d1ec7.png

構造函數

String共有15個重載構造函數,入參這幾種:空、char[]、String、StringBuffer、StringBuilder、byte[],通過這些來構造字符串對象。

daa3b6b24115e35149ae4bf000623dcf.png

length方法

通過獲取char[]的長度來獲取字符串的長度

4bdee031f7e37f355156a4a5d268c423.png

isEmpty方法

通過判斷char[]的長度是否為0來判斷是否為空

7f449961bd8047998456530f6aafba32.png

charAt方法

通過char[]數組下標獲取到對應位置的char字符

db4830a53ad137de28aeab21f35d05b6.png

equals方法

首先比較內存地址,再判斷是否是String類型,然后再判斷長度,最后逐個比較其中的char。

f32ed38dedf7fc612824ecb3df71d806.png

hashCode方法

這里的hash值計算有個特點,就是String內部緩存了hash值,如果hash值不為0則直接返回,不需要再次進行計算,因為String是被final修飾的,它不會被修改,所以沒有必要每次都重新計算hash值。

48362caf3fe652290ede42984e3983e3.png

compareTo方法

通過兩個字符串的第一個不一樣的字符來比較大小并返回結果,若兩個字符串的字符都一樣則比較兩個字符串的長度。

ec746f67c9f6aeb511312081c1874465.png

原作者:呆某人

原出處:CSDN

原文鏈接:String源碼解析_w8827130的博客-CSDN博客

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

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

相關文章

將你一張表的值覆蓋_山西聯通攜手華為完成長風商務區宏微協同,立體覆蓋,打造5G精品網絡...

近日,中國聯通山西分公司(以下簡稱“山西聯通”)在太原長風商務區繼5G CA超高速率升級之后,又針對長風商務區兩層活動區域進行了5G宏微協同的立體覆蓋,實現了該區域5G網絡的連續部署。長風商務區建筑結構設計新穎,占地面積3.06平方…

16速 java_不停歇的 Java 即將發布 JDK 16,新特性速覽!

之前在 JDK 15 中預覽的密封類和接口限制其余類和接口能夠擴展或實現它們。該計劃的目標包括,容許類或接口的做者控制負責實現它的代碼,提供比訪問修飾符更聲明性的方式來限制超類的使用,以及經過提供模式分析的基礎來支持模式匹配的將來方向…

局域網內文件傳輸速度_詳解蒲公英路由器組網 實現文件共享

蒲公英路由器,除了具備普通路由器的功能之外,如圖:最大的特色是可以實現智能組網:最大的特色是可以實現智能組網:采用全新自主研發的Cloud VPN技術替代傳統VPN,基于SD-WAN智能組網方案,快速組建…

java emoji顯示亂碼_Java 解決Emoji表情過濾問題

Emoji表情從三方數據中獲取沒有過濾,導致存入DB的時候報錯。原因:UTF-8編碼有可能是兩個、三個、四個字節。Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,所以數據插不進去。方法1.將已經建好的表也轉換成utf8mb42&#xff0…

mongotemplate中save拋出異常_異常處理的三個好習慣 | Python 工匠

文 | piglei 編輯 | EarlGrey推薦 | 編程派(微信ID:codingpy)前言如果你用 Python 編程,那么你就無法避開異常,因為異常在這門語言里無處不在。打個比方,當你在腳本執行時按 ctrlc 退出,解釋器就會產生一個 KeyboardI…

java 百度網盤上傳_使用pcs api往免費的百度網盤上傳下載文件的方法

百度個人云盤空間大,完全免費,而且提供了pcs api供調用操作文件,在平時的項目里往里面保存一些文件是很實用的。環境準備:開通讀寫網盤的權限及獲取access_token:http://blog.csdn.net/langyuezhang/article/details/47206621百度…

python縮進教學_Python縮進和選擇學習

縮進Python最具特色的是用縮進來標明成塊的代碼。我下面以if選擇結構來舉例。if后面跟隨條件,如果條件成立,則執行歸屬于if的一個代碼塊。先看C語言的表達方式(注意,這是C,不是Python!)if ( i > 0 ){ x 1; y 2;}如果i …

php如何新建xml文件,PHP中的生成XML文件的4種方法分享

生成如下XML串Xml代碼title1content12009-10-11title2content22009-11-11方法I.【直接生成字符串】使用純粹的PHP代碼生成字符串,并把這個字符串寫入一個以XML為后綴的文件。這是最原始的生成XML的方法,不過有效!$data_array array(array(ti…

組態王能直接讀取儀表數據嗎_液晶多功能網絡電力儀表PD800H

液晶多功能網絡電力儀表PD800H-H44三相三線多功用電力表面,一般也被稱作網絡電力表面,它是一種數字化的監控設備,其功用集成了電量測量,情況監控,遠程通訊為一體,作業原理上選用了現代核算機技術和數字信號…

python程序顯示自己的版權_手把手教你Pycharm皮膚主題及個性化設置,python程序員必備-Go語言中文社區...

1.設置IDE皮膚主題File -> Settings -> Appearance -> Theme -> 選擇“Alloy.IDEA Theme”根據自己的喜好設置字體大小,以及樣式。2.修改字體大小File -> Settings > Editor -> Colors & Fonts -> Font -> Size -> 設置為“14”3…

java多線程activemq,多線程JMS客戶端ActiveMQ

我正在使用以下代碼創建多個JMS會話,以供多個使用者使用消息。我的問題是代碼以單線程方式運行。即使消息存在于隊列中,第二個線程也無法接收任何內容,而是繼續輪詢。同時,第一個線程完成對第一批的處理,然后返回并使用…

python cnn 實例_基于CNN的紋理合成實踐【附python實現】

Q0: Preliminary knowledge of Texture SynthesisBaseline請見此處,下文所有的代碼修改均建立此代碼基礎之上。1. 紋理合成簡述?紋理合成(Texture Systhesis)技術主要應用于計算機圖形學等領域,被用于模擬幾何模型的表面細節、增強繪制模型的真實感。不…

php使用jasperreport,php-報表引擎指南(Pentaho,JasperReports,BIRT)

我在各種論壇和他們的網站上花費了大約4-5個小時,研究可以幫助我發展的報告工具.我是使用這種工具的新手,可以使用一些特定的指導.我正在開發一個Web應用程序,該應用程序將托管在一臺服務器上,但是多個用戶可以通過登錄進行訪問.每個用戶將擁有自己的帳戶,并且只能訪問僅與與其…

python中dlib庫_python 基于dlib庫的人臉檢測的實現

本周暫時比較清閑,可以保持每日一更的速度。國外身份證項目新增需求,檢測出身份證正面的人臉。最開始考慮mobilenet-ssd,經同事提醒,有現成的人臉庫dlib,那就用傳統方法嘗試一下。dlib安裝dlib的安裝小費一波周折&…

php養老院管理系統,XYCMS養老院建站系統 v3.8

XYCMS養老院建站系統是一個專為養老院而設計的養老院建筑系統。中心信息管理:包括基本信息管理,添加,問答中心信息管理新聞動態管理:管理新聞信息內容,管理相關分類,添加或者刪除生活環境內容管理&#xff…

php 修改文件訪問時間,PHP中獲取文件創建日期、修改日期、訪問時間的方法

php獲取文件創建時間、修改時間常用代碼filemtime ( string filename )返回文件上次被修改的時間,出錯時返回 FALSE。時間以 Unix 時間戳的方式返回,可用于 date()。例如:$afilemtime("log.txt");echo "修改時間:&…

超過響應緩沖區限制_Nginx如何限制并發連接數和連接請求數?

全網最全1500份Java學習資料、500份BAT面試真題:關注公眾號,輸入“面試題”,獲取提取碼!首先講解兩個算發:算法思想是:令牌以固定速率產生,并緩存到令牌桶中;令牌桶放滿時&#xff0…

Php公鑰加密data是空,php 生成加密公鑰加密私鑰實例詳解

php 生成加密公鑰加密私鑰實例詳解生成公鑰私鑰 win下必須要openssl.cof支持 liunx一般已自帶安裝$config array(//"digest_alg" > "sha512","private_key_bits" > 512, //字節數 512 1024 2048 4096 等"private_key_type" >…

python句柄無效_subprocess.Popen 運行windows命令出現“句柄無效”報錯的解決方法

【代碼筆記】iOS-關于UIFont的一些define一,效果圖. 二,工程圖. 三,代碼. RootViewController.h #import interface RootViewController ...JQuery Datatables Dom 和 Language 參數詳細說明http://linleizi.iteye.com/blog/2086435 *********************************** Data …

java日期函數精確到日,java日期時間函數分享

前言:對于新手程序員的我來說,寫業務代碼是現在的日常,在此過程中經常需要對日期時間進行處理,我挑了幾個較有用的日期處理函數分享給大家。正文:1、將某格式的時間字符串轉化成毫秒時間戳表示的字符串:pub…