当前位置: 移动技术网 > IT编程>开发语言>Java > Java基础语法(== 与 equals的区别、异常)

Java基础语法(== 与 equals的区别、异常)

2020年07月31日  | 移动技术网IT编程  | 我要评论



一、== 与 equals的区别

1、基本数据类型

如果是基本数据类型,是用==来判断二边的值是否相同,不能用equals.因为equals有些场景是要用到判断对象的地址,然后基本数据类型不是实例化出来的对象

2、包装类

如果包装类的类型 == 是比较地址值 equals是比较内容.
equals不能重写. 点eq 看源码

public boolean equals(Object obj) { if (obj instanceof Integer) { return value ==((Integer)obj).intValue(); } return false; } 

3、String类型

如果是String 类型,== 是比较二边的地址值,equals是比较二边的内容是否相等。
Equals不能重写.
点eq 看源码

public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; } 

4、new出来的内容

如果是new出来的内容.==是比较地址值,equals是Object提供的方法
默认也是比较地址值。

public boolean equals(Object obj) { return (this == obj); } 

但是可重新

//重写equals.  obj是传入的参数,在obj传入之前,自己也有对象. public boolean equals(Object obj){ if(obj==null){ return false; } if(this==obj){//同一个地址,就是同一个对象 return true; } if(obj instanceof UserA){//判断传入的对象是不是UserA class实例化出来的 UserA o= (UserA) obj; //按照需求重写. return this.id==o.id && this.name==o.name; } return false; } 

二、异常

1、异常机制

异常机制:是指当程序编译或运行出现风险 或出现错误时,程序处理的机制.

异常为程序提供了安全处理通道,异常处理正常,程序是正常运行的。

如果有异常没有正确处理,会导致程序无法执行。

程序错误:

  1. 编译错误,原因是语法,位置,顺序。比如 静态调用非静态的属性。
  2. 运行错误:运行程序时,发生错误.
  3. 逻辑错误: 程序没有按照预计的效果或逻辑执行。

所有的异常和错误,都是从Throwable开始

–error:错误,是程序无法处理的,表示运行时无法正常向下运行的。

–Exception:异常:程序存在的风险,只要引导和处理正常,程序是可以向下正常运行的。
子类:
–IoException
–ClassNotFondException
–RuntimeException

异常分类:

  1. 运行时异常:编译时是正常的,当程序执行时,当由数据或逻辑导致的风险,通过try catch 或throws 抛出异常,能正常运行的。比如 nullPointException、arrayIndexOutOfBoundsException 数组下标过界异常.

  2. 非运行异常:也叫编译异常,在写完代码,还没有运行之前,由于语法,或代码顺序,或结构导致程序不能编译通过。javac编译不了,在开发工具中会出现标红。如果不处理,程序不能运行下去.

从编译器处理的角度,又分:

  1. 可查异常:编译器要求必须要处理的异常,不处理,不会向下接着执行。

  2. 不可查异常:编译器不会要求强制处理的异常。比如RuntimeException

2、异常处理

  1. 捕获异常:尝试着自己去处理
    Try…catch…finally.
    Try{
    //可能要发生的异常
    //要接着运行的业务代码
    }catch(异常类 e){
    //放一些异常打印信息,方便捕获.
    E.print()…打印出异常有关的信息
    System.out.println(“xx”)–自己写打印也可以的
    }catch(异常类 e){//catch可有多个子句,并catch要得先有try存在.
    //放一些异常打印信息,方便捕获.
    F.print()…打印出异常有关的信息
    System.out.println(“xx”)–自己写打印也可以的
    finally{
    //最终,程序都会执行的,不管上面有没有风险,有没有错误,也不管什么错误。
    并如果代码块中有return,此处代码是在 return 之前执行.
    希望finally这块代码不执行:
    1 system.exit(0) jvm退出了,程序结束了
    2 cpu死了或关了
    3 程序所在的线程停止。
    }
    Try{
    }catch(){ //同级
    }catch(){
    }
    比如io异常,也是空指针异常.
    Try{
    Try{
    } catch(){
    }
    }catch(){ //不同级
    }catch(){
    }
  2. 抛出异常:throws 抛出异常给上级去处理。让jvm或父类去处理.
    在这里插入图片描述

Error错误与Exception区别

  1. error是程序中的运行的错误,要通过修改程序或调整设备(因为有些项目中的程序是和网络,内存 数据库有关的)

  2. exception 异常,是程序的可能存在的风险,只要处理得当,只能正常运行的。

finally可省,看业务。

常见异常:

  1. RuntimeException 运行时异常
  2. NullPointerException 空指针异常
  3. ArithmeticException 算术异常
  4. InputMismatchException 输入匹配异常
  5. ParseException 格式异常
  6. ArrayIndexOutOfBoundsException数组越界异常

e.printStackTrace(); 打印出异常信息,

Return是指此方法执行完,最后一个结果返回出来。

三、感谢阅读

这些是老师上课写的笔记,因为很多东西都是口述讲解,笔记不全面,没有时间整理,但是代码是全的,笔记目的用于自己复习使用,各位看官能看就看,看不懂就没办法咯。有其他系列的是整理的完整版的,大家可以去看看。

本文地址:https://blog.csdn.net/m0_46394124/article/details/107698818

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网