黑马程序员----------JDK1.5新特性
来源:互联网 发布:程序员眼镜 编辑:程序博客网 时间:2024/04/30 14:09
------- android培训、java培训、期待与您交流! ----------
Jdk1.5的新特性
特性一:静态导入
Import语句可以导入一个类或是某个包中所有的类
Import static 语句可以导入一个类中某个静态方法或是所有静态方法
例如:Math类提供了很多数学运算的静态方法,通常情况小我们是以Math.abs()这样的方式来进行调用函数,但是我们可不可以写出abs();
在JDK1.5之后,可以使用import static语句导入一个类中的某个静态方法或是所有静态方法
Import static java.lang.Math.abs 就可以直接写一个abs()函数
Import static java.lang.Math.* 就可以直接调用Math类中所有静态方法
特性二:泛型
在类上明确参数类型
在jdk1.4版本前,容器什么类型的对象对可以存储,但是在取出时,需要用到对象的特有内容是,需要向下转型,但是由于对象类型不一致,导致向下转型发生了ClassCastException异常,为了避免这个问题,只能主观上控制,往集合中存储的对象类型保持一致
Jdk1.5以后解决了该问题,在定义集合时,就直接明确集合中存储元素的具体类型
这样,在编译器编译时,就可以对集合中存储的对象类型进行检查
一旦发现类型不匹配,就编译失败,这个技术就是泛型技术
好处:
1.将运行时期的问题转移到了编译时期,可以更好的让程序员发现问题并解决问题
2.避免向下转型的麻烦
总结:泛型就是应用在编译时期的一项安全机制
泛型的擦除:编译器通过泛型对元素类型进行检查,只要检查通过,就会生成class文件,但在class文件中,就将泛型标识去掉了
泛型的表现:泛型在集合框架中应用的范围很大,
什么时候需要泛型呢?1.只要看到类,或者接口在描述时右边定义<>,就需要泛型
其实是,容器在不明确操作元素类型的情况下,对外提供了一个参数<>
使用容器是,只要将具体的类型实参触底给该参数即可,
说白了,泛型就是,传递类型参数。
当类型不明确时,使用泛型
特性三:增强for循环
格式:for(数据类型变量名 :被遍历的集合(collection)或者数组) {执行语句}
说明:
1、对集合进行遍历。只能获取集合元素。但是不能对集合进行操作。可以看作是迭代器的简写形式。
2、迭代器除了遍历,还可以进行remove集合中元素的动作。如果使用ListIterator,还可以在遍历过程中对集合进行增删改查的操作。
传统for和高级for的区别:
高级for有一个局限性。必须有被遍历的目标(集合或数组)。
传统for遍历数组时有索引。
建议在遍历数组的时候,还是希望使用传统for。因为传统for可以定义角标。
注意:变量类型前可加修饰符,如final(可被局部内部类访问到)。
特性四:自动拆装箱
自动拆箱、装箱:向操作int一样操作Integer
Integer i=4;自动装箱,同等于Integeri=new Integer(4);也同等于Integer i=Integer.valueof(4);通过调用静态value()实现其中4不是一个数字,是一个对象
i=i+6;右边的i自动拆箱 等同于i=i.intValue()+6;运算完成后又一次自动装箱
Integer x=newInteger(100); Integer y=newInteger(100);
Syso(x==y);//false Syso(x.equals(y));//ture
Integer m=100;Integer n=100;
Syso(m==n); //true syso(m.equals(n));true
如果等于m、n=200时 false, true
原因是,自动装箱的值如果在byte范围之内(-128~127)相同的值不会单独开辟空间,而是重复使用
享元模式:很多对象的一系列属性相同,将这些相同的属性封装成一个对象,不同的属性变成方法的参数,称为外部状态。相同的属性称为内部状态
特性五:可变参数
可变参数可以声明一个接受可变数码参数的方法(类似多个方法的重载,只不过是可变参数提供一个方法实现多个方法的重载,变得只是方法其中的参数)
注意:可变参数必须是函数声明中的最后一个参数
例:main{syso(add(2,3,5));}
public static void add(intx,int…args){
int sum=x;
for(int i=1,i<=args.length;i++){
sum+=args[i];
}
}
特性六:枚举
在程序设计中,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红、黄、绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素。此时,可将这些数据集合定义为枚举类型。
枚举中可以有构造方法,也可以有抽象函数
构造函数:
publicenum WeekDay {
SUN(1), MON, TUE, WED, THI, FRI, SAT;
private WeekDay(){
System.out.println("first");
}
private WeekDay(int day){
System.out.println("second");
}
}
枚举中的构造方法必须在元素列表之后,而且必须是私有的
带有抽象方法的枚举类
Public enum TrafficLamp{
RED,YELLOW,GERRN;
YELLOW(5){
@Override
public TrafficLamp nextLamp() {
return RED;
}
};
publicabstract TrafficLamp nextLamp();
privateint time;
privateTrafficLamp(int time){
this.time=time;
}
特性七:注解
了解注解及Java提供的几个基本注解
注解:相当于一个标记,加上注解就等于给程序打上了标记
标记可以加载包,类,字段,方法上
api中常用的三个注解:
@SuppressWarnings:取消显示指定的编译器警告 SOURCE阶段
@Override:表示一个方法声明打算重写超类中的另一方法声明,如果此方法利用此注释类型进行注解但没有重写超类方法,编译器会报错 SOURCE阶段
@Depercated:表示元素已过时,存在更好的选择
定义一个注解类
@Retetion元注解:三种取值
RetetionPolicy.SOURCE—>java源文件
RetetionPolicy.Class—>class文件
RetrtionPlicy.RUNTIME-->内存中的字节码
@Retention(RetentionPolicy.RUNtIME)//元注解
@Target({ElementType.METHOD,ElementType.TYPE})
//T染个头的默认值为任何元素,设置Target等于ElementType.METHOD,原来加载在类上的注解就报错了,改为用数组方式设置{ElementType.METHOD,ElementType.TYPE}就可以了
public @interface ItcastAnnotation {
}
@ItcastAnnotation
public class Test8 {
@SuppressWarnings("deprecation")
@ItcastAnnotation
publicstatic void main(String[] args) { if(Test8.class.isAnnotationPresent(ItcastAnnotation.class)){
ItcastAnnotationannotation=(ItcastAnnotation)Test8.class.
getAnnotation(ItcastAnnotation.class);
System.out.println(annotation);
}
}
@Deprecated
publicstatic void sayHello(){
System.out.println("hello java");
}
为注解增加基本属性
@Retention(RetentionPolicy.RUNTIME)//元注解
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
String color default"blue";//一般类型
int[] arrayattr default {1,2,3}//数组类
EnumTest.TrafficLamp.lamp default EnumTest.TrafficLamp.GREEN//枚举类型
}
@ItcastAnnotation(color="red",arrayattr={3,4,5})
public class Test8 {
@ItcastAnnotation
public static voidmain(String[] args) {
syso(annotation.color());
syso(annotation.arrayattr().length());
syso(annotation.lamp().nextLamp().name());
}
- 黑马程序员-jdk1.5新特性---枚举
- 黑马程序员-jdk1.5新特性--注解
- 黑马程序员-jdk1.5新特性--泛型
- 黑马程序员-JDK1.5新特性
- 黑马程序员-jdk1.5新特性
- 黑马程序员-----jdk1.5的新特性
- 黑马程序员-----jdk1.5新特性
- 黑马程序员---jdk1.5新特性
- 黑马程序员--JDK1.5 新特性
- 黑马程序员---JDK1.5新特性
- 黑马程序员-高新技术-jdk1.5新特性
- 黑马程序员 jdk1.5的新特性
- 黑马程序员---JDK1.5新特性
- 黑马程序员-JDK1.5新特性之一
- 黑马程序员 — JDK1.5 新特性
- 黑马程序员----jdk1.5新特性
- 黑马程序员—jdk1.5新特性
- 黑马程序员--jdk1.5新特性
- SubVersion服务安装设置
- 黑马程序员----------网络编程
- POJ 1696 Space Ant(凸包变形)
- 用php实现mongodb 分组排序
- 使用反射调用自身的成员函数
- 黑马程序员----------JDK1.5新特性
- 安卓第一天(工程目录)
- MVC3中 ViewBag、ViewData和TempData的使用和区别
- UVa 1225 - Digit Counting
- 黑马程序员----------反射
- C#中怎么通过IP访问数据库?
- 杨氏矩阵查找
- 通过外网IP访问数据库
- 面试时,你会问面试官哪些问题?