![](https://img-blog.csdnimg.cn/direct/86a34a68717c4172b1f7a4a6807458f4.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础面试题
Java基础面试题
凇:)
庭中三千梨花树
展开
-
【Java基础】抽象类和接口的区别?
⑤一个类只能单继承一个父类,而一个接口可以继承多个父接口。同时,一个类可以实现多个接口却没有实现多个父类这种情况。③抽象方法可以有普通方法,接口在jdk1.8之前只能有抽象方法(1.8之后增添了静态方法和默认方法)。①抽象类定义的关键字:abstract class ,接口定义的关键字是 interface。⑥抽象类相当于模板,你可以在模板上拓展。接口相当于各个模块,你可以将它们组合起来。②抽象类可以有(静态变量、常量、成员变量) ,接口只能有常量。④抽象方法可以有构造方法,接口不可以有构造方法。原创 2024-04-17 10:16:02 · 165 阅读 · 1 评论 -
【Java基础】为什么重写equals()方法一定要重写hashCode()方法
因此为了保持一致性,重写equals方法一定重写hashCode方法,保证相同的对象哈希值相同,避免在哈希表中出现错误的行为。1)用 == 号比较两个对象的内存地址,如果两个对象指向的是同一个内存地址,返回true。2)否则继续比较字符串的值,如果值相同,返回true。哈希值是一个整数,快速判断对象在哈希表中的存储位置。反之,如果hashCode相等,则对象不一定相同。equals()方法:比较两个对象是否相同。hashCode()方法:计算对象的哈希值。在哈希表中存储对象,原创 2023-12-24 14:08:15 · 408 阅读 · 0 评论 -
【Java基础】 一个空的Object对象到底占多少内存
压缩指针OFF:Object默认占用16字节,Markword占8字节、类元指针占8字节。但是为了避免伪共享问题,JVM会按照8字节的倍数填充,所以会在对其区填充4字节。结论:一般来说,一个空的Java Object对象会占用16字节的内存空间。压缩指针ON:占用12字节,Markword占8字节、类元指针占4字节.对象头包括(Markword、类元指针、数组长度)原创 2023-12-22 14:55:24 · 552 阅读 · 0 评论 -
【Java基础】 强引用、弱引用、软引用、虚引用有什么区别
软引用:通过创建软引用类对象来实现,内存足够时允许停留在内存中,内存不够时就将其从内存中清除给其他对象腾出空间,可以作为缓存来使用。强引用:就是不同的引用,平常创建对象的方式就是强引用,被强引用指向的对象不能被垃圾回收器回收。弱引用:比强引用弱,就算有引用指向它,只要发生GC垃圾回收过程,软引用对象就会被清除。(女主角,虽然有一段经历,但还是没有走到最后)虚引用:比弱引用还要弱,通常用作管理对外内存。(男主角,怎么都死不了)(男二,注定是来牺牲的)原创 2023-12-22 14:46:12 · 381 阅读 · 0 评论 -
【Java基础】 什么是深克隆和浅克隆
深克隆和浅克隆原创 2023-12-20 15:00:46 · 353 阅读 · 0 评论 -
【Java基础】 Java对象创建的过程
Java对象创建的过程原创 2023-12-20 11:13:57 · 966 阅读 · 0 评论 -
【Java基础】 String、StringBuilder、StringBuffer的区别是什么
关于String、StringBuilder、StringBuffer的区别从4个方面来理解。原创 2023-12-19 12:58:38 · 334 阅读 · 0 评论 -
【Java基础】看以下代码回答问题(二)
String对象的intern方法,首先检查字符串常量池中是否存在“abc”,如果存在,直接返回该字符串的引用,如果不存在,就会把“abc”添加到字符串常量池中,并且返回该字符串常量的引用。一个是堆内存地址(s1),一个是字符串常量池地址(s2) 所以s1==s2:false。原创 2023-12-16 12:51:08 · 317 阅读 · 0 评论 -
【Java基础】看以下代码回答问题(一)
ValueOf 方法判断所定义的数字是否在-128 ~ 127这个区间,如果在,直接从cache数组获取,如果超过,则生成一个新的Integer对象。这些数字提前生成Integer对象,并缓存在cache数组中,当我们定义integer 数字时,会。在Integer类中,存在一个静态内部类IntegerCache,该类中存在一个。,并且存在一个static块,会在加载类的时候执行,将。看代以下代码回答问题。原创 2023-12-16 12:27:07 · 327 阅读 · 0 评论 -
【Java基础】为什么要设计封装类,Integer和int有什么区别?
因为Java是一门面向对象的语言,对象是Java的基础操作单元,我们时时刻刻都在创建对象,也随时都在使用对象。很多时候传递数据也需要对象类型,比如ArrayList 、HashMap这些集合,只能存储对象类型,因此封装类存在的意义就很大。(即避免外部操作随意修改成员变量的值,保证成员变量和数据传递的安全性。(即只需要调用对象提供的方法就可以完成对应的操作)原创 2023-12-16 12:06:37 · 382 阅读 · 0 评论