• Java基础面试题汇总(不定期更新)


    1.Java 的八种基本数据类型,每个占多少个字节?

    其中比较特殊的是boolean,boolean究竟占几个字节?
    1、1个bit(1/8个字节):
    由于boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中按位运算,仅需1位(bit)即可,位是计算机中最小的存储单位。
    2、1个字节
    虽然编译后1和0只需占有1位空间,但是由于计算机存储数据的最小单位是1个字节,因此boolean类型的值在实际存储的时候是用1位存储,其他7位用0填补,即true:0000 0001,false:0000 0000。
    3、4个字节:

    《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。

    从《Java虚拟机规范》中我们看到,虚拟机使用int来代替boolean,这样岂不是更加浪费内存空间了吗?经过查阅资料发现,这是由于计算机CPU所造成的,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面),具有高效存取的特点。

    总结: boolean单个占4个字节,boolean数组1个字节,Java规范未明确定义,具体要看虚拟机,而虚拟机又要看处理器(CPU)。

    2.Java 中抽象类和接口的区别?

    (1)构造函数(2)具体方法(3)成员权限:抽象方法不能为私有,其他随意(4)静态方法

    jdk1.8改变:(1)可以实现具体方法,使用default(2)可以包含静态方法

    3.Java 的三大特性?
    (1)封装:通常认为封装是把数据和操作数据的方法封装起来,对数据的访问只能通过已定义的接口。

    (2)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类/基类),得到继承信息的被称为子类(派生类)。

    (3)多态:分为编译时多态(方法重载)和运行时多态(方法重写)。要实现多态需要做两件事:一是子类继承父类并重写父类中的方法,二是用父类型引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为。

  • 相关阅读:
    大数据开发面试(一)
    流程控制(下)
    JavaWeb编程面试题——Spring Web MVC
    RISC-V “异军”突起,英特尔:消灭不了就加入它
    Android studio Build Log乱码+错误: 找不到符号符号
    【c语言】详解文件操作(一)
    kt-connect使用-k8s流量代理
    Notion Like 笔记软件使用教程·学习资源汇总·知识管理方案
    【数据结构-树】线索二叉树
    C++设计模式结构型模式———桥接模式
  • 原文地址:https://blog.csdn.net/m0_60428941/article/details/125491664