• Java 面试题集锦,横扫金九银十。


    Java 面试题集锦

    1基础部分

    1.JAVA中的几种基本类型,各占用多少字节?

    下图单位是bit,非字节 1B=8bit

    2.String能被继承吗?为什么?

    不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”abc”(直接赋一个字面量);其实和String str=new String(“abc”)(通过构造器构造)还是有差异的。

    3.String, Stringbuffer, StringBuilder 的区别。

    String 字符串常量(final修饰,不可被继承),String是常量,当创建之后即不能更改。(可以通过StringBuffer和StringBuilder创建String对象(常用的两个字符串操作类)。)

    ==StringBuffer 字符串变量(线程安全),==其也是final类别的,不允许被继承,其中的绝大多数方法都进行了同步处理,包括常用的Append方法也做了同步处理(synchronized修饰)。其自jdk1.0起就已经出现。其toString方法会进行对象缓存,以减少元素复制开销

    ==StringBuilder 字符串变量(非线程安全)==其自jdk1.5起开始出现。与StringBuffer一样都继承和实现了同样的接口和类,方法除了没使用synch修饰以外基本一致,不同之处在于最后toString的时候,会直接返回一个新对象

    4.Java内部类和子类之间有什么区别?

    内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。

    子类是从父类(superclass)中继承的类,子类可以访问父类所有public和protected的字段和方法。

    1. class Outer{ //外部类
    2. class Inner{ //内部类
    3. }
    4. }
    5. class Other{ //外部其他类
    6. }

    5.Java语言中有哪些常见的访问说明符,有什么意义?

    Java中的访问说明符是放在类名之前,用于定义访问范围的关键字,常见的访问说明符有以下几类:

    Public:公共,能被项目中的任何一个Class、Method、Field访问。

    Protected:受保护,能被同类或子类访问,不能从外部访问。

    Default:默认,只能被同一个包的Class、Method、Field访问。

    Private:私有,只能被本类访问

    6.静态方法和静态变量的目的是什么?

    答案:静态变量被类的所有实例共用,静态类只能访问类的静态变量,或调用类的静态方法

    7.JDK 和 JRE 有什么区别?

    JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。
    JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
    具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。

    8.== 和 equals 的区别是什么?

    「== 解读」

    对于基本类型和引用类型 == 的作用效果是不同的,如下所示:

    • 基本类型:比较的是值是否相同;
    • 引用类型:比较的是引用是否相同

    总结:

    ==对于基本数据类型,判断是数值是否相等,

    对于引用数据类型,判断的是物理位置是否相等

    而equals是Object类中的方法,Object是所有类的父类,所以类中都可以使用该方法,

    但是,一般情况下,例如String类等,会对equals做重写,所以一般情况下

    可以理解为equals是对比两个对象的内容是否一致

    9.两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?

    不对,两个对象的 hashCode() 相同,equals() 不一定 true。

    10.final 在 Java 中有什么作用?

    final意为最终的,

    修饰类:该类则无法被继承

    修饰方法:该方法则无法被重写

    修饰变量:该变量则为常量,初始化之后值就不能被修改

    特点别的,final修饰变量是指引用不能改变,如果是一个引用数据类型,那么对象中的属性值是可以改变的

    1. final int MAX = 9
    2. MAX = 20//报错 不能更改
    3. final Person person = new Person();
    4. person.setAge(10);//这是可以的
    5. person = new Person();//这是错误的

    11.使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

    1. 使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改
    2. 变的。例如,对于如下语句:
  • 相关阅读:
    List分页
    SSM框架真没那么难,这份阿里大佬的进阶实战笔记真给讲透了!
    低代码到底有多爽?解放双手,推荐一款C端的低代码产品
    C语言与内存息息相关的重要概念有哪些?
    1260. 二维网格迁移 : 简单构造模拟题
    Doris(0.15.1-rc09)使用Datax-DorisWrite导致BE固定节点streamLoad任务过多问题排查
    狂神说-Springcloud笔记
    信德新材深交所上市:市值109亿 尹洪涛父子为实控人
    Java基础——异常
    ImgPlus:基于CodeFormer的图片增强
  • 原文地址:https://blog.csdn.net/weixin_70730532/article/details/126661311