java封箱和拆箱分析

总的来说就是:装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。一共有八种基本数据类型都有对应“封箱”他们分别是:

基本数据类型                                              包装类

byte                                                            Byte

boolean                                                      Boolean

short                                                           Short

char                                                            Character

int                                                               Integer

long                                                            Long

float                                                            Float

double                                                        Double

方法/步骤

  1. 1、首先我们要建立一个测试类。在测试类中我们可以看到“Integer integer = new Integer(520);”这里是最常用的方法。如果单纯是这种方法就不会有“封箱”和“拆箱的介绍了。

  2.     




  3. 下面我们来看一个“封箱”。这里“Integer integer = 520;”并没有按照常规方法“new”一个对象出来,而是直接赋值,其实自动装箱就是编译器帮助我们改进代码。也就是说“Integer integer = 520;”就间接等于“Integer integer = new Integer(520);”

    java封箱和拆箱分析






  4. 那上面说过“封箱”什么叫做“拆箱”呢?自动拆箱也是编译器帮助我们改进代码。把一个对象赋值给一个“int”类型的值也就是说“int c = integer2;” 实现的是“integer2.intValue”调用了“intValue”方法。可以看到最后能够直接输出结果。

    java封箱和拆箱分析





  5. 下面我们来看个有趣的事情。定义了“d1”和“d2”,分别直接相等和用“equal”方法相等。我们都知道结果一个是“false”一个是“true”。重要的是下面这个

    java封箱和拆箱分析






  6. 从图中可以看到“d3”和“d4”不管是直接相等还是“equal”方法相等。结果都是“true”。而“d5”和“d6”就不是这样的结果了。其原因在代码中的注释也解释过了就是“[-128——127]为了方便仍然当作基本数据类型整数来处理”。如果在这个数的范围内,结果都是“true”,超过了范围就会一个是“false”,一个是“true”。

  7. java封箱和拆箱分析










转自:https://jingyan.baidu.com/article/7c6fb428291a6380642c90fc.html


包装类的另外一个比较有用的是可以将String 字符串类型转换为相应的基本数据类型。

    下面以将String转为int为例:

public static void main(String[] args) {		
		String string="10";
		String string2="10a";
		try{
			int a=Integer.parseInt(string);
			int b=Integer.parseInt(string2);
			System.out.println(++a);
		}catch (Exception e) {
			e.printStackTrace();
		}
		
	}
 如果在上述方法中str="10a";则在调用parseInt方法时候会产生NumberFormatException异常,见JDK API中对该方法的描述:
public static int parseInt(String s) throws NumberFormatException


注:index 包装类 返回的基本数据类型 方法名


1 Integer int static int Integer.parseInt(Sting s)
2 Character char static char Character.parseChar(String s)
3 Float float static float Float.parseFloat(String s)
4 Dobule double static double Double.parseDouble(String s)
5 Byte byte static byte Byte.parseByte(String s)
6 Short short static short Short.parseShort(String s)
7 Long long static long Long.parseLong(String s)
8 Boolean boolean static boolean Boolean.parseBoolean(String s)





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值