Java面试常见问题-SE篇


总结了目前主流平台中常见的面试题,标⭐为重点!

在这里插入图片描述

int和Integer的区别

  1. 作为成员变量来说,Integer的初始值为nullint初始值为0
  2. Integer是对象,存储在堆内存;int类型直接存储在栈空间
  3. Integer封装了很多方法和属性,使用时更加灵活

为什么设计封装类型?

因为java本身是个面向对象的语言,一切操作都是以对象作为基础,比如集合(ArrayList,HashMap)里存的元素,也只支持存储Object类型,普通类型无法通过集合存储


JDK、JRE、JVM的区别

JDK是java标准开发包,提供编译、运行java程序所需的各种工具和资源,包括java编译器、java运行时环境,以及常用的java类库

JREjava运行环境,用于运行java的字节码文件,JRE包括JVM和JVM工作时所需的类库,普通用户只需要安装JRE来运行java程序,而程序开发者必须安装JDK来编译调试程序

JVM是java虚拟机,是JRE的一部分,整个java实现跨平台的最核心部分,负责运行字节码文件

  • 详细解释如下图:

在这里插入图片描述


==和equals方法的区别

==:如果是基本数据类型,比较的是;引用类型比较的是引用地址
equals:具体看各个类重写equals方法后的比较逻辑,比如String类,虽然是引用类型。但是String类中重写了equals方法,内部比较的是各个字符是否全部相等


hashCode()与equals()之间的关系

首先hashCode的判断:

  • 两个对象的hashCode不同,则肯定是不同的两个对象
  • hashCode相同,对象不一定相同
  • 两个对象相等。hashCode一定相同

在这里插入图片描述

所以重写 equals 方法的时候需要重写 hashCode 方法,许多容器类,如 HashMap、HashSet 都依赖于 hashcode 与 equals 的规定。


泛型中extends和super的区别

<? extends T> 表示包括T在内的任何T的子类

<? super T> 表示包括T在内的任何T的父类

String、StringBuffer、StringBuilder的区别

  1. String有final修饰,是不可变的,如果修改,会产生一个新的字符串,StringBuffer和StringBuilder是可变的
  2. StringBuffer线程安全StringBuilder线程不安全(不同步)。所以单线程环境下StringBuilder效率更高

重载和重写的区别

重载:发生在同一个类中,方法名相同,参数类型、个数、顺序不同,返回值、访问修饰符不做要求。发生在编译时。
重写:发生在父子类中,方法名、参数列表必须相同,返回值范围小于父类,抛出异常范围小于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为private子类就不能重写该方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值