八大基本数据类型对应的八大包装类(含对应面试题解析)

文章目录

    • 1.为什么我们需要包装类?
    • 2. 包装类都有哪些呢?
    • 3.装箱与拆箱
    • 4. 基本类型、包装类与String之间的转换
    • 5.代码测试
    • 6.面试题

本文已同步到: https://www.bithachi.cn/posts/a852be86.html

1.为什么我们需要包装类?

因为Java是面向对象编程的,那么我们想让基本数据类型可以有对象的特征,调用一些方法,那么Java就提供了包装类,实现基本数据类型转换成包装类,进而使得基本数据类型有了类的特点,可以调用类中的方法。

2. 包装类都有哪些呢?

话不多说,直接上图

image-20200731200506011

3.装箱与拆箱

在我们正式使用包装类之前,我们先了解一下什么是装箱与拆箱。

  1. 装箱:将基本数据类型包装成对应的包装类,比如 int->Integer
  2. 拆箱:将包装类拆解成对应的基本数据类型,比如 Character->char

4. 基本类型、包装类与String之间的转换

现在我们先看看基本类型、包装类与String之间的转换,然后依次代码测试这些转换

image-20200731201544760

5.代码测试

我们以上图的序号依次测试这些转换方式,1->2->3->4->5->6

/*** @Program: JavaSE* @ClassName: TestMain* @Author: Mr.BitHachi* @CreateTime: 2020-07-31 20:12* @Version: V1.0* @Description: 测试基本数据类型、包装类与String之间的转换**/public class TestMain {public static void main(String[] args) {/************  1:基本数据类型->包装类 ************/System.out.println("------- 1 -------");int i1=100;Integer t1=new Integer(i1);//通过构造器Float f1=new Float("32.1F");//通过字符串参数Character ch1='A';//自动装箱System.out.println(t1+","+f1+",ch1");/************  2.包装类->基本数据类型  ************/System.out.println("------- 2 ------");int i2=t1.intValue();//调用包装类的方法char ch2=ch1;//自动拆箱System.out.println(i2+","+ch2);/************  3.String类->基本数据类型  ************/System.out.println("------- 3 ----------");String s3="123";int i3=Integer.parseInt(s3);//调用相应的包装类的parseXxx(String)静态方法boolean b3=new Boolean("true");//通过包装类的构造器System.out.println(i3+","+b3);/************  4. 基本数据类型->String类 ************/System.out.println("------- 4 ----------");String s4=String.valueOf(3.4F);//String的valueOf(x);String d4=5.2D+3.4d+"";//String + 自动转换System.out.println(s4+","+d4);/************  5.String类->包装类  ************/System.out.println("------- 5 ----------");String s5="142.35D";Double d5=new Double (s5);//通过字符串参数System.out.println(s5);/************  6.包装类->String类  ************/System.out.println("------- 6 ----------");Float f6=123.456f;String s6=f6.toString();//对应包装类对象的toString()方法String sf=Float.toString(f6);//调用对应包装类的toString(x)方法System.out.println(s6+","+sf);}
}

运行结果:

------- 1 -------
100,32.1,ch1
------- 2 ------
100,A
------- 3 ----------
123,true
------- 4 ----------
3.4,8.6
------- 5 ----------
142.35D
------- 6 ----------
123.456,123.456

6.面试题

public class FaceTest {public static void main(String[] args) {/************  1  ************///比较情况下,编译时将Integer统一编译成Double,与位数多的单位保持一致Object o1 = true ? new Integer(1) : new Double(2.0);System.out.println(o1);//1.0/************  2  ************///这里没有比较,只有条件判断Object o2;if (true)o2 = new Integer(1);elseo2 = new Double(2.0);System.out.println(o2);//1/************  3  ************///Integer内部定义了IntegerCache类结构,IntegerCache中定义了 Integer[],//保存了从-128~127范围的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在//- 128~127范围内时,可以直接使用数组中的元素,不用再去new了.目的:提高效率Integer i = new Integer(1);Integer j = new Integer(1);System.out.println(i == j);//falseInteger m = 1;Integer n = 1;System.out.println(m == n);//trueInteger x = 128;Integer y = 128;System.out.println(x == y);//false}
}

运行结果:

1.0
1
false
true
false


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部