靜態導入
package com.wjz;
import static java.lang.System.out;
import static java.util.Arrays.*;
import java.util.List;
public class 靜態導入 {
public static void main(String[] args) {
// public final static PrintStream out = nullPrintStream(); 靜態方法
out.println("123");
// 導入靜態屬性或方法
String[] strings = {"a","b"};
List<String> list = asList(strings);
sort(strings);
}
}
自動裝箱和拆箱
裝箱:基本類型–>包裝類型
拆箱:包裝類型–>基本類型
public class 自動裝箱和拆箱 {
public static void main(String[] args) {
//**** JDK 5.0 之前
//Integer i = 10;// 不能用
//Integer i = new Integer(10);// 可以
//Integer i = Integer.valueOf(10);// 優雅
//int ii = i;// 不能用
//int ii = i.intValue();// 可用
//**** JDK 5.0 之後
Integer i = 10;// 裝箱,底層代碼調用 Integer i = Integer.valueOf(10);
int ii = i;// 拆箱,底層代碼調用 int ii = i.intValue();
//**** 應用
List list = new ArrayList();
/* JDK 1.5 之前
list.add(new Integer(10));
int j = ((Integer)list.get(0)).intValue();
*/
//**** JDK 5.0 之後
list.add(10);
int j = (Integer) list.get(0);
Integer q = null;
//int w = q; // 空指針異常
/*
Java的規範指出:特定的基本類型一定得被box成相同的包裝類型。
這些對象會被 高速緩存 以 重複 使用,並且會被當做一般對象使用。
這些特殊的值是:
boolean值的true和false、
所有的byte值、
介於-128至127的short與int值,
以及介於\u0000與\u007F之間的任何一個char。
*/
Boolean boolean1 = true;
Boolean boolean2 = true;
System.out.println(boolean1 == boolean2); // true
Integer i1 = 100;
Integer i2 = 100;
System.out.println(i1 == i2);// true
Integer i3 = 129;
Integer i4 = 129;
System.out.println(i3 == i4);// false
int i5 = 129;
int i6 = 129;
System.out.println(i5 == i6);// true
int i7 = 100;
int i8 = 100;
System.out.println(i7 == i8);// true
Float f1 = 0.1f;
Float f2 = 0.1f;
System.out.println(f1 == f2);// false
float f3 = 0.1f;
float f4 = 0.1f;
System.out.println(f3 == f4);// true
}
}
增強for循環
設計的本意:拋棄迭代器
增強型for循環 只能 遍歷 數組 和 實現了iteratable接口 的對象
語法:
for(元素類型 元素名:數組或實現了iteratable接口的對象){
}
增強for的特點:
只適合遍歷數據。
不適合修改或刪除數據。請使用普通for循環或迭代器
可變參數
底層原理,編譯器將 x… 轉換爲 x[] 數組