java面试之基本数据类型和包装类型的区别

博主面试JavaSE基础时,公司常考察基本数据类型和包装类型的使用。介绍了Java 8种基本数据类型,包括整数、浮点、字符和布尔类型,还提及默认类型。分享了int最大值加1的面试题,以及包装类型的特点和Integer缓存的面试考点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

本人最近找工作,在面试javase基础这里,有很多公司还是喜欢考察基本数据类型和包装类型的使用情况,重点就是考察日常生活中对数据类型的选定还有使用场景做考察,比如问基本数据类型的占几个字节,取值范围多少、基本数据类型默认以及数据类型隐式转化等问题。

基本数据类型

java是一种强类型语言,所以定义一个变量需要声明变量的数据类型,java一共提供了8种数据类型,其中整数类型有byteshortintlong,以及2种浮点类型:floatdouble,Unicode编码的字符单元类型char,以及表示真假的boolean类型。

  • 整数类型
类型存储字节
byte1个字节
short2个字节
int4个字节
long8个字节

需要注意的是如果没有制定类型整数类型默认值类型是int

  • 浮点型
类型存储字节
float4个字节
double8个字节

默认情况下浮点型默认是double类型,因为double的数值精度是float的两倍。

  • char类型
    char类型表示单个字符,通常用来表示字符常量。
  • boolean类型
    boolean类型有两个值,false和true。

面试题

  1. int的最大值加1会发送什么结果?
    这个是遇到很有意思的面试题,最开始我回答了一个可能会造成溢出,报错什么的。很遗憾面试官说不对,所以面试后特地写个测试方法看看到底会发送什么?
    在这里插入图片描述
    运行结果是true。
    这大概是我遇到最有意思的面试题了,因为当时对这块最大值溢出这块并不是很熟悉。所以这道题也并没有回答好。

包装类型

由于基本数据类型属于局部变量表,也就是存储在方法区上。而在java5后引入了包装对象,即基本数据类型有着对应的包装对象类型。包装对象是不可变的,一旦构造了包装对象,就不能改变包装的值,同时包装类对象还是final修饰的,所以这些包括类没有子类。

类型对应包装对象
intInteger
longLong
floatFloat
doubleDouble
shortShort
byteByte
charCharacter
booleanBoolean

面试题

包装类型最常见就是考察Integer的一个位于-128和127的一个缓存,通过源码我们可以清晰看到这一点,
一个就是int类型到Integer转变其实是调用了Integer.valueOf这个方法。
在这里插入图片描述
可以清晰看到当值范围在IntegerCache.low与IntegerCache.high也就是-127到128之前,新建的Integer对象都是从缓存里面取的。

    @Test
    public void testInteger() {
        Integer i = 130;
        Integer j = new Integer(100);
        Integer x = 100;
        Integer z = 130;
        System.out.println((i == z) + "\n" + (x == j));
    }

所以上面输出是false、false。至于为什么要引入包装类,我想应该可以这么理解:java是面向对象的一种语言,将基本类型包装成对象就可以让有对象类的一些操作,虽然包装类对象是不能被继承。(因为被final修饰),但是我们应用对象,正是因为面向对象的几个特征:封装继承多态抽象。这也是面向对象的核心吧。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值