`
hao861002
  • 浏览: 86496 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java复习第八天

阅读更多

一、复习
接口
是个特殊的抽象类,属性:公开静态常量,方法:公开抽象方法
没有构造方法
接口之间可以多继承,一个类在继承另外一个类的同时,和可以实现多个接口

优点:
1、实现多继承,不会破坏类之间的单继承简单的树状关系。区分主类型和次要类型。
2、标准,解耦合工具
   标准的使用者和标准的实现者通过借口隔离开,使得接口实现者的改变对使用者没有影响

接口的回调:
有了接口之后,先有接口使用者,后有接口的实现者,把接口实现者对象传给接口使用者,接口使用者通过接口,调用接口实现这中的方法

二、Object
java中所有的类的父类或直接或间接的或隐含的都是Object类。
java不允许循环继承,也就是互相继承是不可以的。

主要方法:
(1)finalize():对象被垃圾收集的时候最后调用的方法
      不能把释放资源的代码写在其中,程序员不能控制调用时机
(2)equals(): 对象内容的比较
      Object类中的boolean equals(Object o)方法是用来比较对象的内容是否相等,其返回值是boolean类型的值,相同为真,不同则为假。
      实际上还是比较对象地址是否相同。String类覆盖了equals()方法,他比较是对象中的内容是否相同。
      子类中也推荐覆盖Object类中继承的equals()方法,自己制定比较规则

      自反性:s.equals(s)  true
      对称性:s1.equals(s2) true
             s2.equals(s1) true
      传递性:s1.equals(s2) true
             s2.equals(s3) true
             则 s1.equals(s3) true
      覆盖equals()方法的步骤
           boolean equals(Object o){
                if(this==o) return true;//1,看看是不是一个对象
                if(o==null) return true;//2,看看对象是不是空
                if(!(o instanceof 本类类名)) return false;//看看是不是本类对象
                ......//根据本类设计。
            }
(3)toString():返回对象的字符串表现形式
      Object类中的toString()方法他返回的是类名加上他的地址的一个字符串。在子类中推荐覆盖toString()方法。
      System.out.println(person);实际上打印的是person对象toString方法的返回值.
     

练习:
Employe类 属性:name,age,salary
把equals().toString()方法覆盖


三、封装类
JAVA为每一个简单数据类型提供了一个封装类,使每个简单数据类型可以被Object来装载。
除了int(Integer)和char(Character),其余类型首字母大写即成封装类类型名。

转换字符的方式:
int I=10;
String s=I+” ”;
String s1=String.valueOf(i);

Int I=10;
Interger I_class=new integer(I);

封装类.字符串.基本类型

int--------------------(Integer(x.toString))---------------->Integer
String -----------------(Integer.valueOf() )---------------->Integer
Integer-----------------(x.toString() )--------------------->String
int----------------------(100+””)------------------------->String
String------------------(Integer.parseInt() )--------------->int
Integer-----------------(Integer.intValue() )--------------->int

四、异常
帮错误发生的时候减少损失,提高容错性

1、常的分类
Throwable有两个子类:Error和Exception。
一个Error对象表示一个程序错误,指的是底层的、低级的、不可恢复的严重错误。此时程序一定会退出,因为已经失去了运行所必须的物理环境。
对于Error错误我们无法进行处理,因为我们是通过程序来应对错误,可是程序已经退出了。
我们可以处理的Throwable类中只有Exception类的对象(例外/异常)。

                       Throwable
                          |
                  ------------------
                  |                 |
              Error             Exception
                                    |
                             --------------
                            |              |
                  RuntimeException      非Runtime异常
                  未检查异常             已检查异常
                  由于程序员疏忽造成的    不可避免的
                  可避免的               必须处理
                  可处理,可不处理

2、异常的产生和传递
  throw  new一个异常对象;   ---表示抛出一个异常
  throw new NullPointerException();
  相当于return,函数返回上一级

传递:
沿着方法调用链反向传递!
当一个方法中出现异常,而没有作处理,则以异常对象为返回值返回调用处(逐级传递)
异常返回给虚拟机时,虚拟机终止退出,程序结束

3、异常的处理
  (1)声明抛出 
       是方法声明的第五部分  throws+异常名字(多个异常用“,”分隔)
       出现异常,不处理,抛给上一级处理
       并且子类抛出异常的范围不能比父类抛出异常的范围更宽。
  (2)捕获异常
       try - catch
       try - catch - finally
       try - finally     //不捕获异常,当异常发生,返回上一级之前,要运行finally中的代码
       以上语句可以嵌套

       返回类型 方法名(参数){
try{
可能出错语句
正常语句
}catch(异常类 e){  //某种异常的引用
对异常的处理

正常语句


       捕获多个异常:
       程序任何时刻只发生一个异常
可对产生的每个异常分别捕捉,也可由同一异常进行处理,前提是这个共用的异常应该是所有这些该被捕获的异常的父类,但是,对于非受查异常不成立
当try后面有多个语句块时,注意catch异常的顺序,子类必须放在父类的前面

       finally关键字
无论异常是否发生,一定会执行的代码,可放在finally块内。
要点:没有异常产生时:正常执行try{}catch(){} —> 进入finally语句块 —> 方法中剩余代码
     有异常产生时(捕找到) —> 进入catch处理 —> 进入finally语句块 —> 方法中剩余代码
     有异常产生时(没捕找到)—> 进入finally语句块 —> 离开方法
       一般写一些释放资源的代码
       在try - catch 块中遇到System.exit(0);则不会执行finally中的代码

       Throwable有一个message属性。在使用catch的时候可以调用:
       Catch(IOException e){System.out.println(e.getMessage())};  //打印出来的是创建(throw new)异常对象的时候,给定的参数
       Catch(IOException e){e.printStackTrace()};                 //打印堆栈追踪信息
       以上两条语句都是可以打印出错的过程信息。告诉我们出错类型所历经的过程,在调试的中非常有用。

开发中的两个道理:
①如何控制try的范围:根据操作的连动性和相关性,如果前面的程序代码块抛出的错误影响了后面程序 代码的运行,那么这个我们就说这两个程序代码存在关联,应该放在同一个try中。
②对已经查出来的例外,有throw(消极)和try catch(积极)两种处理方法。
对于throws把异常抛到try catch能够很好地处理异常的位置(即放在具备对异常进行处理的能力的位置 )。如果没有处理能力就继续上抛。

4、自定义异常
   (1)继承Exception类
   (2)构造方法:
不带参数的构造方法
带参数的构造方法:参数指出错误性质,super(message);把参数传递给父类构造异常

作业
(1)为Account类及其子类添加toString方法和equals方法
(2)(Exception)
为BAM添加几个异常类

BalanceNotEnoughException :用于取钱的时候余额不足的情况(包括账户余额超过透支额的情况)
RegisterException:用于开户异常的情况,例如密码两次输入不一致等情况
LoginException:用户登录异常的情况,例如id错误,密码错误
LoanException:贷款额不能为负数,如果用户试图将贷款额置为负数,则会抛出这个异常

以上四个异常类有一个共同的父类 BusinessException
并妥善的处理这些异常
分享到:
评论

相关推荐

    JAVA复习题库JAVA复习题库

    这个"JAVA复习题库"旨在帮助学习者巩固和深化对Java语言的理解,准备相关考试或者面试。以下是对Java核心知识点的详细阐述: 1. **Java基础** - **变量与数据类型**:Java支持基本数据类型(如int、char、boolean...

    在达内学习java的笔记

    8. **Java复习第八天**:可能会介绍集合框架,包括List、Set、Map接口以及ArrayList、LinkedList、HashSet、HashMap等实现类的使用。 9. **Java复习第九天**:可能讲解IO流,包括文件操作、字节流、字符流、缓冲流...

    java语言程序设计(第八版)复习题答案

    ### Java语言程序设计(第八版)复习题答案解析 #### Chapter 7 多维数组 本章主要讨论了多维数组的基本概念、定义方法以及如何处理不同类型的多维数组问题。下面将根据提供的复习题答案进行详细解析。 ##### 1. ...

    java语言程序设计第八版复习题答案

    10. **Java 8及更高版本的新特性**:例如Lambda表达式、Stream API、Optional类、日期时间API的改进等,这些都是第八版教材中可能强调的重点。 复习这些知识点对于准备Java语言程序设计的考试或面试至关重要。通过...

    JAVA 课件 复习材料

    老师发的复习材料 第一讲_Java概述 第二讲_Java语法基础 第三讲_类对象和方法 第四讲_继承和接口 第五讲_字符串 第六讲_异常 第七讲_输入输出、网络通讯 第八讲_Java的数据结构 第九讲_数据库编程

    Java SE 复习资料

    1. **基础语法**:这是学习Java的第一步,包括数据类型(如基本类型和引用类型)、变量、运算符、控制结构(如if-else、switch、for、while循环)、方法、数组等。理解这些概念对于编写任何Java程序都是至关重要的。...

    JAVA书本复习题答案整合

    "JAVA书本复习题答案整合"是一个精心整理的资源包,它集合了多套Java书本复习题目及其对应的答案,旨在帮助学习者高效地备考期末考核。 1. **Java基础知识**:复习题可能涵盖了Java的基础语法,如变量、数据类型、...

    Java语言程序设计基础篇(第八版)课后复习题解答

    《Java语言程序设计基础篇(第八版)》是一本深入浅出的教材,旨在帮助初学者掌握Java编程的基本概念和技术。课后复习题是学习过程中的重要组成部分,它们能够帮助学生巩固课堂所学,提升编程技能。 本压缩包文件...

    java 考试复习指南

    【Java 考试复习指南】 1. Java 编译过程:Java 源程序文件(扩展名为 .java)经过Java编译器编译后,会生成字节码文件(扩展名为 .class)。这是Java程序运行的基础,因为JVM(Java虚拟机)执行的是字节码。 2. ...

    java程序语言设计第十版复习题答案

    Java程序语言设计是编程学习的重要领域,特别是在第十版中,作者深入浅出地讲解了Java的核心概念和技术。...这份"java程序语言设计原书第十版基础复习题答案"将是你宝贵的参考资料,帮助你在学习过程中找到正确的方向。

    Java复习资料

    8. **第八章:多线程** - 线程的创建方式:继承Thread类与实现Runnable接口 - 线程同步:synchronized关键字,wait(),notify(),notifyAll() - 线程池与ExecutorService 9. **第九章:反射机制** - Class类与...

    JAVA复习ppt

    这个“JAVA复习ppt”很可能是华南理工大学为了帮助学生系统复习Java编程知识而制作的教学材料。Java的特点包括跨平台性、简单性、面向对象、健壮性和安全性,这些特性使得它成为开发桌面应用、企业级应用、移动应用...

    java语言程序设计 进阶版 第十版 复习题答案

    本书《Java语言程序设计 进阶版 第十版》提供的复习题及其答案,旨在帮助读者巩固并深化对Java语言的理解。下面将详细讨论复习题中涉及的一些关键知识点。 1. **面向对象编程**:Java是一种面向对象的语言,复习题...

    Java 复习资料 Java课件 Java学习

    这份“Java复习资料”包含了丰富的Java学习资源,旨在帮助学习者巩固和提升他们的Java编程技能。 Java的学习通常分为几个关键部分: 1. **基础语法**:Java的基础包括变量、数据类型、运算符、控制结构(如if语句...

    java期末复习资料

    8、在HTML中嵌入Java Applet,需要使用`<applet>`标签,并指定`code`属性,该属性的值应为Applet的主类的`.class`文件名,不包括文件扩展名。因此,正确的HTML代码是`...

    JAVA课程总复习

    【JAVA课程总复习】 在Java编程领域,复习是巩固学习成果和提升技能的关键步骤。"JAVA课程总复习"涵盖了从基础到高级的各种Java知识点,旨在帮助开发者系统地回顾和理解这个强大而广泛应用的编程语言。 首先,我们...

    java实用教程(第三版)第八章课后习题答案(耿祥义)

    ### Java实用教程(第三版)第八章课后习题答案解析 #### 第八章第1题:GUI设计与实现 本题旨在通过四个不同的Java类的设计与实现来帮助读者掌握Swing框架的基本用法,包括如何创建对话框、处理用户事件等。下面将对...

    java期末复习 (1)

    Java语言是在1995年由Sun Microsystems公司第一次正式发布的,James Gosling被誉为Java之父。 #### 八进制整数表示 4. **答案**:选项D。`0144`表示八进制整数,其十进制等值为100。 #### 编译错误 5. **答案**:...

Global site tag (gtag.js) - Google Analytics