欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-21 13:44:22
文章目录一、== 与 equals的区别1、基本数据类型2、包装类3、String类型4、new出来的内容二、异常1、异常机制2、异常处理三、感谢阅读一、== 与 equals的区别1、基本数据类型如果是基本数据类型,是用==来判断二边的值是否相同,不能用equals.因为equals有些场景是要用到判断对象的地址,然后基本数据类型不是实例化出来的对象2、包装类如果包装类的类型 == 是比较地址值 equals是比较内容.equals不能重写. 点eq 看源码public boolean eq...



一、== 与 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或父类去处理.
    Java基础语法(== 与 equals的区别、异常)

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