package JDKNews;
public class Demo01Direction01 {
// 创建几个实例
public static final Demo01Direction01 FRONT = new Demo01Direction01();
public static final Demo01Direction01 BEHIND = new Demo01Direction01();
public static final Demo01Direction01 LEFT = new Demo01Direction01();
public static final Demo01Direction01 RIGHT = new Demo01Direction01();
// 构造私有,别人就不能无限的创建了
private Demo01Direction01() {
}
}
package JDKNews;
public class Demo01Direction02 {
// 创建几个实例
public static final Demo01Direction02 FRONT = new Demo01Direction02("前");
public static final Demo01Direction02 BEHIND = new Demo01Direction02("后");
public static final Demo01Direction02 LEFT = new Demo01Direction02("左");
public static final Demo01Direction02 RIGHT = new Demo01Direction02("右");
// 构造私有,别人就不能无限的创建了
// private Demo01Direction02() {
// }
// 加入成员变量,并去掉无参构造
private String name;
private Demo01Direction02(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
package JDKNews;
public abstract class Demo01Direction03 {
// 创建几个实例
public static final Demo01Direction03 FRONT = new Demo01Direction03("前") {
@Override
public void show() {
System.out.println("前");
}
};
public static final Demo01Direction03 BEHIND = new Demo01Direction03("后") {
@Override
public void show() {
System.out.println("后");
}
};
public static final Demo01Direction03 LEFT = new Demo01Direction03("左") {
@Override
public void show() {
System.out.println("左");
}
};
public static final Demo01Direction03 RIGHT = new Demo01Direction03("右") {
@Override
public void show() {
System.out.println("右");
}
};
// 构造私有,别人就不能无限的创建了
// private Direction2() {
// }
// 加入成员变量,并去掉无参构造
private String name;
private Demo01Direction03(String name) {
this.name = name;
}
public String getName() {
return name;
}
// 加入抽象方法
public abstract void show();
}
package JDKNews;
public class Demo01 {
public static void main(String[] args) {
Demo01Direction01 d = Demo01Direction01.FRONT;
System.out.println(d); // cn.itcast_01.Direction@175078b
System.out.println("------------------------------------");
Demo01Direction02 d2 = Demo01Direction02.FRONT;
System.out.println(d2);// cn.itcast_01.Direction2@11563ff
System.out.println(d2.getName());
d2 = Demo01Direction02.RIGHT;
System.out.println(d2);
System.out.println(d2.getName());
System.out.println("------------------------------------");
Demo01Direction03 d3 = Demo01Direction03.FRONT;
System.out.println(d3);
System.out.println(d3.getName());
d3.show();
d3 = Demo01Direction03.LEFT;
System.out.println(d3);
System.out.println(d3.getName());
d3.show();
}
}
枚举
package JDKNews;
/*
* 通过JDK5提供的枚举来做枚举类
*/
public enum Demo02Direction01 {
FRONT, BEHIND, LEFT, RIGHT;
}
package JDKNews;
/*
* 通过JDK5提供的枚举来做枚举类
*/
public enum Demo02Direction02 {
FRONT("前"), BEHIND("后"), LEFT("左"), RIGHT("右");
private String name;
private Demo02Direction02(String name) {
this.name = name;
}
public String getName() {
return name;
}
// @Override
// public String toString() {
// return "我爱林青霞";
// }
}
package JDKNews;
/*
* 通过JDK5提供的枚举来做枚举类
*/
public enum Demo02Direction03 {
FRONT("前") {
@Override
public void show() {
System.out.println("前");
}
},
BEHIND("后") {
@Override
public void show() {
System.out.println("后");
}
},
LEFT("左") {
@Override
public void show() {
System.out.println("左");
}
},
RIGHT("右") {
@Override
public void show() {
System.out.println("右");
}
};
private String name;
private Demo02Direction03(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract void show();
}
package JDKNews;
public class Demo02DirectionDemo {
public static void main(String[] args) {
Demo02Direction01 d = Demo02Direction01.FRONT;
System.out.println(d); // FRONT
// public String toString()返回枚举常量的名称,它包含在声明中。
System.out.println("-------------");
Demo02Direction02 d2 = Demo02Direction02.FRONT;
System.out.println(d2);
System.out.println(d2.getName());
System.out.println("-------------");
Demo02Direction03 d3 = Demo02Direction03.FRONT;
System.out.println(d3);
System.out.println(d3.getName());
d3.show();
System.out.println("--------------");
Demo02Direction03 dd = Demo02Direction03.FRONT;
dd = Demo02Direction03.LEFT;
switch (dd) {
case FRONT:
System.out.println("你选择了前");
break;
case BEHIND:
System.out.println("你选择了后");
break;
case LEFT:
System.out.println("你选择了左");
break;
case RIGHT:
System.out.println("你选择了右");
break;
}
}
}
package JDKNews;
public class Demo02EnumMethod {
public static void main(String[] args) {
// int compareTo(E o)
Demo02Direction02 d21 = Demo02Direction02.FRONT;
Demo02Direction02 d22 = Demo02Direction02.BEHIND;
Demo02Direction02 d23 = Demo02Direction02.LEFT;
Demo02Direction02 d24 = Demo02Direction02.RIGHT;
System.out.println(d21.compareTo(d21));
System.out.println(d21.compareTo(d24));
System.out.println(d24.compareTo(d21));
System.out.println("---------------");
// String name()
System.out.println(d21.name());
System.out.println(d22.name());
System.out.println(d23.name());
System.out.println(d24.name());
System.out.println("--------------");
// int ordinal()
System.out.println(d21.ordinal());
System.out.println(d22.ordinal());
System.out.println(d23.ordinal());
System.out.println(d24.ordinal());
System.out.println("--------------");
// String toString()
System.out.println(d21.toString());
System.out.println(d22.toString());
System.out.println(d23.toString());
System.out.println(d24.toString());
System.out.println("--------------");
// <T> T valueOf(Class<T> type,String name)
Demo02Direction02 d = Enum.valueOf(Demo02Direction02.class, "FRONT");
System.out.println(d.getName());
System.out.println("----------------");
// values()
// 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便
Demo02Direction02[] dirs = Demo02Direction02.values();
for (Demo02Direction02 d2 : dirs) {
System.out.println(d2);
System.out.println(d2.getName());
}
}
}
package JDKNews;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Demo03 {
public static void main(String[] args) {
// 二进制字面量
int x = 0b100101;
System.out.println(x);
// 数字字面量可以出现下划线
int y = 1_1123_1000;
// 不能出现在进制标识和数值之间
int z = 0x111_222;
// 不能出现在数值开头和结尾
int a = 0x11_22;
// 不能出现在小数点旁边
double d = 12.3_4;
// switch 语句可以用字符串?自己回顾
// 泛型简化
ArrayList<String> array = new ArrayList<>();
// 异常的多个catch合并
method();
}
private static void method() {
// try-with-resources 语句
// try(必须是java.lang.AutoCloseable的子类对象){…}
try {
FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
fw.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
// 改进版的代码
try (FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");) {
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}