java中的java5.0的新特性2(J2SE入门22)
2011-05-04 10:42
393 查看
可变长的参数
使用条件:只在必要的时候进行。同时有参数为数组,就不能使用变长参数,有变长参数,就不能使用数组,不能共存。一个方法最多只能有一个变长参数,而且是最后一个参数。
<5.0之前>
public static void main(String[] args){}
JVM收到数据封装在数组里,然后传入方法
<5.0之后>
public static void m(String... s){
System.out.println("m(String)" +s);
}
调用m(String… s)
for(String s2:s){
System.out.println(s2);
}
格式化输出
格式化I/O(Formatted I/O)
java.util.Sacner类可以进行格式化的输入,可以使用控制台输入,结合了BufferedReader和StringTokener的功能。
增加了类似C的格式化输入输出,简单的例子:
public class TestFormat{
public static void main(String[] args){
Int a = 150000, b = 10;
float c = 5.0101f, d = 3.14f;
System.out.printf("%4d %4d%n", a, b);
System.out.printf("%x %x%n", a, b);
System.out.printf("%3.2f %1.1f%n", c, d);
System.out.printf("%1.3e %1.3e%n", c, d*100);
}
}
输出结果为:
150000 10
249f0 a
5.01 3.1
5.010e+00 3.140e+02
类型安全的枚举
枚举也是一个类型,枚举中的对象只能定义一次并在定义时给其初始化,定义之后不能再改变其值,只能从枚举中选择其一。
enum 枚举名{
枚举值1(..),枚举值2(..),.....;
}
<在5.0之前使用模式做出枚举>
final class Season{
public static final Season SPRING=new Season();
public static final Season WINTER=new Season();
public static final Season SUMMER=new Season();
public static final Season AUTUMN=new Season();
private Season(){
}
}
<在5.0中使用模式做出枚举>
enum Season{
SPRING(..),//枚举值
SUMMER(..),
AUTUMN(..),
WINTER(..);
......
}
枚举是一个反射关联的典型,反射关联,即在类的定义中有自身类型的属性。
枚举本质上也是一个类,Enum是枚举的父类。
枚举中的values()方法会返回枚举中的所有枚举值
枚举中可以定义方法和属性,最后的一个枚举值要以分号和类定义分开,枚举中可以定义的构造方法。
枚举可以实现接口,枚举不能有子类也就是final的,枚举的构造方法是private(私有的),枚举中可以定义抽象方法,可以在枚举值的值中实现抽象方法,枚举值就是枚举的对象,枚举默认是final,枚举值可以隐含的匿名内部类来实现枚举中定义抽象方法。
枚举类(Enumeration Classes)和类一样,具有类所有特性。Season2的父类是java.lang.Enum;
隐含方法: Season2[] ss=Season2.values(); 每个枚举类型都有的方法。enum可以switch中使用(不加类名)。
switch( s ){
case SPRING:
…………….
case SUMMER:
…………….
}
枚举的有参构造
enum Season2{
SPRING(“春”),-------------------------------逗号
SUMMER(“夏”),-------------------------------逗号
AUTUMN(“秋”),-------------------------------逗号
WINTER(“冬”);-------------------------------分号
private String name;
Season2(String name){
this.name=name;
}
String getName(){
return name;
}
}
Season2.SPRING.getName()---------------------春
枚举的高级用法:
enum Operation{
ADD{
public double calculate(double s1,double s2){
return s1+s2;
}
},
SUBSTRACT{
public double calculate(double s1,double s2){
return s1-s2;
}
},
MULTIPLY{
public double calculate(double s1,double s2){
return s1*s2;
}
},
DIVIDE{
public double calculate(double s1,double s2){
return s1/s2;
}
};
public abstract double calculate(double s1 ,double s2);
}
有抽象方法枚举元素必须实现该方法。
使用条件:只在必要的时候进行。同时有参数为数组,就不能使用变长参数,有变长参数,就不能使用数组,不能共存。一个方法最多只能有一个变长参数,而且是最后一个参数。
<5.0之前>
public static void main(String[] args){}
JVM收到数据封装在数组里,然后传入方法
<5.0之后>
public static void m(String... s){
System.out.println("m(String)" +s);
}
调用m(String… s)
for(String s2:s){
System.out.println(s2);
}
格式化输出
格式化I/O(Formatted I/O)
java.util.Sacner类可以进行格式化的输入,可以使用控制台输入,结合了BufferedReader和StringTokener的功能。
增加了类似C的格式化输入输出,简单的例子:
public class TestFormat{
public static void main(String[] args){
Int a = 150000, b = 10;
float c = 5.0101f, d = 3.14f;
System.out.printf("%4d %4d%n", a, b);
System.out.printf("%x %x%n", a, b);
System.out.printf("%3.2f %1.1f%n", c, d);
System.out.printf("%1.3e %1.3e%n", c, d*100);
}
}
输出结果为:
150000 10
249f0 a
5.01 3.1
5.010e+00 3.140e+02
类型安全的枚举
枚举也是一个类型,枚举中的对象只能定义一次并在定义时给其初始化,定义之后不能再改变其值,只能从枚举中选择其一。
enum 枚举名{
枚举值1(..),枚举值2(..),.....;
}
<在5.0之前使用模式做出枚举>
final class Season{
public static final Season SPRING=new Season();
public static final Season WINTER=new Season();
public static final Season SUMMER=new Season();
public static final Season AUTUMN=new Season();
private Season(){
}
}
<在5.0中使用模式做出枚举>
enum Season{
SPRING(..),//枚举值
SUMMER(..),
AUTUMN(..),
WINTER(..);
......
}
枚举是一个反射关联的典型,反射关联,即在类的定义中有自身类型的属性。
枚举本质上也是一个类,Enum是枚举的父类。
枚举中的values()方法会返回枚举中的所有枚举值
枚举中可以定义方法和属性,最后的一个枚举值要以分号和类定义分开,枚举中可以定义的构造方法。
枚举可以实现接口,枚举不能有子类也就是final的,枚举的构造方法是private(私有的),枚举中可以定义抽象方法,可以在枚举值的值中实现抽象方法,枚举值就是枚举的对象,枚举默认是final,枚举值可以隐含的匿名内部类来实现枚举中定义抽象方法。
枚举类(Enumeration Classes)和类一样,具有类所有特性。Season2的父类是java.lang.Enum;
隐含方法: Season2[] ss=Season2.values(); 每个枚举类型都有的方法。enum可以switch中使用(不加类名)。
switch( s ){
case SPRING:
…………….
case SUMMER:
…………….
}
枚举的有参构造
enum Season2{
SPRING(“春”),-------------------------------逗号
SUMMER(“夏”),-------------------------------逗号
AUTUMN(“秋”),-------------------------------逗号
WINTER(“冬”);-------------------------------分号
private String name;
Season2(String name){
this.name=name;
}
String getName(){
return name;
}
}
Season2.SPRING.getName()---------------------春
枚举的高级用法:
enum Operation{
ADD{
public double calculate(double s1,double s2){
return s1+s2;
}
},
SUBSTRACT{
public double calculate(double s1,double s2){
return s1-s2;
}
},
MULTIPLY{
public double calculate(double s1,double s2){
return s1*s2;
}
},
DIVIDE{
public double calculate(double s1,double s2){
return s1/s2;
}
};
public abstract double calculate(double s1 ,double s2);
}
有抽象方法枚举元素必须实现该方法。
相关文章推荐
- java中的java5.0的新特性1(J2SE入门21)
- java中的Java5.0 的注释 (Annotation)、多线程包1(J2SE入门25)
- java中的Java5.0 的注释 (Annotation)、多线程包2(J2SE入门26)
- java中的java5.0的泛型2(J2SE入门24)
- java中的java5.0的泛型1(J2SE入门23)
- J2SE 5.0新特性(四)自动装箱/拆箱
- J2SE 5.0新特性(八)新的迭代语句
- 心得22--JDK新特性6-反射1-反射入门及Class类
- J2SE5.0新特性之范型编程
- J2SE5.0中最有趣的新特性:注释(annotation)
- J2SE(TM) 5.0 语言特性
- JAVA快速入门-面向对象三大特性-继承性
- 黑马程序员----------java基础知识之JDK5.0新特性总结
- J2SE5.0的新特性:ProcessBuilder
- java中的共享数据的并发处理(J2SE入门15)
- 黑马程序员___java5.0新特性
- J2SE5.0新特性之使用代理服务器
- J2SE5.0中新特性:注释
- Java中的类装载机制、反射机制、JDK5.0版本新加入一些特性
- J2SE 5.0新特性之static import