My Coding Notes

String

1. Java中String判斷相等時equals與==的區(qū)別
  • equals :兩個字符串對象所存放的內(nèi)容相同,不需要存放的內(nèi)存地址相同
  • == :當(dāng)判斷的兩個變量所使用的內(nèi)存地址為相同時才返回true
  • 當(dāng)我們使用字符串連接--連接方式一般為+或concat("substring")--的方式創(chuàng)建字符串時,都會構(gòu)建一個新的String對象,即在內(nèi)存中開辟一個新的地址來存放,所以這個時候即使內(nèi)容相同,用==判斷的話,也是返回false;而使用等號賦值時,若內(nèi)存中有該字符串,則該變量指向此內(nèi)存地址,不是重新創(chuàng)建一個,所以此時用==時會返回true。

Java中String判斷相等equals與==的區(qū)別以及StringBuilder的equals

2. Java 中 String、StringBuffer、StringBuilder 的區(qū)別
  • 運(yùn)行速度:StringBuilder > StringBuffer > String
    String最慢的原因:
      String為字符串常量,創(chuàng)建后不可更改,而StringBuilder和StringBuffer均為字符串變量。在大量的string拼接操作出現(xiàn)的時候,JVM由于內(nèi)存緊張,基本實時進(jìn)行GC,引起速度變慢;
  • 線程安全:StringBuilder是線程不安全的,而StringBuffer是線程安全的
    原因:StringBuffer中很多方法可以帶有synchronized關(guān)鍵字
  • 總結(jié):String:適用于少量字符串操作的情況
    StringBuilder:適用于單線程下在字符緩沖區(qū)進(jìn)行大量操作的情況
    StringBuffer:適用多線程下在字符緩沖區(qū)進(jìn)行大量操作的情況

Java中的String,StringBuilder,StringBuffer三者的區(qū)別

3. 常用方法
  • toCharArray() :將字符串轉(zhuǎn)換為字符數(shù)組
  • 替換字符串中特定位置的字符:
法1:
String myName = "domanokz";
String newName = myName.substring(0,4)+'x'+myName.substring(5);
法2:
StringBuilder myName = new StringBuilder("domanokz");
myName.setCharAt(4, 'x');
System.out.println(myName);
4. HashSet和HashMap的區(qū)別
HashMap HashSet
HashMap實現(xiàn)了Map接口 HashSet實現(xiàn)了Set接口
HashMap儲存鍵值對 HashSet僅僅存儲對象
使用put()方法將元素放入map中 使用add()方法將元素放入set中
HashMap中使用鍵對象來計算hashcode值 HashSet使用成員對象來計算hashcode值,對于兩個對象來說hashcode可能相同,所以equals()方法用來判斷對象的相等性,如果兩個對象不同的話,那么返回false
HashMap比較快,因為是使用唯一的鍵來獲取對象 HashSet較HashMap來說比較慢
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、基礎(chǔ)知識:1、JVM、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機(jī)...
    殺小賊閱讀 2,415評論 0 4
  • 本文是我自己在秋招復(fù)習(xí)時的讀書筆記,整理的知識點,也是為了防止忘記,尊重勞動成果,轉(zhuǎn)載注明出處哦!如果你也喜歡,那...
    波波波先森閱讀 855評論 1 6
  • 查看所有目錄String類是我們?nèi)粘i_發(fā)中使用最頻繁的類之一,曾今有人說String類用的好壞能評判你是否是一個合...
    Kinsanity閱讀 5,923評論 0 3
  • 四、集合框架 1:String類:字符串(重點) (1)多個字符組成的一個序列,叫字符串。生活中很多數(shù)據(jù)的描述都采...
    佘大將軍閱讀 775評論 0 2
  • 今天你又一次失信了,兒子給你打電話你說:爸爸有事,待會給你回。然后匆匆掛掉電話,然后就沒有了然后。 這已經(jīng)不是第一...
    鈺石媽媽閱讀 211評論 0 0