当前位置: 首页 > news >正文

Java经典面试题总结(一)

Java经典面试题总结(一)

  • 题一:Java编译运行原理
  • 题二:JDK,JVM,JRE三者之间的关系
  • 题三:谈一下对冯诺依曼体系的了解
  • 题四:重载与重写的区别
  • 题五:拆箱装箱是指什么?

题一:Java编译运行原理

  • Java源代码通过Java编译器(javac)进行编译,生成字节码文件( xxx.class文件)。
  • 这些字节码文件包含了与特定平台无关的中间代码,在Java虚拟机JVM中进行解释执行 ,并转换成平台能够理解的形式来运行。

示意图如下:在这里插入图片描述

题二:JDK,JVM,JRE三者之间的关系

  • JDK(Java Development Kit),又称Java开发工具包,包含了JRE以及开发工具,提供给程序员使用。同时包含了Java编译器(javac)和自带的调试工具console等。
  • JRE(Java Runtime Environment),又称 Java运行时环境,包含了JVM和Java类库。是编写程序运行时所需的环境。
    JVM(Java Virtual Machine),又称Java虚拟机,是Java程序的运行平台。

示意图如下:

在这里插入图片描述

题三:谈一下对冯诺依曼体系的了解

冯诺依曼体系是一种计算机架构,由冯诺依曼提出。它包含中央处理器、存储器、输入输出设备以及总线这几个关键组件。

  • 中央处理器(CPU):负责执行指令和处理数据。CPU由控制单元和算术逻辑单元组成,控制单元负责解析和执行指令,而算术逻辑单元负责执行算术和逻辑操作。
  • 存储器(Memory):用于存储程序指令和数据。存储器被划分为不同的地址,每个地址都可以存储一个字节或多个字节的数据。
  • 输入/输出(I/O)子系统:用于与外部设备进行交互,如键盘、显示器、硬盘等。
  • 总线(Bus):用于连接CPU、存储器和I/O子系统,实现数据和指令的传输。

题四:重载与重写的区别

  • 重载是在同一个类中定义多个方法,他们具有相同的方法名和不同的参数列表,重写是在子类中重新定义父类中已有的方法。
  • 重载:方法名相同;参数列表要不同;返回值没有特定的要求。
  • 重写:方法名相同,参数列表要相同,返回值要相同。

题五:拆箱装箱是指什么?

拆箱和装箱是指Java中用于基本类型和对应的包装类型之间转换的概念。
装箱指的是将基本类型转换成其对应的包装类型对象,例如,将int类型的值转换为Integer对象。
拆箱则相反,指的是将包装类型对象转化为基本类对应的基本类型的值。例如,将Integer对象转换为int类型的值。

补充内容:

int num = 30;
Integer integerObj = num; // 自动装箱
int result = integerObj; // 自动拆箱

拆箱和装箱的主要作用是在需要使用包装类型的场景中,可以直接使用基本类型,并在需要时自动进行转换。这样可以方便地在基本类型和包装类型之间进行转换,提高了代码的灵活性和可读性。但需要注意的是,在频繁进行拆箱和装箱操作时,可能会对性能产生一定的影响,因此需要谨慎使用。

Integer a = 10;
Integer b = 10;
System.out.println(a == b); // true,因为a和b都指向缓存中的同一个对象
Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false,因为c和d超出了缓存范围,会创建新的对象
在比较包装类型对象时,应该使用equals()方法进行比较。

针对自动装箱操作,存在一个缓存数组,用于提高性能和节省内存。具体来说,对于范围在-128到127之间的整数和一些常见的字符,他们的包装类型对象在第一次创建时会被缓存起来,后续在创建相同值的对象时会直接返回缓存中的值二不会重新创建对象。

http://www.lryc.cn/news/114493.html

相关文章:

  • Android监听设备亮灭屏广播(动态广播代码)
  • 【前端面试手撕题】简易深拷贝、深拷贝、寄生组合式继承、发布订阅模式、观察者模式
  • 【生物医学】应激(应激反应)全身适应综合征
  • 浅析基于安防监控EasyCVR视频汇聚融合技术的运输管理系统
  • VBA技术资料MF41:VBA_将常规数字转换为文本数字
  • Wavefront .OBJ文件格式解读【3D】
  • JavaScript:ES6中类与继承
  • 通用指令(汇编)
  • 苏宁数据治理实战方法论和三字经
  • 创建型设计模式:3、单例模式(C++实现实例 线程安全)
  • JavaWeb学习笔记
  • ad+硬件每日学习十个知识点(24)23.8.4(时序约束,SignalTap Ⅱ)
  • FortiGate防火墙日志审计运维
  • 基于yolo v5与Deep Sort进行车辆以及速度检测与目标跟踪实战
  • 以指标驱动,保险、零售、制造企业开启精益敏捷运营的新范式
  • MyBatis-动态SQL-foreach
  • VUE框架:vue2转vue3全面细节总结(3)路由组件传参
  • 音视频技术开发周刊 | 305
  • vue 图片base64转化
  • TS学习03-类
  • FastAPI(七)应用配置
  • eclipse Java Code_Style Code_Templates
  • 01《Detecting Software Attacks on Embedded IoT Devices》随笔
  • APP外包开发的学习流程
  • 第0章 环境搭建汇总
  • 大数据培训课程-《机器学习从入门到精通》上新啦
  • 暗黑版GPT流窜暗网 降低犯罪门槛
  • 数电与Verilog基础知识之同步和异步、同步复位与异步复位
  • JAVA Android 正则表达式
  • 【MFC】07.MFC第三大机制:消息映射-笔记