Java 包装类(java包装类和基本数据类型的区别)

  本篇文章为你整理了Java 包装类(java包装类和基本数据类型的区别)的详细内容,包含有java包装类的作用 java包装类和基本数据类型的区别 Java包装类型 java 包装类 占用字节 Java 包装类,希望能帮助你了解 Java 包装类。

  static Integer valueOf(String s)

  把字符串转换转换成Integer对象返回 要求字符串的内容必须为纯数字

  
结果:
 

  自动装箱与自动拆箱

  ​ 在JDK1.5中就增加了自动装箱和自动拆箱。主要是让基本数据类和对应的包装类进行自动的转换,方便我们的使用。

  ​ 自动装箱就是基本数据类型可以自动转换为对应的包装类。例如:

  

Integer i = 10;

 

  int num = 20;

  Integer i2 = num;

  

 

  ​ 自动拆箱就是包装类可以自动转换为基本数据类型。例如:

  

Integer i = new Integer(10);

 

  int num = i;

  

 

  自动装箱其实是通过包装类的静态方法valueOf来实现的转换。

  自动拆箱有个很典型的用法就是在进行运算的时候:因为对象时不直接进行运算的,而是要转化为基本数据类型后才能进行加减乘除

  例:

  

Integer num = 10;

 

  //进行计算时隐含的有自动拆箱

  System.out.println(num--);

  

 

  下面说点稍微难点的,是稍微

  

//在-128~127 之外的数

 

   Integer num1 = 297; Integer num2 = 297;

   System.out.println("num1==num2: "+(num1==num2));

  // 在-128~127 之内的数

   Integer num3 = 97; Integer num4 = 97;

   System.out.println("num3==num4: "+(num3==num4));

  

 

  结果:
 

  打印的结果是:
 

  num1num2: false
 

  num3num4: true

  很奇怪吧:这就归结于java对于Integer与int的自动装箱与拆箱的设计,是一种模式:叫享元模式(flyweight)

  为了加大对简单数字的重利用,java定义:在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象

  而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象;明白了吧

  以上的现象是由于使用了自动装箱所引起的,如果你没有使用自动装箱,而是跟一般类一样,用new来进行实例化,就会每次new就都一个新的对象;

  这个的自动装箱拆箱不仅在基本数据类型中有应用,在String类中也有应用,比如我们经常声明一个String对象时:

  

String str = "sl";

 

  //代替下面的声明方式

  String str = new String("sl");

  

 

  如图片失效等情况请参阅公众号文章:https://mp.weixin.qq.com/s/5tr-KUiVNJz0LbeEuTAw_A
 

  欢迎关注我的公众号:愚生浅末,一起学习交流。

  以上就是Java 包装类(java包装类和基本数据类型的区别)的详细内容,想要了解更多 Java 包装类的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: