黑马程序员————高新技术————JDK1.5新特性
2013-09-01 15:01
239 查看
----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!
JDK1.5新特性
一:静态导入
l
Import语句可以导入一个类或某个包中的所有类。
l
Import static语句导入一个类中的某个静态方法或所有静态方法。
示例:
二:可变参数
l Overload重载
l Override重写
l 只能出现在参数列表的最后
l ...位于参数类型和参数名之间,前后有无空格都可以。
l 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
示例:
三:增強For循环
语法:for(type
变量名:集合变量名){
…
}
注意:1.迭代变量必须在()中定义。
2.
集合变量可以是数组或实现了Iterable接口的集合类。
示例:
四:基本数据类型的自动装箱与自动拆箱
自动装箱:基本类型自动转为包装类.(int >> Integer)
自动拆箱:包装类自动转为基本类型.(Integer >> int)
示例:
五:枚举
l 为什么要有枚举?
1. 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;
2. 枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
l 用普通类如何实现枚举功能,定义一个Weekday的类用来模拟枚举功能。
1. 私有的构造方法。
2. 每个元素分别用一个公有的静态成员变量表示。
3. 可以有若干公有方法或抽象方法,例如,要提供nextDay方法必须是抽象的。
l 在枚举类型中,一般的定义形式如下:
Enum 枚举名{枚举值表}
六:泛型
为什么会出现泛型?
因为集合存放的数据类型不固定,故往集合里面存放元素时,存在安全隐患,
如果在定义集合时,可以想定义数组一样指定数据类型,那么就可以解决该类安全问题。
JDK1.5后出现了泛型,用于解决集合框架的安全问题。
泛型是一个类型安全机制。
泛型定义格式:通过<>来定义要操作的引用数据类型
ArrayList<String> al = new ArrayList<String>;
4000
泛型的好处:
将运行时期出现的ClassCastException(类型转换异常)问题转移到编译时期。
避免了强制转换的麻烦。
什么时候定义泛型?
泛型在集合框架中很常见,只要见到<>就要定义泛型。其实<>就是用来接收类型的。
当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
泛型的形式:
l 泛型类:即自定义泛型类
A:当类中要操作的引用数据类型不确定时,早起定义Object来完成扩展,现在定义泛型来完成
B:局限性:泛型类定义的泛型,在整个类中有效,如果该泛型类的方法被调用,当泛型类的对象明确要操作的类型后,所有要操作的类型就被固定。
l 泛型方法:泛型放在返回值前面,修饰符的后面
A:为了避免泛型类的局限性,让不同方法可以操作不同的类型,而且类型还不确定,则可以将泛型定义在方法上。
B:特殊之处:静态方法不可以反问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以讲泛型定义在静态方法上。
l
泛型接口:
当泛型定义在接口上时,则子类中要指定实现接口类型,同时还可以子类也可以定义为泛型类
泛型的高级应用:?通配符
当指定两种泛型的集合,则迭代时也要定义两种泛型的迭代器,麻烦,此时可通过将迭代器的泛型改为?,如Iterator<?> it=al.iterator();
两种泛型限定:
向上限定: ? extends E ;E可以接收E类型或者E的子类。
向下限定: ? super E ;E可以接收E类型或者E的父类。
----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!
详情请查看:http://edu.csdn.net
JDK1.5新特性
一:静态导入
l
Import语句可以导入一个类或某个包中的所有类。
l
Import static语句导入一个类中的某个静态方法或所有静态方法。
示例:
import static java.lang.Math.max;// 静态导入Math类下的静态max方法 //import static java.lang.Math.*;// 静态导入Math类下所有的静态方法 public class StaticImport { public static void main(String[] args) { System.out.println(max(3, 6)); System.out.println(Math.abs(3 - 6)); } }
二:可变参数
l Overload重载
l Override重写
l 只能出现在参数列表的最后
l ...位于参数类型和参数名之间,前后有无空格都可以。
l 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
示例:
public class VariableParameter { public static void main(String[] args) { System.out.println(add(1, 2, 2, 2, 2)); } public static int add(int x, int... args) { int sum = 0; sum += x; for (int i = 0; i < args.length; i++) { sum += args[i]; } return sum; } }
三:增強For循环
语法:for(type
变量名:集合变量名){
…
}
注意:1.迭代变量必须在()中定义。
2.
集合变量可以是数组或实现了Iterable接口的集合类。
示例:
public static int add(int x, int... args) { int sum = 0; sum += x; for (int i : args) { sum += i; } return sum; }
四:基本数据类型的自动装箱与自动拆箱
自动装箱:基本类型自动转为包装类.(int >> Integer)
自动拆箱:包装类自动转为基本类型.(Integer >> int)
示例:
public class AutoBox { public static void main(String[] args) { Integer iObj = 3;// 自动装箱 System.out.println(iObj + 5);// 自动拆箱 Integer i1 = 137; // -128~127之间是一样的。用new生成除外 Integer i2 = 137; // -128~127之外不一样 String s1 = "abc"; // 字符串是一样的 用new生成除外 String s2 = "abc"; // ==是比较地址 equal是比较对象值 System.out.println(i1 == i2); System.out.println(i1.equals(i2)); System.out.println("----------------------"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println("----------------------"); String a1 = new String("abc"); String a2 = new String("abc"); System.out.println(a1 == a2);// 地址 System.out.println(a1.equals(a2));// 对象值 } }
五:枚举
l 为什么要有枚举?
1. 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;
2. 枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
l 用普通类如何实现枚举功能,定义一个Weekday的类用来模拟枚举功能。
1. 私有的构造方法。
2. 每个元素分别用一个公有的静态成员变量表示。
3. 可以有若干公有方法或抽象方法,例如,要提供nextDay方法必须是抽象的。
l 在枚举类型中,一般的定义形式如下:
Enum 枚举名{枚举值表}
六:泛型
为什么会出现泛型?
因为集合存放的数据类型不固定,故往集合里面存放元素时,存在安全隐患,
如果在定义集合时,可以想定义数组一样指定数据类型,那么就可以解决该类安全问题。
JDK1.5后出现了泛型,用于解决集合框架的安全问题。
泛型是一个类型安全机制。
泛型定义格式:通过<>来定义要操作的引用数据类型
ArrayList<String> al = new ArrayList<String>;
4000
泛型的好处:
将运行时期出现的ClassCastException(类型转换异常)问题转移到编译时期。
避免了强制转换的麻烦。
什么时候定义泛型?
泛型在集合框架中很常见,只要见到<>就要定义泛型。其实<>就是用来接收类型的。
当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
泛型的形式:
l 泛型类:即自定义泛型类
A:当类中要操作的引用数据类型不确定时,早起定义Object来完成扩展,现在定义泛型来完成
B:局限性:泛型类定义的泛型,在整个类中有效,如果该泛型类的方法被调用,当泛型类的对象明确要操作的类型后,所有要操作的类型就被固定。
l 泛型方法:泛型放在返回值前面,修饰符的后面
A:为了避免泛型类的局限性,让不同方法可以操作不同的类型,而且类型还不确定,则可以将泛型定义在方法上。
B:特殊之处:静态方法不可以反问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以讲泛型定义在静态方法上。
l
泛型接口:
当泛型定义在接口上时,则子类中要指定实现接口类型,同时还可以子类也可以定义为泛型类
泛型的高级应用:?通配符
当指定两种泛型的集合,则迭代时也要定义两种泛型的迭代器,麻烦,此时可通过将迭代器的泛型改为?,如Iterator<?> it=al.iterator();
两种泛型限定:
向上限定: ? extends E ;E可以接收E类型或者E的子类。
向下限定: ? super E ;E可以接收E类型或者E的父类。
----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!
详情请查看:http://edu.csdn.net
相关文章推荐
- 黑马程序员---java基础加强---高新技术JDK1.5新特性
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(一)【静态导入、可变参数、增强for循环】
- 黑马程序员——java高新技术-jdk1.5新特性,注解,类加载器,代理
- 黑马程序员--Java高新技术--JDK1.5新特性(上)
- 黑马程序员--Java高新技术--JDK1.5新特性(下)
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(二)【基本数据类型的自动拆箱与装箱,枚举】以及享元设计模式
- 黑马程序员 java_高新技术(一)_相关基础、JDK1.5新特性
- 黑马程序员:Java高新技术1--JDK1.5 新特性
- 黑马程序员-高新技术-JDK1.5新特性之注解
- 黑马程序员_高新技术-JDK1.5新特性之注解
- 黑马程序员——Java高新技术——JDK1.5版本的新特性泛型
- 黑马程序员-高新技术-jdk1.5新特性
- 黑马程序员_java高新技术_JDK1.5新特性
- 黑马程序员—JAVA高新技术_JDK1.5新特性
- 黑马程序员——高新技术——枚举,JDK1.5部分新特性
- 黑马程序员——高新技术--JDK1.5新特性(for循环增强、可变参数、静态导入、自动装拆箱、享元)
- 黑马程序员-----高新技术(Eclipse使用技巧和JDK1.5新特性)
- 黑马程序员_高新技术:JDK1.5新特性
- 黑马程序员 Java高新技术-jdk1.5新特性和反射基础
- 黑马程序员--Java高新技术--JDK1.5新特性(上)