静态导入
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[] 数组