课中:
理论课:
- 带恒定初始值的final static基本类型全用大写字母命名,并且字与字之间用下划线隔开。
- Java允许在参数列表中以声明的方式将参数指明为final。
- final有两个作用,第一个是把方法锁定,使它不能重写,第二个原因是效率,它会根据自己的谨慎判断,跳过插入程序代码这种正常方式而执行方法调用机制,并且以方法体中的实际代码的副本来替代方法调用。
- 类中的所有private方法都隐式地指定为是final的。
- 当某个类的整体定义为final时,就表明了你不打算继承该类,而且也不允许别人这样做。
- try catch语句后面的finally一定会执行,不管后面有没有发生异常都会执行的代码。
- CheckedException这类异常在编译时就必须做出处理,否则无法通过编译。
实验课:
这节课老师讲解了我们的第七次关于异常的作业,对于我来说,比较有难度的是第三题以后,通过老师的讲解和我后面敲代码,我学习了更多关于异常的知识点。
/*
* 3.编写一个计算N个学生平均分数的程序编写一个程序Ch7Demo3类,程序应该提示用
* 户输入N的值 ,并输入相应的分数,如果用户输入的一个负分数,则应该抛出一个异常
* 并捕获,提示“分数必须是正数或者0”,并提示用户再次输入分数。
*/
public class Ch7Demo3 {
public static void main(String[] args) throws MyException {//声明异常
Scanner cin = new Scanner(System.in);
System.out.println("请输入N的值:");
int N = cin.nextInt();
double all = 0;
for(int i = 0;i < N;i++){
int score;
score = cin.nextInt();
scoreIf(score);
all += score ;
}
System.out.println(all/N);
}
public static void scoreIf(double score) throws MyException{//声明异常
if(score <0){
throw new MyException("分数必须为正数!");//抛出异常
}
}
}
class MyException extends Exception{//自定义一个异常类
public MyException(String message) {
System.out.println(message);
// TODO Auto-generated constructor stub
}
第四题我现在还不能够自己写出来,这对于我现在的编程能力来说是有一定难度的,所以我要通过多做这种文件类型的题目去提升我的熟练度。
/*
* 5. 编写一个程序Ch7Demo5类,并在类中写一个方法
* void isTriangle(int a,int b,int c),判断三个参数是否能构成一个三角
* 形。如果不能,则抛出异常IllegalArgumentException,显示:“a,b,c不能构
* 成三角形”,如果可以,则显示三角形的三个边长。在主方法提示用户输入三个整数,
* 调用此方法,并捕获异常和处理异常。
*/
public class Ch7Demo5 {
public static void isTriangle(int a,int b,int c) throws IllegalArgumentException{//静态的方法声明异常
if((a+b>c)&&(a+c>b)&&(b+c>a)){//三角形条件
System.out.println("三角形的三个边长为:"+a+" "+b+" "+c);
}else{
throw new IllegalArgumentException();//抛出异常
}
}
public static void main(String[] args) {
System.out.println("请输入三角形的三条边:a、b、c:");
Scanner cin = new Scanner(System.in);
int a = cin.nextInt();
int b = cin.nextInt();
int c = cin.nextInt();
cin.close();
try{
isTriangle(a,b,c);
}catch(IllegalArgumentException e){
System.out.println("a,b,c不能构成三角形");
}
}
第六题和第三题题型差不多,这类题型我差不多可以掌握,但也需要加强练习。
/*
* 7. 编写一个程序Ch7Demo7类,提示用户输入一个目录名称,然后使用File类中
* 的mkdirs方法创建相应的目录,如果目录创建成功则显示“目录创建成功”,如果目
* 录已经存在,则显示“目录已经存在,不需创建了”。
*/
public class Ch7Demo7 {
public static void main(String[] args) {
System.out.println("请输入一个目录名称:");
Scanner cin = new Scanner(System.in);
String f = cin.nextLine();
File file = new File(f);
if(!file.exists()){
System.out.println("目录创建成功");
}else{
System.out.println("目录已经存在,不需创建了");
}
}
和第四题一样,我对File的用法不够了解,导致做题目的时候会卡在这个地方。
预习:
- 泛型和类型安全的容器。
- 基本概念
- 添加一组元素
- 容器的打印
- List
- 迭代器:ListIterator
- LinkedLink
总结:
这周我们学了final的用法和作用,进一步了解了如何去写异常的题目以及异常给我们编程带来的便利,但深入了解异常需要我们去编写大量的代码才能够得出宝贵的经验。同时,我慢慢意识到,只有在写题目的过程中碰到错误尽量自己去百度,这样才能进步比较快,在写代码过程中碰到的错误我们可以看看别人是怎么处理的,然后学习别人的过程。总之,只要功夫深,铁杵磨成针,无论在学习什么,我们都要努力。