java枚举基础入门.docx
《java枚举基础入门.docx》由会员分享,可在线阅读,更多相关《java枚举基础入门.docx(13页珍藏版)》请在冰豆网上搜索。
java枚举基础入门
1枚举类
Direction.java
packagecn.itcast_02;
/*
*通过JDK5提供的枚举来做枚举类
*/
publicenumDirection{
FRONT,BEHIND,LEFT,RIGHT;
}
Direction2.java
packagecn.itcast_02;
/*
*通过JDK5提供的枚举来做枚举类
*/
publicenumDirection2{
FRONT("前"),BEHIND("后"),LEFT("左"),RIGHT("右");
privateStringname;
privateDirection2(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
//@Override
//publicStringtoString(){
//return"我爱林青霞";
//}
}
Direction3.java
packagecn.itcast_02;
/*
*通过JDK5提供的枚举来做枚举类
*/
publicenumDirection3{
FRONT("前"){
@Override
publicvoidshow(){
System.out.println("前");
}
},
BEHIND("后"){
@Override
publicvoidshow(){
System.out.println("后");
}
},
LEFT("左"){
@Override
publicvoidshow(){
System.out.println("左");
}
},
RIGHT("右"){
@Override
publicvoidshow(){
System.out.println("右");
}
};
privateStringname;
privateDirection3(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
publicabstractvoidshow();
}
DirectionDemo.java
packagecn.itcast_02;
publicclassDirectionDemo{
publicstaticvoidmain(String[]args){
Directiond=Direction.FRONT;
System.out.println(d);//FRONT
//publicStringtoString()返回枚举常量的名称,它包含在声明中。
System.out.println("-------------");
Direction2d2=Direction2.FRONT;
System.out.println(d2);
System.out.println(d2.getName());
System.out.println("-------------");
Direction3d3=Direction3.FRONT;
System.out.println(d3);
System.out.println(d3.getName());
d3.show();
System.out.println("--------------");
Direction3dd=Direction3.FRONT;
dd=Direction3.LEFT;
switch(dd){
caseFRONT:
System.out.println("你选择了前");
break;
caseBEHIND:
System.out.println("你选择了后");
break;
caseLEFT:
System.out.println("你选择了左");
break;
caseRIGHT:
System.out.println("你选择了右");
break;
}
}
}
EnumMethodDemo.java
packagecn.itcast_02;
publicclassEnumMethodDemo{
publicstaticvoidmain(String[]args){
//intcompareTo(Eo)
Direction2d21=Direction2.FRONT;
Direction2d22=Direction2.BEHIND;
Direction2d23=Direction2.LEFT;
Direction2d24=Direction2.RIGHT;
System.out.println(pareTo(d21));
System.out.println(pareTo(d24));
System.out.println(pareTo(d21));
System.out.println("---------------");
//Stringname()
System.out.println(d21.name());
System.out.println(d22.name());
System.out.println(d23.name());
System.out.println(d24.name());
System.out.println("--------------");
//intordinal()
System.out.println(d21.ordinal());
System.out.println(d22.ordinal());
System.out.println(d23.ordinal());
System.out.println(d24.ordinal());
System.out.println("--------------");
//StringtoString()
System.out.println(d21.toString());
System.out.println(d22.toString());
System.out.println(d23.toString());
System.out.println(d24.toString());
System.out.println("--------------");
//TvalueOf(Classtype,Stringname)
Direction2d=Enum.valueOf(Direction2.class,"FRONT");
System.out.println(d.getName());
System.out.println("----------------");
//values()
//此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便
Direction2[]dirs=Direction2.values();
for(Direction2d2:
dirs){
System.out.println(d2);
System.out.println(d2.getName());
}
}
}
3二进制字面量
packagecn.itcast_03;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.ArrayList;
publicclassDemo{
publicstaticvoidmain(String[]args){
//二进制字面量
intx=0b100101;
System.out.println(x);
//数字字面量可以出现下划线
inty=1_1123_1000;
//不能出现在进制标识和数值之间
intz=0x111_222;
//不能出现在数值开头和结尾
inta=0x11_22;
//不能出现在小数点旁边
doubled=12.3_4;
//switch语句可以用字符串?
自己回顾
//泛型简化
ArrayListarray=newArrayList<>();
//异常的多个catch合并
method();
}
privatestaticvoidmethod(){
//try-with-resources语句
//try(必须是java.lang.AutoCloseable的子类对象){…}
try{
FileReaderfr=newFileReader("a.txt");
FileWriterfw=newFileWriter("b.txt");
intch=0;
while((ch=fr.read())!
=-1){
fw.write(ch);
}
fw.close();
fr.close();
}catch(IOExceptione){
e.printStackTrace();
}
//改进版的代码
try(FileReaderfr=newFileReader("a.txt");
FileWriterfw=newFileWriter("b.txt");){
intch=0;
while((ch=fr.read())!
=-1){
fw.write(ch);
}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
4计算一段代码的运行时间
ForDemo.java
packagecn.itcast_01;
publicclassForDemoextendsGetTime{
@Override
publicvoidcode(){
for(intx=0;x<100000;x++){
System.out.println(x);
}
}
}
GetTime.java
packagecn.itcast_01;
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
publicabstractclassGetTime{
//需求:
请给我计算出一段代码的运行时间
publiclonggetTime(){
longstart=System.currentTimeMillis();
//for循环
//for(intx=0;x<10000;x++){
//System.out.println(x);
//}
//视频
//try{
//BufferedInputStreambis=newBufferedInputStream(
//newFileInputStream("a.avi"));
//BufferedOutputStreambos=newBufferedOutputStream(
//newFileOutputStream("b.avi"));
//byte[]bys=newbyte[1024];
//intlen=0;
//while((len=bis.read(bys))!
=-1){
//bos.write(bys,0,len);
//}
//bos.close();
//bis.close();
//}catch(IOExceptione){
//e.printStackTrace();
//}
//再给我测试一个代码:
集合操作的,多线程操作,常用API操作的等等...
code();
longend=System.currentTimeMillis();
returnend-start;
}
publicabstractvoidcode();
}
GetTimeDemo.java
packagecn.itcast_01;
publicclassGetTimeDemo{
publicstaticvoidmain(String[]args){
//GetTimegt=newGetTime();
//System.out.println(gt.getTime()+"毫秒");
GetTimegt=newForDemo();
System.out.println(gt.getTime()+"毫秒");
gt=newIODemo();
System.out.println(gt.getTime()+"毫秒");
}
}
IODemo.java
packagecn.itcast_01;
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
publicclassIODemoextendsGetTime{
@Override
publicvoidcode(){
try{
BufferedInputStreambis=newBufferedInputStream(
newFileInputStream("a.avi"));
BufferedOutputStreambos=newBufferedOutputStream(
newFileOutputStream("b.avi"));
byte[]bys=newbyte[1024];
intlen=0;
while((len=bis.read(bys))!
=-1){
bos.write(bys,0,len);
}
bos.close();
bis.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
5手机彩铃
IPhone.java
packagecn.itcast_02;
publicclassIPhoneimplementsPhone{
@Override
publicvoidcall(){
System.out.println("手机可以打电话了");
}
}
MusicPhoneDecorate.java
packagecn.itcast_02;
publicclassMusicPhoneDecorateextendsPhoneDecorate{
publicMusicPhoneDecorate(Phonep){
super(p);
}
@Override
publicvoidcall(){
super.call();
System.out.println("手机可以听音乐");
}
}
Phone.java
packagecn.itcast_02;
publicinterfacePhone{
publicabstractvoidcall();
}
PhoneDecorate.java
packagecn.itcast_02;
publicabstractclassPhoneDecorateimplementsPhone{
privatePhonep;
publicPhoneDecorate(Phonep){
this.p=p;
}
@Override
publicvoidcall(){
this.p.call();
}
}
PhoneDemo.java
packagecn.itcast_02;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.util.Scanner;
publicclassPhoneDemo{
publicstaticvoidmain(String[]args){
Phonep=newIPhone();
p.call();
System.out.println("------------");
//需求:
我想在接电话前,听彩铃
PhoneDecoratepd=newRingPhoneDecorate(p);
pd.call();
System.out.println("------------");
//需求:
我想在接电话后,听音乐
pd=newMusicPhoneDecorate(p);
pd.call();
System.out.println("------------");
//需求:
我要想手机在接前听彩铃,接后听音乐
//自己提供装饰类,在打电话前听彩铃,打电话后听音乐
pd=newRingPhoneDecorate(newMusicPhoneDecorate(p));
pd.call();
System.out.println("----------");
//想想我们在IO流中的使用
//InputStreamis=System.in;
//InputStreamReaderisr=newInputStreamReader(is);
//BufferedReaderbr=newBufferedReader(isr);
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
BufferedWriterbw=newBufferedWriter((newOutputStreamWriter(
System.out)));
Scannersc=newScanner(System.in);
}
}
RightPhoenDemo.java
packagecn.itcast_02;
publicclassRingPhoneDecorateextendsPhoneDecorate{
publicRingPhoneDecorate(Phonep){
super(p);
}
@Override
publicvoidcall(){
System.out.println("手机可以听彩铃");
super.call();
}
}