Java基础知识 | 常见面试题(上):基本数据类型

撰写成一问一答的形式,每次回答都默写,对比参考答案后,再默写出更恰当的答案。

相关内容

Java基础知识 | 常见面试题(上):基础概念和常识

Java基础知识 | 常见面试题(上):基本语法

自测篇

3.1 Java 中的几种基本数据类型了解么?
3.2 基本类型和包装类型的区别?
3.3 包装类型的缓存机制了解么?
3.4 自动装箱与拆箱了解吗?原理是什么?什么是自动拆装箱?
3.5 为什么浮点数运算的时候会有精度丢失的风险?为什么会出现这个问题?
3.6 如何解决浮点数运算的精度丢失问题?
3.7 超过 long 整型的数据应该如何表示?

答案篇

  1. Java 中的几种基本数据类型了解么?

Java有八种基本数据类型:byte、short、int、long、float、double、char、boolean。

整型数据类型(按照存储数值大小排序):byte、short、int、long

  • 常用的数据类型为int

  • byte是取正负值区间长度为2的八次方[-128,127],short与char相同是其两倍;

    • 为什么是2的八次方→一个byte表示一个字节 = 八位数

  • int则是short的两倍,long又是int的两倍,同时long类型赋值要对数值后面+l。

    • 为什么long赋值对应要加l?

    • 因为Java会默认将其作为int类型,但long是64位,将会导致32位的int无法存储,所以为了避免出现这种情况要加上l表示long类型。

字符数据类型:char

  • 基本语法 char ch = {'a'};

  • 只能存储单个字符;

浮点型数据类型:float、double

  • 默认为double类型,对于float类型,要在数值后面加f;

布尔型数据类型:boolean

Java中的基本数据类型内存基本不会发生大波动地改变,这也是Java可移植性强的原因之一。

  1. 基本类型和包装类型的区别?

在学mybatis框架时,习惯性使用基本类型定义变量,在使用SQL语句动态操作时,往往会因为基本类型有默认值,而导致每次获取的id即使没有赋值,也会默认等于0,导致动态操作检索id = 0的情况,进而导致操作错误。

  • 所以希望定义的数据类型没有默认值时可使用包装变量,而基本变量都其默认值。

因为基本类型无需创建对象就能够直接使用,这是它效率高的原因之一;

  • 基本类型高效的原因还因为其存储方式固定,不会产生额外的内存;

但其缺点是不方便使用不断更新地对象新特性方法;

  • 而包装类型的出现就是可以让这些基本类型能够转换成对象使用对象新特性方法(泛型)and方便地方法操作基本数据类型,但缺点则是需要额外的内存开销创建对象。

  1. 包装类型的缓存机制了解么?

包装类型的缓存机制主要针对于常用的包装类型,目的是减少对象创建和内存占用。像整型包装类:byte、short、int和long都有缓存机制,存储值范围[-128,127],当直接赋值区间在这个范围内,则无需再创建新内存空间;使用new则是直接创建新的内存空间;

包装类属于引用类型,其实例对象变量存储堆中,因为堆存储所有实例对象,所有当基本变量在类中方法外创建时,也是存储在堆中。但包装类的地址存储栈中,而基本变量在方法内创建时属于局部变量则存储在栈中(引用类型不适用)。当基本变量属于静态变量时,则存储在方法区内。

  1. 自动装箱与拆箱了解吗?原理是什么?什么是自动拆装箱?

自动装箱指的是在java1.8之后,遇到使用对象的方法,基本类型能够自动转换成包装类型使用;

  • 装箱本质上是调用了valueOf方法,拆箱则是xxValue方法

拆箱则是针对包装类型使用,将其自动拆箱为基本类型,提高效率;但要避免不必要地频繁装箱拆箱降低效率;

  1. 为什么浮点数运算的时候会有精度丢失的风险?为什么会出现这个问题?

计算机本质上是二进制,而无限的小数or超过数据类型小数范围值只能被截断就会造成精度损失,像十进制的0.2就无法转换成二进制。

  1. 如何解决浮点数运算的精度丢失问题?

更大精度的数据类型

BigDecimal类型能够解决float浮点数丢失精度的问题,所以在实际业务中涉及钱或其他重要计算都会使用。

定义误差范围:若超出误差给予说明,若在可承受范围则能够在保持性能下实现业务;

  1. 超过 long 整型的数据应该如何表示?

问题和理解大部分来源为Guide哥的Java面试指南,有需要的可自行检索加入其星球获得。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您介绍一些Java基础知识面试题。以下是一些常见Java基础知识面试题及其答案: 1. 什么是JavaJava是一种面向对象的编程语言,具有跨平台特性,可以在不同的操作系统上运行。 2. Java的特点有哪些? Java具有以下特点: - 简单易学:Java语法相对简单,与C++相比更易于学习和使用。 - 面向对象:Java支持面向对象的编程范式,具有封装、继承和多态等特性。 - 跨平台性:Java通过虚拟机(JVM)实现跨平台,一次编写,到处运行。 - 安全性:Java提供了安全机制,如内存管理、异常处理和安全检查等。 - 多线程:Java支持多线程编程,可以实现并发操作。 3. 什么是面向对象编程? 面向对象编程(OOP)是一种编程范式,将数据和操作数据的方法封装在一起,形成对象。对象可以通过定义类来创建,类定义了对象的属性和行为。 4. Java中的基本数据类型有哪些? Java中的基本数据类型包括: - 整数类型:byte、short、int、long - 浮点数类型:float、double - 字符类型:char - 布尔类型:boolean 5. Java中的包是什么? 包(Package)是Java中用于组织类和接口的一种机制。它可以将相关的类和接口放在同一个包中,方便管理和使用。 6. 什么是Java的访问修饰符? Java的访问修饰符用于控制类、方法和变量的访问权限。常用的访问修饰符有public、protected、private和默认(没有修饰符)。 7. Java中的异常处理机制是什么? Java中的异常处理机制通过try-catch-finally语句块来实现。当代码可能抛出异常时,可以使用try块来捕获异常,并在catch块中处理异常。finally块中的代码无论是否发生异常都会执行。 8. 什么是Java的多线程? 多线程是指在一个程序中同时执行多个线程,每个线程都是独立的执行流。Java通过Thread类和Runnable接口来实现多线程编程。 9. Java中的垃圾回收是什么? Java中的垃圾回收是自动内存管理的一种机制,通过垃圾回收器自动释放不再使用的内存。开发人员无需手动释放内存,可以专注于业务逻辑的实现。 10. 什么是Java的反射机制? Java的反射机制是指在运行时动态地获取类的信息并操作类的属性和方法。通过反射机制,可以在运行时创建对象、调用方法和访问属性等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值