Java字符串與數組的學習筆記

字符串

創建和存儲的機制

String 的實現採用了Flyweight 的設計模式
當執行 String = "abc"時,在字符串常量池查找字符是否已經存在,
若不存在則創建這個字符串常量,並返回引用;
若存在則直接返回引用。
在這裏插入圖片描述

“==”、equals和hashCode有什麼區別

  • “==” :比較兩個基本類型的數據或兩個引用變量(是否指向同一堆內存)是否相同
  • equals是Object類提供的方法,默認方法與"=="效果一致,可重寫
  • hashCode()也是Object類的方法,默認方法返回的是對象在內存的地址所轉換成的int值(堆內存)
  • equals 與 hashCode方法必須同時重寫

String、StringBuffer、StringBuilder和StringTokenizer

  1. String類是不可變類,即每次修改都會創建新的對象,適合存放不頻繁修改的變量。
  2. StringBuffer類屬於可變類,適合需要頻繁修改字符串的場景。
  3. String字符串進行修改操作的原理:
    1. 首先用原來的字符串創建一個StringBuilder對象
    2. 再調用append( )方法
    3. 最後調用toString()方法返回字符串。
  4. StringBuffer是線程安全的,StringBuilder不是線程安全但單線程效率更高。
  5. StringTokenzier是用來分割字符串的工具類。

數組

數組有自己的屬性(如length),和方法(如clone),也可以用instanceof來判斷,因此從這方面看,數組也是對象。

  • 聲明
    type arrayName[ ] 或 type[ ] arrayName
    type既可以是基本類型,也可以是類
  • 初始化長度
    arrayName = new type[arraySize]
    arrayName = new type[ ] { e1, e2, e3 … }
  • 二維數組的聲明
    type arrayName[ ][ ];
    type [ ][ ] arrayName;
    type[ ] arrayName[ ];

length屬性與length()方法

  • length屬性是數組的屬性,存放數組的長度
  • length( ) 方法是String的方法,來獲取字符串的長度
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章