java 程式設計常混淆的一些屬性,方法,工具類
平時寫程式碼常常會混淆一些東西,在這裡寫這篇部落格,是希望將容易混淆但經常用到的方法、屬性、工具類總結出來,並將大牛的部落格整理貼出來以供大家參考。希望自己能不斷新增新的,一直更新下去吧。
1. length、length()、size()區別
- length不是方法,是屬性,陣列的屬性
- length()是字串String的一個方法
- size()方法,是List集合的一個方法
詳細參考CSDN博主「張小煩一點都不煩」的原創文章:傳送門
2. 判斷陣列/集合為空的工具類
-
判斷集合是否為空:collection == null || collection.isEmpty();
-
判斷Map是否為空:map == null || map.isEmpty();
-
判斷陣列是否為空:array == null || array.length == 0;
-
判斷List是否為空 :list == null || list.size() == 0;
詳細參考部落格園博主ONEDIR的原創文章:傳送門
3. java Queue中 remove/poll, add/offer, element/peek區別
offer,add區別:
- add方法向佇列中新增元素,返回布林值,add方法新增失敗時會拋異常,不推薦使用
- offer方法向佇列中新增元素,返回布林值
poll,remove區別:
-
remove方法移除首個元素並返回,若佇列為空,會丟擲異常:NoSuchElementException,不推薦使用
-
poll方法移除佇列首個元素並返回,若佇列為空,返回null
peek,element區別:
- peek方法返回佇列首個元素,但不移除,若佇列為空,返回null
- element方法返回佇列的頭元素,但不移除,若佇列為空,會丟擲異常:NoSuchElementException,不推薦使用
詳細參考部落格園博主「迷失之路」的原創文章:傳送門
Arraylist和Linkedlist的區別
- Arraylist:底層是基於動態陣列,根據下表隨機訪問陣列元素的效率高,向陣列尾部新增元素的效率高;但是,刪除陣列中的資料以及向陣列中間新增資料效率低,因為需要移動陣列。例如最壞的情況是刪除第一個陣列元素,則需要將第2至第n個陣列元素各向前移動一位。而之所以稱為動態陣列,是因為Arraylist在陣列元素超過其容量大,Arraylist可以進行擴容(針對JDK1.8
陣列擴容後的容量是擴容前的1.5倍),Arraylist原始碼中最大的陣列容量是Integer.MAX_VALUE-8,對於空出的8位,目前解釋是
:①儲存Headerwords;②避免一些機器記憶體溢位,減少出錯機率,所以少分配③最大還是能支援到Integer.MAX_VALUE(當Integer.MAX_VALUE-8依舊無法滿足需求時) - Linkedlist基於連結串列的動態陣列,資料新增刪除效率高,只需要改變指標指向即可,但是訪問資料的平均效率低,需要對連結串列進行遍歷。
- 對於隨機訪問get和set,ArrayList優於LinkedList,因為LinkedList要移動指標。
對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。
詳細參考CSDN博主「QQ是一枚程式媛」的原創文章:傳送門
- Java 定義長度為 0 的陣列 / 空陣列
int[] array = new array[0]; // 定義一個長度為 0 的陣列 / 空陣列
長度為 0 的陣列 / 空陣列 並不是 null
詳細參考CSDN博主「QQ是一枚程式媛」的原創文章:傳送門
Java list的用法
- list中新增,獲取,刪除元素;
新增方法是:.add(e);
獲取方法是:.get(index);
刪除方法是:
按照索引刪除;.remove(index);
按照元素內容刪除;.remove(Object o); - list中是否包含某個元素; 方法:.contains(Object o); 返回true或者false
- list中根據索引將元素數值改變(替換);
.set(index, element) 對指定的index的元素進行替換
.add(index, element)對指定的index新增,原來的往後移 - list中檢視(判斷)元素的索引;
方法:
.indexOf() 檢視元素索引,若存在多個相同元素,返回第一個元素索引
.lastIndexOf()有多個相同元素,返回相同元素中最後一個元素的索引 - 根據元素索引位置進行的判斷;
object.indexOf() ==0 - 利用list中索引位置重新生成一個新的list(擷取集合);
方法: .subList(fromIndex, toIndex);注意:不包括toIndex .size() ; 該方法得到list中的元素數的和 - 對比兩個list中的所有元素;
兩個相等物件的equals方法一定為true, 但兩個hashcode相等的物件不一定是相等的物件 - 判斷list是否為空;
方法: .isEmpty() 空則返回true,非空則返回false - 返回Iterator集合物件;
.iterator() - 將集合轉換為字串;
.toString() - 將集合轉換為陣列;
.toArray()
12 集合型別轉換;
13 去重複;
詳細參考CSDN博主「Barcon」的原創文章:傳送門
判斷List是否為空的問題
兩種方法來進行判斷都是可以判斷的list集合為空問題
if(list != null && list.isEmpty())
else{ 做其他處理}
if(list != null && list.size()!=0)
else{ 做其他處理}
【Java面試題】Double和double 區別
-
Double是java定義的類,而double是預定義資料型別(8種中的一種)
-
Double就好比是對double型別的封裝,內建很多方法可以實現String到double的轉換,以及獲取各種double型別的屬性值(MAX_VALUE、SIZE等等)
-
基於上述兩點,如果你在普通的定義一個浮點型別的資料,兩者都可以,但是Double是類所以其物件是可以為NULL的,而double定義的不能為NULL,如果你要將一些數字字串,那麼就應該使用Double型別了,其內部幫你實現了強轉。
相關文章
- Java常見的系統屬性值及如何通過Java程式設計獲得系統屬性值Java程式設計
- 深入剖析 Java 類屬性與類方法的應用Java
- 深入解析 Java 物件導向程式設計與類屬性應用Java物件程式設計
- 如何進行程式碼混淆?方法與常見工具介紹行程
- [.net 物件導向程式設計基礎] (10) 類的成員(欄位、屬性、方法)物件程式設計
- Python - 物件導向程式設計 - 類變數、例項變數/類屬性、例項屬性Python物件程式設計變數
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- Java類方法(定義一個工具類,儲存一些常用的方法)Java
- 類的靜態屬性和方法
- Python 動態新增例項屬性,例項方法,類屬性,類方法Python
- js 物件方法、類方法、原型方法的區別;私有屬性、公有屬性、公有靜態屬性的區別JS物件原型
- java屬性檔案properties常用操作工具類Java
- 揭秘Java反射:如何輕鬆獲取類的屬性及父類屬性Java反射
- Java程式設計基礎20——異常&IO(File類)Java程式設計
- 商品 分類 屬性 表設計 庫存
- Java程式碼混淆工具入門——Allatori~Java
- 《java併發程式設計的藝術》併發工具類Java程式設計
- Python - 物件導向程式設計 - 公共屬性、保護屬性、私有屬性Python物件程式設計
- Java學習之類的屬性(轉)Java
- Java程式設計基礎13——常見物件_String類Java程式設計物件
- Java程式設計筆記,springboot常用屬性彙總Java程式設計筆記Spring Boot
- Python (類)例項方法的特殊屬性Python
- java架構-一些設計上的基本常識Java架構
- 關於python類屬性和例項屬性的一些細節注意點Python
- java程式設計的一些建議Java程式設計
- C#可擴充套件程式設計之MEF學習筆記(三):匯出類的方法和屬性C#套件程式設計筆記
- vue計算屬性和vue實力的屬性和方法Vue
- [JAVA] 只知物件屬性,不知類屬性?就算類答應,static都不答應Java物件
- Python程式設計中一些常見的錯誤和處理方法Python程式設計
- 元物件、 屬性 和 反射程式設計物件反射程式設計
- PHP中的MySQLi擴充套件學習(二)mysqli類的一些少見的屬性方法PHPMySql套件
- 波哥學JAVA,定義類 宣告屬性 建立物件 例項化物件 物件呼叫屬性或者方法Java物件
- Python 類的屬性與例項屬性Python
- Java工具類與函式程式設計毫不相干Java函式程式設計
- Vue 計算屬性與方法Vue
- Java基礎-設計一個Java類所需的方法(轉)Java
- 物件導向2--靜態方法、類方法、屬性方法物件
- 獲得類的屬性