Java基础面试题1

📅 发布时间:2026/7/10 2:09:41 👁️ 浏览次数:
Java基础面试题1
## Java基础### Java特点* 平台无关性可以在任何安装了jvm的系统上运行* 面向对象Java是一门严格的面向对象编程语言几乎一切都是对象* 内存管理自动管理内存、回收不使用的对象### 什么是jvmjava虚拟机解释字节码并映射到本地CPU指令集和OS的系统调用JVM屏蔽了与操作系统平台相关的信息使得Java程序只需要生成在Java虚拟机上运行的目标代码字节码就可在多种平台上不加修改的运行这也是Java能够“**一次编译到处运行的**”原因### Java为什么是跨平台的编写的Java源码编译后会生成一种 .class字节码文件。跨平台的是Java程序不是JVMJVM是用C/C开发的是编译后的机器码不能跨平台不同平台下需要安装不同版本的JVMJava虚拟机JVM就是负责将字节码文件翻译成特定平台下的机器码然后运行。### JVM、JDK、JRE三者关系* JVM是Java虚拟机是Java程序运行的环境。它负责将Java字节码由Java编译器生成解释或编译成机器码并执行程序。JVM提供了内存管理、垃圾回收、安全性等功能使得Java程序具备跨平台性。* JDK是Java开发工具包是开发Java程序所需的工具集合。它包含了JVM、编译器javac、调试器jdb等开发工具以及一系列的类库如Java标准库和开发工具库。JDK提供了开发、编译、调试和运行Java程序所需的全部工具和环境。* JRE是Java运行时环境是Java程序运行所需的最小环境。它包含了JVM和一组Java类库用于支持Java程序的执行。JRE不包含开发工具只提供Java程序运行所需的运行环境。### 值传递和引用传递区别☆Java只有值传递不存在真正的引用传递。值传递Pass by Value传递的是值的副本适用于基本数据类型如 int、char 等修改方法内的参数副本不会影响原变量的值。引用类型传递 “引用的副本”通过副本可修改对象内容但无法改变原引用的指向## 数据类型数据类型、bigDecimal、自动拆装箱的方法、128陷阱### 八种基本数据类型和三种引用数据类型#### 基本数据类型* 数值型整数类型byte、short、int、long和浮点类型float、double* 字符型char* 布尔型boolean#### 引用数据类型类、接口、数组#### 注意* java八种基本数据类型的字节数1字节(byte、boolean)、 2字节(short、char)、4字节(int、float)、8字节(long、double)* 浮点数的默认类型为double如果需要声明一个常量为float型则必须要在末尾加上f或F* 整数的默认类型为int声明Long型在末尾加上l或者L* 八种基本数据类型的包装类除了char的是Character、int类型的是Integer其他都是首字母大写* char类型是无符号的不能为负所以是0开始的br /### long可以和int类型相互转化吗可以由小变大int到long直接赋值或强制类型转换long到int强制类型转换但容易数据丢失或溢出br /### 数据类型转换方式自动类型转换隐式转换、强制类型转换显式转换、字符串转换、数值间转换br /### 类型互转会出现的问题基本数据类型转换小转大自动转换大转小对象引用转换向上转型多态父类引用指向子类对象不允许向下兼容手动转换br /### 为什么用bigDecimal不用doubledouble会出现精度丢失的问题double执行的是二进制浮点运算二进制有些情况下不能准确的表示一个小数创建BigDecimal对象时使用字符串作为参数而不是直接使用浮点数值可以避免浮点数精度丢失### 自动拆装箱实现装箱调用integer包装类的valueof方法拆箱调用intvalue方法### 自动拆装箱128陷阱Java的Integer类内部实现了一个静态缓存池用于存储特定范围内的整数值对应的Integer对象。\默认情况下这个范围是-128至127可以自己调不作为面试重点自己了解。当通过Integer.valueOf(int)方法创建一个在这个范围内的整数对象时并不会每次都生成新的对象实例而是复用缓存中的现有对象会直接从内存中取出不需要新建一个对象。![1.00](https://tc-cdn.processon.com/po/69855c375776f60d257c5007-69afb5924188e84da43ebc08)### 1271-128在 8 位有符号整数的补码编码规则下最大值 127二进制 0111 1111加 1 后溢出为 1000 0000而该二进制值在补码中被规定表示 - 128