java基础

1、"=="、equals与hashcode

"=="比较的是两个引用在内存中指向的是不是同一对象。
equals方法是由Object类提供的,根据情况可由子类重写。
一般"==" ≥ equals ≥ hashcode,即"=="为true,则equals为true,hashcode为true,反之,hashcode为true,不一定equals为true,equals为true,不一定"=="为true。

2、final、finally和finalize

a、final修饰类不可被继承,修饰方法不可被重写,修饰变量不可变。
这里详述修饰变量:修饰成员变量只能被赋值一次,赋值后不可变。可在声明时、构造器、初始化块对其赋值。基本类型值不可变,引用类型地址不可变(地址指向的内容可变)
b、finally通常搭配try,catch使用。
c、当对象不再被任何对象引用时,GC会调用该对象的finalize()方法,当finalize被调用之后,JVM会再一次检测这个对象是否存活,如果不是,则清除该对象。也就是说,覆盖了finalize方法的对象需要经过两个GC周期才能被清除。

3、BIO、NIO和AIO

bio:同步阻塞
nio:同步非阻塞
aio:异步非阻塞
可参考https://blog.csdn.net/ty497122758/article/details/78979302

4、抽象类与接口

抽象类,如果一个类没有包含足够多的信息来描述一个具体的对象,这样的类就是抽象类。使用abstract修饰,不能实例化,可以具有抽象方法。
接口,接口在java中是一个抽象类型,是抽象方法的集合。

区别

特别说明:对于jdk8,接口是可以有默认实现的方法,关键字default。
从定义上看,接口是个集合,并不是类。类具有属性和方法,而接口只包含方法。
接口中除了static、final变量,不能有其他变量,一般接口中并不会定义变量。
1、抽象类可以有默认的方法实现完全是抽象的。接口根本不存在方法的实现。
2、使用extends关键字来继承抽象类。子类可以全部实现抽象方法,也可以不实现(没有全部实现抽象方法,该子类仍然是抽象类)。使用关键字implements来实现接口,必须实现接口中所有声明的方法(jdk8可以不实现default方法)。
3、抽象类可以有构造器,而接口不能有构造器
4、抽象方法可以有public、protected和default这些修饰符,接口方法默认修饰符是public。
5、java中抽象类只有单继承,接口就可以多实现。
6、如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。如果你往接口中添加方法,那么你必须改变实现该接口的类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值