黑马程序员-Java高新技术-jdk1.5简单的新特性
2013-06-03 22:46
435 查看
------- android培训、java培训、期待与您交流! ----------
枚举
为什么要有枚举,例如
要定义星期几变量,该怎么定义呢,假设用1-7分别代表星期一到星期日,但有人可能会用0代表星期日
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一个目标的
定义一个WeekDay的类来模拟枚举功能
1) 私有的构造方法
2) 每个元素分别用一个公有的静态成员变量表示
3) 可以有若干公有方法或抽象方法,要提供给nextDay方法必须是抽象的
public abstract class Weekday {
private Weekday(){}
public final static Weekday SUM=new Weekday(){
public Weekday nextDay() {
return MON;
}
};
public final static Weekday MON=new Weekday(){
public Weekday nextDay() {
return SUM;
}
};
public abstract Weekday nextDay();
public String toString()
{
return this==SUM?"SUM=====":"MOU+++";
}
}
--------------------------------------------------------------------
枚举的静态方法
WeekDay.valueOf("SUN").toString(); // valueOf("s");将字符串s变成(WeekDay中)SUN对象
WeekDay.values().length; //vlaues //将WeekDay中所有的对象封装成一个数组,进行遍历
方法
Weekday1.name(); 返回该对象的名字
Weekday1.ordinal(); 返回该对象在该类中的排行第几
compareTo hashCode equals toString 直接调用,
-------------------------------------------------------------------------
构造参数的枚举 : MOU 构造方法是bbbbbbb, SUM 和TOW构造方法是aaaaaa
public enum Enum_2 {
MOU(2),SUM(),TOW;
private Enum_2()
{
System.out.println("aaaaaaaaa");
}
private Enum_2(int day)
{
System.out.println("bbbbbbbbbbbbbbbbbb");
}
}
------------------------------------------------------------
交通灯的枚举类
public enum TrafficLamp {
HONG(30){
public TrafficLamp nextLamp()
{
return LV;
}
},
LV(35){
public TrafficLamp nextLamp()
{
return HUANG;
}
},
HUANG(5){
public TrafficLamp nextLamp()
{
return HONG;
}
};
private TrafficLamp(int time)
{
this.time=time;
}
public abstract TrafficLamp nextLamp();
private int time;
}
如果枚举只有一个对象: 那么就可以作为一种单利的实现方式
===================================================================================================================================
自动拆装箱
自动装箱 Integer sum= 2;
自动拆箱 System.out.println(sum+12);
Integer i1=12; Integer i1=12; i1==i2 ture
Integer i3=new Integer(14); Integer i4=new Integer(14); i3==i4 ture
当Integer取值在一个字节之间时(-128到127),将这些数据比较常用,在内存中只有一份(共享),不用每一个对象new出一个,节省大量的内存空间,这种模式被称为 享元模式
1 静态导入
import语句可以导入一个类或某个包中的所有类
import static语句导入一个类中的某个静态方法或所有静态方法
以Math类为例:
import static java.lang.Math.max; //导入lang包中的Math类的max方法
max(3,5); //就可以直接写方法名,不用类名也能调用
Math.abs(6,3); //平常调用的方式
import static java.lang.Math.*; //导入lang包中的Math类中的所有方法
那么就是在本类页面中写Math的静态方法,都可以直接写方法名(没有类名也可以调用)
---------------------------------------------------------------------------------------
2 可变参数
可变参数的特点
(1) 只能出现在参数列表的最后
(2) ...位于变量类型和变量名之间,前后有无空格都是可以的
(3) 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法中以数组的形式访问可可变参数
public static void main(String[] args)
{
System.out.println(add(3,4));
System.out.println(add(2,4,5,66));
System.out.println(addd(3,4));
System.out.println(addd(2,4,5,66));
}
public static int addd(int ...is) //可变参数
{
int sum=0;
for(int i=0;i
{
sum+=is[i];
}
return sum;
}
public static int add(int s,int ...is) // 可变参数
{
int sum=s;
for(int i=0;i
{
sum+=is[i];
}
return sum;
}
-------------------------------------------------------------------------------------------
3 for循环增强
语法 :for(type 变量名: 集合变量名){....}
注意事项
迭代变量必须在{} 中定义
集合变量可以是数组或实现了iterable接口的集合类
举例
public static int add(int x,int ... args)
{
int sum =x;
for(int arg:args)
{
sun+=arg;
}
return sum;
}
for循环增强的好处
在上面这个例子 增强型的for循环 和普通for循环一样
增强型的for循环 优点主要体现在集合中,随便举个例子
比如对 set 的遍历
一般是迭代遍历:
Set set = new HashSet();
Iterator it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
for循环遍历:
for (String str : set) {
System.out.println(str);
}
枚举
为什么要有枚举,例如
要定义星期几变量,该怎么定义呢,假设用1-7分别代表星期一到星期日,但有人可能会用0代表星期日
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一个目标的
定义一个WeekDay的类来模拟枚举功能
1) 私有的构造方法
2) 每个元素分别用一个公有的静态成员变量表示
3) 可以有若干公有方法或抽象方法,要提供给nextDay方法必须是抽象的
public abstract class Weekday {
private Weekday(){}
public final static Weekday SUM=new Weekday(){
public Weekday nextDay() {
return MON;
}
};
public final static Weekday MON=new Weekday(){
public Weekday nextDay() {
return SUM;
}
};
public abstract Weekday nextDay();
public String toString()
{
return this==SUM?"SUM=====":"MOU+++";
}
}
--------------------------------------------------------------------
枚举的静态方法
WeekDay.valueOf("SUN").toString(); // valueOf("s");将字符串s变成(WeekDay中)SUN对象
WeekDay.values().length; //vlaues //将WeekDay中所有的对象封装成一个数组,进行遍历
方法
Weekday1.name(); 返回该对象的名字
Weekday1.ordinal(); 返回该对象在该类中的排行第几
compareTo hashCode equals toString 直接调用,
-------------------------------------------------------------------------
构造参数的枚举 : MOU 构造方法是bbbbbbb, SUM 和TOW构造方法是aaaaaa
public enum Enum_2 {
MOU(2),SUM(),TOW;
private Enum_2()
{
System.out.println("aaaaaaaaa");
}
private Enum_2(int day)
{
System.out.println("bbbbbbbbbbbbbbbbbb");
}
}
------------------------------------------------------------
交通灯的枚举类
public enum TrafficLamp {
HONG(30){
public TrafficLamp nextLamp()
{
return LV;
}
},
LV(35){
public TrafficLamp nextLamp()
{
return HUANG;
}
},
HUANG(5){
public TrafficLamp nextLamp()
{
return HONG;
}
};
private TrafficLamp(int time)
{
this.time=time;
}
public abstract TrafficLamp nextLamp();
private int time;
}
如果枚举只有一个对象: 那么就可以作为一种单利的实现方式
===================================================================================================================================
自动拆装箱
自动装箱 Integer sum= 2;
自动拆箱 System.out.println(sum+12);
Integer i1=12; Integer i1=12; i1==i2 ture
Integer i3=new Integer(14); Integer i4=new Integer(14); i3==i4 ture
当Integer取值在一个字节之间时(-128到127),将这些数据比较常用,在内存中只有一份(共享),不用每一个对象new出一个,节省大量的内存空间,这种模式被称为 享元模式
1 静态导入
import语句可以导入一个类或某个包中的所有类
import static语句导入一个类中的某个静态方法或所有静态方法
以Math类为例:
import static java.lang.Math.max; //导入lang包中的Math类的max方法
max(3,5); //就可以直接写方法名,不用类名也能调用
Math.abs(6,3); //平常调用的方式
import static java.lang.Math.*; //导入lang包中的Math类中的所有方法
那么就是在本类页面中写Math的静态方法,都可以直接写方法名(没有类名也可以调用)
---------------------------------------------------------------------------------------
2 可变参数
可变参数的特点
(1) 只能出现在参数列表的最后
(2) ...位于变量类型和变量名之间,前后有无空格都是可以的
(3) 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法中以数组的形式访问可可变参数
public static void main(String[] args)
{
System.out.println(add(3,4));
System.out.println(add(2,4,5,66));
System.out.println(addd(3,4));
System.out.println(addd(2,4,5,66));
}
public static int addd(int ...is) //可变参数
{
int sum=0;
for(int i=0;i
{
sum+=is[i];
}
return sum;
}
public static int add(int s,int ...is) // 可变参数
{
int sum=s;
for(int i=0;i
{
sum+=is[i];
}
return sum;
}
-------------------------------------------------------------------------------------------
3 for循环增强
语法 :for(type 变量名: 集合变量名){....}
注意事项
迭代变量必须在{} 中定义
集合变量可以是数组或实现了iterable接口的集合类
举例
public static int add(int x,int ... args)
{
int sum =x;
for(int arg:args)
{
sun+=arg;
}
return sum;
}
for循环增强的好处
在上面这个例子 增强型的for循环 和普通for循环一样
增强型的for循环 优点主要体现在集合中,随便举个例子
比如对 set 的遍历
一般是迭代遍历:
Set set = new HashSet();
Iterator it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
for循环遍历:
for (String str : set) {
System.out.println(str);
}
相关文章推荐
- 黑马程序员_java高新技术_JDK1.5新特性
- 黑马程序员—JAVA高新技术_JDK1.5新特性
- 黑马程序员--Java高新技术--JDK1.5新特性(上)
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(一)【静态导入、可变参数、增强for循环】
- 黑马程序员---java基础加强---高新技术JDK1.5新特性
- Java高新技术-jdk1.5简单的新特性
- 黑马程序员 java_高新技术(一)_相关基础、JDK1.5新特性
- 黑马程序员--JAVA高新技术之eclipse开发工具相关知识、JDK1.5新特性
- 黑马程序员--Java高新技术--JDK1.5新特性(下)
- 黑马程序员—【Java高新技术】之eclipse开发工具枚举及JDK1.5新特性
- 黑马程序员 java高新技术<一>--eclipse开发工具、java5的一些简单新特性
- 黑马程序员—JAVA高新技术_JDK1.5新特性II
- 黑马程序员--Java高新技术--JDK1.5新特性(上)
- 黑马程序员--张孝祥Java高新技术-JDK1.5新特性(二)【基本数据类型的自动拆箱与装箱,枚举】以及享元设计模式
- 黑马程序员--Java高新技术--JDK1.5新特性(下)
- 黑马程序员——Java高新技术——JDK1.5版本的新特性泛型
- 黑马程序员:Java高新技术1--JDK1.5 新特性
- 黑马程序员_高新技术之Java-JDK1.5新特性
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
- 黑马程序员——java高新技术-jdk1.5新特性,注解,类加载器,代理