Object类和异常

1. Object类是所有类的父类(超类, 基类,上帝类);
里面有两个常用的方法:
1> public String toString();// 默认输出对象的地址值的字符串表示形式
2> public boolean equals(Object obj);// 默认比较的是两个对象的地址值.

Object中第一个比较常见的方法
public String toString();// 默认输出对象的地址值的字符串表示形式
注意点:
一个对象在使用println进行输出的时候默认就是调用了Object中的toString方法,从而显示的是地址值
只不过JDK中很多的类都已经重写(覆盖)了Object中的toString所以显示的不是地址值.
这样的类目前: String, StringBuilder, ArrayList

如果自定义的类需要输出对象里面的内容, 那么也需要重写Object中的toString方法;

Object中第二个比较常见的方法
public boolean equals(Object obj);// 默认比较的是两个对象的地址值.(eclipse中自动生成equals方法, alt + shift + s 在按h)

注意点:
对于基本数据类型来讲, == 比较的是数值
对于引用数据类型来讲, == 比较的是地址值

对于引用数据类型来讲,直接比较两个对象的地址值,没有任何意义,所以JDK中的很多类已经覆盖了Object中的
equals方法,比如String类
我们自定义的类如果要想比较对象的内容是否相等, 也需要重写Object中的equals方法.

2. 异常:
在java中所有的错误或者是异常都可以使用一个类来表示: java.lang.Throwable;
里面有很常用的三个类来表示:
Error: 表示错误的信息,一旦出现程序立即停止
Exception: 表示异常(编译时的异常)的信息,一旦出现处理完程序正常运行.
RuntimeException: 表示运行时候的信息,是Exception的子类.

3.如何自定义一个异常呢?

JDK中提供的异常都是一些常用的类的信息, 不能把实际业务场景当中的异常全部都考虑进去,那么这个时候就需要自定异常

比如: 现实生活中,比如分数不能为负数, 比如: 处理年龄为负数的情况,需要自定义异常了.

如何自定义一个异常呢?
需要入伙.
编译时异常: 需要定义类继承自Exception
格式: public class 类名 extends Exception{...}

运行时异常: 需要定义类继承自RuntimeException
格式: public class 类名 extends RuntimeException{...}

4. 异常的解析流程:
1> 一旦程序出现异常,JVM自动创建异常类的对象(如果是自定义的异常需要手动创建)
2> 一旦检测到异常产生,JVM就会马上抛出异常,(如果是自定义的异常需要手动抛出)
3> 接下来需要处理抛出来的异常,有两种方式:
方式一: 使用关键字throws 抛
格式: public static void method() throws 异常类名{...}

方式二: 使用try_catch的方式处理(真处理)
格式:
try{
// 用来编写可能出现问题的代码
}catch(异常类名 对象名){
// 处理异常的一种方式,预案
}finally{
// 一般不管怎么样都会执行的,用来使用释放资源
}

注意点:
1> 在使用throws声明抛出异常的时候,如果异常之间存在继承关系,只需要写父类异常即可.
2> 如果有多个异常,不存在继承关系,可以使用逗号隔开.

如果自定创建一个异常类对象,该如何抛出,需要使用到关键字throw
throw: 主动将产生的对象进行抛出
格式: throw 异常对象;

--福利:面试题:
public class Demo {

public static void main(String[] args) {
int number = getElemet();

System.out.println("number = " + number);// 30

System.out.println("程序结束了");
}

public static int getElemet(){

int num = 10;
try{
// 一旦产生异常,try中后面的代码不运行了.
int a = 1/0;

System.out.println("try : num = " + num);

return num;
}catch(ArithmeticException e){
num = 20;
return num;// 做两件事情,1. 将num的值保存一份到缓冲区, 2. 然后再去执行finally中的代码

}finally{
num = 30;
System.out.println("finally中的代码执行了 num " + num);
return num;// 1.将num的值保存一份到缓冲区,现在的值变成了30;
}
}
}
return做两件事情:
1> 返回一个值给调用方
2> 结束当前方法, 如果碰到异常中有finally先执行finally中的代码. 然后再结束方法.

5. 在使用try_catch处理异常的时候,根据实际情况还有几种格式:
1> try_catch结构中,如果出现类多个异常,想要一种处理方式,异常之间不存在继承关系,可以在catch中并列写出多个异常
格式: try{}catch(异常类名 A | 异常类名B 变量名){}finally{...}

2> try_catch结构中,如果出现多个异常存在继承关系,大的异常需要写在后面,并且希望单独去处理每一个异常,使用多个catch
格式: try{}catch(异常类名A 变量名A){...}catch(异常类名B 变量名B){...}....

3> try_catch结构中,可以省略catch,确认没有什么异常要抓取,可以省略掉catch,配合finally
格式: try{}finally{}

4> try_catch结构中,可以没有finally.一般对于没有什么资源想要释放的.
格式: try{}catch(异常类名 变量名){}

5> try_catch结构中,任何结构中不能省略try, 并且不能只有try

6. 在继承结构体系中,如果子类重写了父类的方法,异常该如何处理
1> 如果父类方法没有异常, 那么子类中出现了异常不能抛(throws), 只能try.(父亲不坏, 儿子不能坏)
2> 父类中如果方法有异常, 子类中的异常和父类中异常如果有继承关系,那么不能大于父类异常.(父亲坏, 而不能更坏)
(实际使用场景,父类什么异常子类什么异常就好了.)

转载于:https://www.cnblogs.com/youyouxiaosheng-lh/p/8119781.html

java基础之Object类和异常相关推荐

  1. java基础.0——Object类

    从这篇文章起就正式开始java学习之旅了.java中,万物皆对象,所以第一篇先学习java的Object类,循序渐进. 一.getClass() 1 public final native Class ...

  2. java基础之Object类_繁星漫天_新浪博客

    在JDK中提供了一个Object类,它是所有类的父类,即每个类都直接或间接继承该类. 例如: class Cat  { public void shout(){ System.out.println( ...

  3. 【狂神说笔记—— Java基础07-常用类】

    Java基础07-常用类 Object类 大家都知道Object是所有类的父类,任何类都默认继承Object. 理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类 ...

  4. Java基础复习-常用类

    Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...

  5. Java基础:String类

    相关阅读 Java基础:String类 Java字符串格式化 Java基础:正则表达式 1. 概述 字符串是由多个字符组成的一串数据(字符序列),字符串可以看成是字符数组. 在实际开发中,字符串的操作 ...

  6. 多重继承_Python 和 Java 基础对比 10 —— 类的封装、继承和多态

    @Python大星 一.Python 类的封装.继承和多态 封装 继承 Python 支持多父类的继承机制,所以需要注意圆括号中基类的顺序,若是基类中有相同的方法名,并且在子类使用时未指定,Pytho ...

  7. 一文带你深入理解【Java基础】· 枚举类

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  8. Java基础 ----常用时间类

    Java基础 ----常用时间类 java.util.Date java.util.Calendar java.text.SimpleDateFormat new Date().getTime() & ...

  9. Java 8 的 Optional 类抛异常

    Java 8 的 Optional 类抛异常 本文我们介绍当Optional类为空时如何抛自定义异常. Optional.orElseThrow 简单描述,如果Optional值存在,则isPrese ...

最新文章

  1. Visual Studio Remote Debugger(for 2005/2008) .net远程调试转
  2. java轮盘赌_java人工蜂群算法求解TSP问题
  3. 看漫画学python 豆瓣_各种表示“看”的词语
  4. mysql中binlog_format模式与配置详解
  5. string也可以很精彩
  6. 导航卫星系统行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. Service获取客户端IP地址(java)
  8. 【Android 异常】 Parcelable encountered IOException writing serializable object
  9. 使用jquery为table动态添加行的实现代码
  10. Linux文件系统详解
  11. 测试了一周总结的模拟器玩刺激战场延迟卡顿完美解决办法
  12. STAT0023 STATISTICS FOR PRACTICAL COMPUTING
  13. apiCloud + aui实现tab栏切换功能
  14. Android 64bit系统中app以32bit运行
  15. 快手7亿用户增长实践
  16. 从路边摊到估值100亿,文和友“精神战略”餐饮逻辑
  17. python实现面部特效_用Python获取摄像头并实时控制人脸的实现示例
  18. hype3 响应布局_使用Hype 3的基于时间轴的Web动画
  19. zabbix密码忘记怎么从mysql找回_zabbix 忘记密码,找回密码
  20. 关于ChatGPT的一些小问题

热门文章

  1. DPDK vhost-user之packed ring(六)
  2. LOJ#2127「HAOI2015」按位或
  3. Android Gson使用详解
  4. KotlinPoet
  5. (二)Thymeleaf标准表达式之——简单表达式
  6. Jquery基础之DOM操作
  7. bzoj4631踩气球
  8. bat批处理重命名问题
  9. Linux中如何杀掉僵尸进程
  10. 王子与公主的另类结局