一、Object类简介

  1.Object类简介 

    Object,是Java一切对象的最高父类;如果一个类没有显示继承一个类,他的父类就是Object;

        它描述的是Java世界里所有对象最最共性的信息,它的类型的变量,可以指代Java中的所有对象,相当于我们生活中说的“东西”这个词;

    

    

   2. equals方法:

       

      equals方法,作用就是比较两个对象是否 相等;

      生活中的相等性比较:

      班长买了个手机;副班长也买了个手机,然后就有可能比较两个手机是否一样;

      比如,手机的品牌、价格、尺寸、外观等等都一样,就可以认为是两个一样的东西;

      我们发现直接使用从Object类中继承的equals方法,不能满足我们的需要,然后查看源代码中的实现

      

      所以需要重写这个equals方法,以满足我们的需求;

           

      一般开发中,都要重写一个对象的equals方法;

  3. toString方法

        

    根据描述发现,直接从object类继承来的toString方法,也是不符合我们的使用要求的;

    我们更希望可以直接输出对象的属性值,所以需要重写toString方法;

    

二. 异常   

    前面一直在教大家怎么写好一个程序;但是,对于程序中有可能出现的问题,以及出现问题该怎么解决,都没说过;今天,我们就来学习这方面的东西;

  1. 异常的概念  

    异常:就是不正常;

    生活中的不正常:生病;电脑突然蓝屏;骑车突然掉链子等等等等……

    程序中的不正常:就是程序不出现我们预期的结果;

    Java中的异常:空指针异常;下标越界异常;类型转换异常……

    因为一般程序都要使用第三方数据,或者都有接受客户的输入信息,但是这些第三方数据和客户输入的数据都是不可控的,所以程序中有可能会出现各种异常情况,这是无法避免的;

    关键在于,除了问题怎么解决,有没有预备方案;

    一个程序的好坏,不在于它不会出现异常,而在于除了异常,也有预备方案,可以继续工作;

    要应对程序中可能发生的问题,就要研究程序中异常是怎么发生的;

  2. 异常的发生过程

    

  3. 异常的处理  

    生活中,如果做一件事情,出了意外,一般也是两种处理方式:

    要么自己能解决,就自己解决;

    自己解决不了,就将问题报告给上一级;

    在java程序中,异常的处理也是类似的两种情况:

    自己处理不了,就讲问题的信息报告给调用者,叫做异常的声明;

    自己能够处理,就自己处理了,叫做异常的捕获;

    a. 异常的声明    

    异常声明的方法,是使用关键字:throws ;

    怎么做呢?

    在方法的参数列表后面,大括号前面,使用throws关键字,将程序中可能会出现的问题都写上;

      

    声明之后,在别的函数调用你这个函数时,就知道你可能会有问题发生,就可以提前在函数中做一些相应的处理;

   b. 异常的捕获 

    在可能会发生异常的代码周围,使用代码块将这里可能会抛出的异常进行捕获,捕获后,JVM抛出的异常就不想函数的调用者传递了,而是可以被我们书写的代码处理;

      try{

        可能会抛出异常的代码;

        }

     catch(定义变量,接受可能会捕获到的异常对象){

        捕获到异常后,就会执行这里的代码;

     }finally{

        //表示这里的代码必须会执行到;

      }

    

  4.异常的作用  

    通过上面简单的处理,我们发现,如果不做处理,程序中一旦有点小问题,整个JVM就会停止,程序就会结束运行;

    而合理使用异常和异常的处理,就会发现,即使程序中出现了问题,也有预备方案进行解决,程序还可以正常工作;

    提高了程序的健壮性(鲁棒性);

    程序的健壮性,指的就是程序应对复杂问题还能正常工作的能力;

    简单示例:

    

    合理的使用异常,还可以向使用者那个这显示更详细的问题的信息,方便开发和使用者处理问题;

  5. 自定义异常  

    问题:JDK自己提供的异常很全面,根据开发中大多数问题,都有相应的异常类,但是我们使用起来是比较麻烦的;

      1、异常类太长,记忆和书写都不方便;

      2、异常类很多,开发者不可能都记下来,使用时就很不方便;

    为了使用方便,需要我们自己定义异常类;开发者自己定义的异常类,就叫做自定义异常;

  a. 自定义异常

    

    

    

    我们要写的异常,不能继承Error类,因为人家表示的是严重的问题,是不应该被程序自己处理的问题;

       

    那么我们写的异常,就应该是继承Exception或者它的子类;

    

    自定义异常类:

    

      

      

    总结自定义异常的方法:

    首先写一个类,让这个类继承Exception类或者它的子类;

    然后给这个类写几个构造函数,写什么构造函数,根据你怎么使用而定;

    在这些构造函数中,调用父类构造函数,将传入的参数传给父类;

  b.异常的体系和分类

    

    编译时异常,指的不是编译期发生的异常,而是编译期编译器会检测事都被处理的异常;

    运行时异常,指的是编译期编译器不会检测是否被处理的异常; 

    这些异常,都是发生在程序运行阶段;  

    异常的分类:

      Throwable:表示的是Java中所有异常类最最顶层的父类;

    |

    ————Error:表示程序中发生的严重的问题,不该也不能被程序自己处理问题(一般,一旦发生这种问题,JVM就会挂掉);

    

    

|

————Exception:表示程序中发生的应该被处理的问题;

|

————:RunTimeException:表示在编译阶段,编译器不会检查程序中有没有处理代码的异常;

|

————:其他的子类:表示的是在编译阶段,编译期会检查程序中有没有处理代码的异常;

结论:我们自定义异常,一般都要继承Exception(及其子类)或RuntimeException(及其子类)这两个类;

到底要继承哪个,根据需求而定;如果你的异常是必须被处理的,就需要定义成编译时异常;

6. 异常的细节

  a.throw和throws   

这两个关键字的区别:

throw :用于在程序执行时一旦出现问题,将表示问题的对象抛出的;

用法是:在后面加上要抛出的记录了异常信息的对象;

throws :用于异常处理中的声明异常的;

用法:写在方法的参数列表后面,throws 后面跟这个程序可能会抛出的异常的类名;如果有多个异常,需要在之间使用逗号分开

  b. try、catch、finally的细节

    b.1 组合   

    try{

      可能会抛出异常的代码

       }catch(被捕获的异常对象){

      处理的代码

    }:

     

    try{

      }catch(){

      }catch(){

      }

      ……

    :

     

    多catch快时需要注意的问题:

      

    总结:当使用多个catch快来捕获多个异常时,抛出的异常会根据catch块书写的顺序,从上往下来匹配,所以,

    如果要捕获的多个异常有继承关系,那么父类的异常在下面的catch块里捕获,子类的异常应该在上面catch块里捕获;

    还可以在前面两种组合后面加上finally块:

      finally块中的代码,表示一定会执行;

    try{

      }catch(){

    }finally{

    }:

    try{

    }finally{

    }:

    总结:写在finally块中的代码,一定会被执行到;在结束try-catch-finally代码块之前执行;

    b.2 finally的使用场景   

    一般在开发中,有些操作是必须执行的,例如关闭连接、释放资源等,这些操作就应该写在finally块中;

  c.继承中方法重写的异常 

    子类重写父类方法,不能比父类方法抛出更多异常;

    c.1父类方法没有声明异常,子类重写的方法不能声明编译时异常

    

    c.2父类方法声明了一个编译异常,子类重写的方法只能声明这个异常或它的子异常

    

    c.3  父类方法声明了多个编译异常,子类重写的方法只能声明这些异常的子集或子集的子类

    总结:子类重写父类方法,不能比父类方法抛出更多异常;

    

    

    

    

    

JAVA基础--异常10的更多相关文章

  1. Java基础-异常(Exception)处理

    Java基础-异常(Exception)处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.异常的概述 什么是异常?Java代码在运行时期发生的问题就是异常.在Java中,把异 ...

  2. 《Java基础——异常的捕获与抛出》

    Java基础--异常的捕获与抛出     '  前言: Error类(错误)和Exception类(异常)是Throwable类的子类. 异常分为CheckedException类(编译时异常)和Ru ...

  3. JAVA基础(10)——IO、NIO

    转载:http://blog.csdn.net/weitry/article/details/52964948 JAVA基础系列规划: JAVA基础(1)——基本概念 JAVA基础(2)——数据类型 ...

  4. 夯实Java基础系列10:深入理解Java中的异常体系

    目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...

  5. Java基础 - 异常详解

    异常的层次结构 Throwable Throwable 是 Java 语言中所有错误与异常的超类. Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示 ...

  6. JAVA基础——异常详解

    JAVA异常与异常处理详解 一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1 ...

  7. java基础第10天

    Java异常 Exception 异常指的的在运行期出现的错误,在编译阶段出现的语法错误等,不能称之为异常. 编译类异常 必须处理之后才能正常编译(类找不到,IO异常,在API文档中明确写明throw ...

  8. Java基础——异常体系

    在Java中,异常对象都是派生于Throwable类的一个实例,Java的异常体系如下图所示: 所有的异常都是由Throwable继承而来,在下一层立即分解为两个分支,Error和Exception. ...

  9. Java基础——异常

    一.什么是异常  异常的英文单词是exception,字面翻译就是“意外.例外”的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误.比如使用空的引用.数组下标越界. ...

随机推荐

  1. 使用图片作为textview组件的背景

    <TextView android:layout_gravity="center" android:layout_width="100dp" androi ...

  2. git log 查看版本演变历史

    1.查看git操作历史 $ git log  #git 查看git操作历史 $ git log  --oneline #git 简洁的查看git变更记录 $ git log -n4  --onelin ...

  3. Android电子书项目实训【项目说明】【1】

    概述: 本实训项目是本科教学中,Android课程实训的项目,旨在训练Android App訪问server,获取server数据,解析,并呈现的流程.主要包括的功能有: 1.用户注冊 2.登录 3. ...

  4. 使用squid架设自己的代理server

    主要參考了 http://blog.chinaunix.net/uid-20778906-id-540115.html Ubuntu下Squid代理server的安装与配置 1 安装 $ sudo a ...

  5. weexapp 开发流程(二)框架搭建

    1.创建 入口文件 src / entry.js /** * 入口文件 */ import App from './App.vue' import router from './router' // ...

  6. C# step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型

    C# 2012 step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型 本章内容 声明一个枚举类型 创建并使用一个枚举类型 声明一个结构类型 创建并使用一个结构类型 解释结 ...

  7. 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期

    腾讯云图片鉴黄集成到C#   官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: public c ...

  8. sqlite学习笔记10:C语言中使用sqlite之查询和更新数据

    前面说到的 sqlite_exec() 中的第三个參数, SQLite 将为 sql 參数内运行的每一个 SELECT 语句中处理的每一个记录调用这个回调函数. 本节加入了两个函数.selectFro ...

  9. coco2d-x 3.0游戏实例学习笔记 《跑酷》 第二步---游戏界面&amp;全新的3.0物理世界

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写.并做相关笔记 ...

  10. 【Java】Java代码经典错误清单

    一.String 对照 == 和 equals.详细描写叙述例如以下 "=="操作符的作用 1)用于基本数据类型的比較,例如以下: byte(字节) 8 -128 - 127 0 ...