JAVA JDK(1)—— jdk5特性
今日一言:
有些人浅薄,
有些人金玉其外而败絮其中,
有天你会遇到一个彩虹般绚丽的人,
当你遇到这个人后,会觉得其他人知识浮云而已。
—— 《怦然心动》
JAVA JDK(1)—— jdk5特性
打算转到jdk11,但我jdk5-8的特性也没了解完。
其实jdk1.8和jdk8以及java8指的都是同一样的,
只是怕jdk 1.x这样的表示会让人觉得都是一样的东西,所以才更名jdk x的形式。
参考资料:
目录:
- jdk5
- jdk6
- jdk7
- jdk8
JDK 5
1. 自动拆箱与装箱
类型包装器有:Double,Float,Long,Integer,Short,Character和Boolean
// 自动装箱
Integer integer = 200;
// 自动拆箱
int i = integer;
2. 枚举
枚举:把集合里的对象元素一个一个提取出来。枚举类型使代码更具可读性,理解清晰,易于维护。枚举类型是强类型的,从而保证了系统安全性。而以类的静态字段实现的类似替代模型,不具有枚举的简单性和类型安全性。
看以下代码:
public static final int STATUS_OK = 0;
public static final int STATUS_ERROR = 1;
public static final int STATUS_WARNING = 2;
private void verifyStatus(int status){
switch (status){
case STATUS_OK:
System.out.println("It is OK!");
break;
case STATUS_ERROR:
System.out.println("It is ERROR!");
break;
case STATUS_WARNING:
System.out.println("It is WARNING!");
break;
}
}
使用枚举:
public class testJava5 {
public enum STATUS {
OK,
ERROR,
WARNING
}
private void verifyStatus(STATUS status){
switch (status){
case OK:
System.out.println("It is OK!");
break;
case ERROR:
System.out.println("It is ERROR!");
break;
case WARNING:
System.out.println("It is WARNING!");
break;
default:
throw new IllegalStateException("Unexpected value: " + status);
}
}
public static void main(String[] args) {
new testJava5().verifyStatus(STATUS.ERROR);
}
}
优劣已然可知,而枚举还有很多用法。
3. 静态导入
在另外一个包新建一个类:
package indi.rcklos.testPackage;
public class staticImportTest {
public static void printFunction(){
System.out.println("my function is just to print a sentence.");
}
}
main函数所对应的另外一个类:
import static indi.rcklos.testPackage.staticImportTest.*; // static import
import static java.lang.System.out; // static import
public class testJava5 {
public static void main(String[] args) {
printFunction();
out.println("You can static import the class \'java.lang.System.out\' to print directly");
}
}
4. 可变参数(Varargs)
形如C语言:
printf("我有一个整数[%d],我还有一个整数[%d],整数我想要多少就写多少[%d]\n",i1,i2,i3);
可变参数应用:
import static java.lang.System.out; // static import
public class testJava5 {
/**
* Count people From a family.
* @param myName
* @param otherPeopleName
*/
public static void CountPeopleFromA_Family(String myName,String...otherPeopleName){
out.println("There are " + (otherPeopleName.length + 1) + " people in this family.");
}
public static void main(String[] args) {
String RCK = "RCK";
String LOS = "LOS";
String LittleFish = "小鱼";
String BigFish = "大鱼";
CountPeopleFromA_Family(LOS,RCK,LittleFish,BigFish);
}
}
5. 内省(Introspector)
是 Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新 的值。通过getName/setName来访问name属性,这就是默认的规则。Java中提供了一套API用来访问某个属性的getter /setter方法,通过这些API可以使你不需要了解这个规则(但你最好还是要搞清楚),这些API存放于包java.beans中。
一 般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器 (PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来 调用这些方法。
几乎没用过,占坑.
6. 泛型(Generic)
C++ 通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也 不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。
import static java.lang.System.out; // static import
public class testJava5 {
static class GenericTest <T>{
private T object;
public void setObject(T obj){
this.object = obj;
}
public void printClassOfObject(){
out.println(object.getClass());
}
}
public static void main(String[] args) {
GenericTest<testJava5> genericTest = new GenericTest<testJava5>();
genericTest.setObject(new testJava5());
genericTest.printClassOfObject();
}
}
7. For-Each循环
一定简化了for循环的使用。
不用for-each循环的写法:
private static ArrayList<Integer> buildArrayList(){
ArrayList<Integer> list = new ArrayList<Integer>();
for ( int i = 0 ; i < 10 ; i++ ){
list.add(i);
}
return list;
}
public static void main(String[] args) {
ArrayList<Integer> list = buildArrayList();
for ( int i = 0 ; i < list.size() ; i++ ){
out.println(list.get(i));
}
}
使用for-each循环写法:
private static ArrayList<Integer> buildArrayList(){
ArrayList<Integer> list = new ArrayList<Integer>();
for ( int i = 0 ; i < 10 ; i++ ){
list.add(i);
}
return list;
}
public static void main(String[] args) {
ArrayList<Integer> list = buildArrayList();
for( int i : list ){
out.println(i);
}
}

浙公网安备 33010602011771号