亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java源碼解析之String類的compareTo(String otherString)方法

2024-07-14 08:42:18
字體:
來源:轉載
供稿:網友

一. 前言

最近我發現了一個事情,那就是在面試筆試中,好多公司都喜歡在String字符串上出問題,涉及到方方面面的知識,包括其中的一些常用方法。

String 類代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作為此類的實例實現。

字符串是常量;它們的值在創建之后不能更改。字符串緩沖區支持可變的字符串。因為 String 對象是不可變的,所以可以共享。

近日研究了一下String類的一些方法, 通過查看源碼, 對一些常用的方法也有了更透徹的認識, 也讓我更加理解了設計者的算法思想.

我也推薦大家多讀讀源碼, 我相信大家也會有意想不到的收獲.

二. 實戰

今天我分析的是String類的compareTo(String otherString)方法,

以下是我個人的分析觀點, 如有哪里分析不到位的地方, 歡迎大家指出, 相互學習, 共同進步 !

首先, 尊重原作者, 先放上源碼

public int compareTo(String anotherString) { int len1 = value.length; int len2 = anotherString.value.length; int lim = Math.min(len1, len2); char v1[] = value; char v2[] = anotherString.value; int k = 0; while (k < lim) {  char c1 = v1[k];  char c2 = v2[k];  if (c1 != c2) {  return c1 - c2;  }  k++; } return len1 - len2; }

下面的是我自己寫的山寨compareTo()方法, 經測試, 結果與compareTo(String otherString)返回一致

說明:

1. 為避免沖突, 我定義的方法名為compares

2. 注釋中已經詳細地記錄了分析思路, 故對代碼不做過多說明

public class StringDemo {  @Test public void test() {  // 因為o的ASCII碼為: 111 // 因為a的ASCII碼為: 97 // 所以差為 : 111 - 97 = 14 // 返回值為:14, 與compareTo返回結果一致 System.out.println(compares("hellojava", "hellajava")); }  public static int compares(String firstString, String lastString) {  /*  * 算法思路分析:   * 1. 獲取2個字符串, 首先把2個字符串都轉化為字符數組 (為后面一個一個字符進行比較做鋪墊)  * 2. 獲取2個字符串的長度, 并把最短的字符串長度作為循環的次數 (這樣可以避免數組越界的異常)  * 3. 把2個字符串從0開始遍歷, 比較每一個字符, 若字符不相等時, 則返回兩個字符串的差值  * 4. 如果遍歷的字符串都相等時, 則返回兩個字符串的長度差  *   * 方法結果:   * 1. 若兩個字符串長度和字符都相等時, 則返回0  * 2. 若兩個字符長度不相等, 但大串完全包含(順序和字符都相等)小串字符時, 則返回兩個字符串的長度的差值  *  舉例:   *  大串: helloworlds  *  小串: helloworld  *  因為大串完全包含小串, 所以返回長度的差值, 為1  * 3. 若兩個字符串長度和字符都不相等時, 則返回比較過程中, 某個索引位置上的字符之差  *  舉例:   *  串1: hellojavas  *  串2: hellajava  *  遍歷比較后, 索引4的字符不同, 所以返回兩個字符的差值14, 'o' - 'a' = 14  */    /*  * 1. 獲取2個字符串, 首先把2個字符串都轉化為字符數組 (為后面一個一個字符進行比較做鋪墊)  */  char[] firstCh = firstString.toCharArray();  char[] lastCh = lastString.toCharArray();    /*  * 2. 獲取2個字符串的長度, 并把最短的字符串長度作為循環的次數 (這樣可以避免數組越界的異常)  */  int firstLength = firstCh.length;  int lastLength = lastCh.length;  int lim = Math.min(firstLength, lastLength);    // 用k記錄比較的索引  int k = 0;  while(k < lim) {  char c1 = firstCh[k];  char c2 = lastCh[k];    // 3. 把2個字符串從0開始遍歷, 比較每一個字符, 若字符不相等時, 則返回兩個字符串的差值  if(c1 != c2) {   return c1 - c2;  }    // 如果字符相等, 則讓索引加1  k++;  }    // 4. 如果遍歷的字符串都相等時, 則返回兩個字符串的長度差  return firstLength - lastLength; }}

三. 小結

通過源碼的學習, 讓我有一種知其然知其所以然的感覺, 后期會繼續分享更多源碼分析, 與大家共同學習 !

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线观看免费网站| 国产精品99久久久久久人| 午夜精品久久久久久99热软件| 欧美巨乳在线观看| 日韩经典中文字幕在线观看| 欧美美女操人视频| 在线日韩精品视频| 秋霞成人午夜鲁丝一区二区三区| 国产色婷婷国产综合在线理论片a| 国产一区二区三区直播精品电影| 在线观看日韩www视频免费| 久久久久久久国产| 欧美成人性生活| 亚洲一区二区三区在线免费观看| 国产欧美va欧美va香蕉在线| 欧美床上激情在线观看| 久久久久久久影视| 亚洲国产精品成人va在线观看| 欧美激情在线观看视频| 亚洲精品一区二区久| 91精品国产91久久久久久吃药| 日韩精品视频在线| 8090理伦午夜在线电影| 91情侣偷在线精品国产| 国产91色在线|免| 亚洲一区精品电影| 日韩中文在线中文网三级| 亚洲а∨天堂久久精品喷水| 久久亚洲一区二区三区四区五区高| 2019精品视频| 亚洲a在线观看| 欧美成人精品在线观看| 色偷偷偷亚洲综合网另类| 国产日本欧美一区| 国产精品7m视频| 尤物九九久久国产精品的分类| 91天堂在线视频| 亚洲视频在线免费观看| 欧美成人免费全部| 国内精久久久久久久久久人| 91精品国产成人www| 91精品国产高清| 国产日本欧美一区| 欧美影院成年免费版| 国产丝袜精品视频| 亚洲精品wwwww| 久久成人亚洲精品| 国产精品r级在线| 亚洲人成在线观看网站高清| 亚洲女成人图区| 久久这里只有精品视频首页| 免费91麻豆精品国产自产在线观看| 国产精品免费网站| 亚洲国产成人精品女人久久久| 国产丝袜一区二区三区免费视频| 亚洲欧美激情另类校园| 午夜精品在线观看| 91在线无精精品一区二区| 久久久国产一区二区| 97精品国产97久久久久久春色| 91精品美女在线| 久久久久久免费精品| 国产精品一区专区欧美日韩| 中文字幕亚洲国产| 日韩成人中文电影| 97国产精品视频| 亚洲第一av网| 色偷偷偷亚洲综合网另类| 久久免费视频在线| 亚洲精品二三区| 韩曰欧美视频免费观看| 永久免费精品影视网站| 欧美亚洲成人网| 欧美日韩国产激情| 日韩国产精品一区| 久久久久久久久久久网站| 日韩高清电影免费观看完整版| 91国产在线精品| 亚洲精品之草原avav久久| 91免费版网站入口| 日韩亚洲一区二区| 国产成人亚洲综合| 精品久久久久久久中文字幕| 国产一区二区三区久久精品| 日韩在线观看免费全集电视剧网站| 欧美日韩免费观看中文| 亚洲国产精品va在线看黑人动漫| 精品亚洲精品福利线在观看| 亚洲美女在线视频| 国产v综合ⅴ日韩v欧美大片| 久久久久在线观看| 国产精品久久久久久久久久东京| 国产精品综合网站| 日韩福利视频在线观看| 在线精品视频视频中文字幕| 国产精品国内视频| 久久伊人精品一区二区三区| 红桃视频成人在线观看| 精品美女久久久久久免费| 欧美精品一区二区免费| 欧美日韩国产激情| 国内精品国产三级国产在线专| 宅男66日本亚洲欧美视频| 国产精品亚洲欧美导航| 国产精品视频一| 日韩a**中文字幕| 久久国产天堂福利天堂| 国产aⅴ夜夜欢一区二区三区| 国产精品视频自拍| 九色精品免费永久在线| 九九热视频这里只有精品| 97久久精品视频| 精品欧美aⅴ在线网站| 欧美精品久久久久a| 国产精品久久久久aaaa九色| 欧美激情伊人电影| 亚洲欧美日韩在线一区| 欧美电影免费观看高清| 国产精品国产亚洲伊人久久| 亚洲人高潮女人毛茸茸| 日韩av理论片| 成人在线精品视频| 2020欧美日韩在线视频| 日韩av在线天堂网| 欧美日韩性视频| 久久精品在线视频| 最近日韩中文字幕中文| 欧美日韩精品在线观看| 8x海外华人永久免费日韩内陆视频| 欧美壮男野外gaytube| 91色中文字幕| 国产精品27p| 欧美激情欧美狂野欧美精品| 精品国产福利视频| 神马久久久久久| 国模叶桐国产精品一区| 久久777国产线看观看精品| 日韩在线中文字| 国产精品日韩在线| 日韩av在线网| 在线激情影院一区| 国产精品久久99久久| 欧美体内谢she精2性欧美| 欧美日韩视频在线| 成人免费看吃奶视频网站| 日本一欧美一欧美一亚洲视频| 久久亚洲精品一区| 成人网在线免费观看| 亚洲国产精品中文| 色诱女教师一区二区三区| 亚洲欧美中文另类| 亚洲男人av电影| 91青草视频久久| 国内精品小视频在线观看| 久久久精品影院| 国产精品扒开腿做爽爽爽的视频| 97成人精品视频在线观看| 韩曰欧美视频免费观看| 国产精品久久久久久久久久99| 亚洲欧美国产va在线影院| 成人h猎奇视频网站| 91在线免费网站| 亚洲精品综合久久中文字幕| 国产精品欧美激情在线播放|