马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马太效应 于 2017-7-29 22:49 编辑
今天是第25天,八月份已经快到了,还没有把一本书学完一半,要加强理解与学习。(20170729)
①使用enum枚举常数
在JDK5之后新增了enum语法,可用于定义枚举常数。public enum Action2 {
STOP,RIGHT,LEFT,UP,DOWN
}
enum继承自java.lang.Enum,不过这是由编译程序处理,直接撰写程序继承Enum类会被编译程序拒绝。
enum实际上定义了类,而enum中列举的常数,实际上是public static final,且为枚举类型实例,无法撰写程序直接实例化枚举类型,因为构造函数权限设定为private,只有类中才可以实例化。
import static java.lang.System.out;
public class Game {
public static void main(String[] args) {
play(Action2.RIGHT); //只能传入Action2实例
play(Action2.UP);
}
public static void play(Action2 action) { //声明为Action2类型
switch (action) {
case STOP: //也就是Action2.STOP
out.println("播放停止动画");
break;
case RIGHT:
out.println("播放向右动画");
break;
case LEFT:
out.println("播放向左动画");
break;
case UP:
out.println("播放向上动画");
break;
case DOWN:
out.println("播放向下动画");
break;
}
}
}
结果是——
播放向右动画
播放向上动画
这这里,play()方法中的action参数声明为Action2类型,所以只接受Action2的实例,case比较也只能列举Action2实例。
②语法细节
1.要在类中定义枚举常数,一定要明确写出public static final。
2.从JDK8开始,若接口仅定义一个抽象方法,可以使用Lambda表达式来简化程序的撰写。
Some some=new Some(){ //Some是一个接口,这是最初的程序
public void doService(){
System.out.println("做一些有用的事");
}
}
Some some=()->{
out.println("做一些有用的事");//这是使用Lambda表达式简化后的程序
}
3.在JDK8出现前,如果要在匿名内部类中存取局部变量,则该局部变量必须是final,否则会发生编译错误。
局部变量的生命周期往往比对象短,像是方法调用后返回对象,局部变量生命周期就结束了,此时再通过对象尝试存取局部变量会发生错误,Java的做法是采取传值。
③异常处理
1.API关于java.lang.Throwable
Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。
两个子类的实例,Error 和 Exception,通常用于指示发生了异常情况。通常,这些实例是在异常情况的上下文中新近创建的,因此包含了相关的信息(比如堆栈跟踪数据)。
2.使用try,catch
import java.util.*;
public class Average2 {
public static void main(String[] args) {
try {
Scanner console = new Scanner(System.in);
double sum = 0;
int count = 0;
while (true) {
int number = console.nextInt();
if (number == 0) {
break;
}
sum += number;
count++;
}
System.out.printf("平均%.2f%n", sum / count);
} catch (InputMismatchException ex) {
System.out.println("必须输入整数");
}
}
}
Java中所有错误都会被包装为对象,可以尝试(try)执行程序并捕捉(catch)代表错误的对象后做一些处理。
使用了try、catch语法,JVM会尝试执行try区块中的程序代码,如果发生错误,执行流程会跳离错误点,然后比对catch括号中声明的类型,是否符合被抛出的错误对象类型,如果是的话,就执行catch区块中的程序代码。
console vt.安慰,慰问;
n.控制台,操纵台; 演奏台; 悬臂; 肘托;
exception n.例外,除外; 反对,批评; [法律] 异议,反对;
applicable adj.适当的; 可应用的;
|