Java基础02-equals&hashCode&引用&拷贝&异常类

equals和hashCode方法

  1. 两个对象相等,则hashcode值一定也是相同的,且两个对象分别调用equals方法都返回true。两个对象hashcode值相同,但两者不一定是相等的。所以重写equals方法,必须重写hashcode方法。
  2. 遵循两个对象equals值为true,则hashcode的值必须一致的原则
  3. == 与 equals 的区别
    1. 对于基本类型来说,== 比较的是值是否相等;
    2. 对于引用类型来说,== 比较的是两个引用是否指向同一个对象地址(两者在内存中存放的地址(堆内存地址)是否指向同一个地方);
    3. 对于引用类型,equals默认比较的是地址值;所以对象间进行比较时,需重写eqauls方法。

按值调用和按引用调用

  1. 按值调用(call by value),表示方法接收的是调用者提供的值。按引用调用(call by reference),表示方法接收的是调用者提供的变量地址。
  2. 一个方法可以修改【传递引用】所对应的变量值,而不能修改【传递值】调用所对应的变量值。
  3. Java采用按值调用,方法得到的是所有参数值的一个拷贝,方法不能修改传递给它的任何参数变量的内容。
  4. 一个方法不能修改一个基本数据类型的参数;可以改变一个对象参数的状态;不能让对象参数引用一个新的对象。

深拷贝和浅拷贝

  1. 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝;
  2. 深拷贝:对基本数据类型进行值传递,对引用数据类型创建一个新对象,并复制其内容。

异常类

  1. Checked exception:继承自Exception类,代码需处理API抛出来的checked exception,要么用catch语句,要么直接用throws语句抛出来。
  2. Unchecked exception:也称RuntimeException,其所有的子类,代码不需要处理它们的异常也能通过编译。不需要try-catch-finally或throws机制去处理异常。
  3. 面对必须要关闭的资源,优先使用try-with-resources,而不是try-catch-finally。更容易编写必须要关闭的资源的代码。 
  4. @SuppressWarnings注解:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。比如:@SuppressWarnging("unchecked"),则告诉编译器忽略掉unchecked警告信息,如使用List,ArrayList等未进行参数化产生的警告信息。
  5. 统一异常处理。

        try-catch-finally弊端:

  • 大量的try-catch-finally 代码块,不仅有大量的冗余代码,而且还影响代码的可读性;
  • 将更多的异常捕获放在业务代码中,业务变更时,需增加个更多的异常捕获,处理等;
  • Spring注解:@ControllerAdvice,@ExceptionHandler,@InitBinder,@ModelAttribute 等注解配套使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值