您的位置:首页 > 编程语言 > Java开发

黑马程序员--java高新技术--jdk1.5新特性

2014-12-09 06:26 316 查看
------- android培训java培训、期待与您交流! ---------

jdk1.5通过新特性来简化开发。jdk1.5的新特性主要有:泛型,for-each,自动拆装箱,枚举,可变参数,静态导入等。

泛型:

泛型在编译器进行语法检查时有用。目的是讲运行时异常转换为编译时错误

package jihekuangjia;

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListText {

public static void main(String[] args) {
// TODO Auto-generated method stub
//泛型<>,若加入元素时与<>不同,就会报错
ArrayList<String>  al = new ArrayList<>();
//1.添加元素
al.add("java01");
al.add(1);//编译报错
al.add("java03");

}

}


for-each:

package ForEachDemo;

import java.security.AllPermission;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class ForEachDemo {

/**
* 高级For循环
* for(数据类型  变量名 : 被遍历的集合(collection)或者数组){
*
* }
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {4,3,5};
//增强for循环
for (int s : arr) {
System.out.println(s);
}
//原for循环
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}

}

}

向集合中取元素时同时加元素,需要使用迭代器来完成,即需要传统的for循环。

自动拆装箱:

//以前
Integer i1 = (Integer)3;
//现在,自动装箱
Integer i2 = 3;
//自动拆箱
System.out.println(i1 + 3);


享元模式    flyweight:

数字在一字节之内。-128 ~ 127 把内存中的对象取出,不会新建对象

枚举:

枚举就是要让某个类型的变量取值只能为若干个固定值中的一个,否则会构造失败。

一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值。

1.定义枚举类

public enum Color {
RED, GREEN, BLANK, YELLOW
}

2.:switch
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}

3.枚举类中添加方法。
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLAKE("黑色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get\set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}

枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
枚举类与Java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数。

但枚举类的构造函数必须为私有的。

可变参数:

解决了一个方法接受参数不固定的的问题.

在以前,必须用重载的方式解决,现在简化了代码

例子:

package cn.jhc.day1;

public class VarableParameter {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(2, 3, 5));
System.out.println(add(3, 8));
}
<span style="white-space:pre"> </span>//可变参数int... args
public static int add(int x, int... args){
int sum = x;
/* for (int i = 0; i < args.length; i++) {
sum+=args[i];
}*/
for (int arg : args) {
sum += arg;
}
return sum;
}
}


静态导入:

静态导入可以导入静态方法,这样就不必写类名而直接调用静态方法。

import static 类名.包名;

例子:
package cn.jhc.day1;

import static java.lang.Math.abs;
import static java.lang.Math.*;
import cn.jhc.day2.AnnotationTest;

public class StaticImport {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AnnotationTest.sayHello();
int x = 1;
x++;
System.out.println(x);

max(2, x);//直接调用静态方法max abs
abs(3 - 6);
}

}


------- android培训java培训、期待与您交流! ---------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  黑马程序员
相关文章推荐