JDK 5.0之前

基本数据类型<---->包装类:调用包装类的构造器代码里有知识点和注意点

转换目的:有了类的特点,就可以调用类中的方法

public class WrapperTest {// 基本数据类型--->包装类:调用包装类的构造器@Testpublic void test1() {int num1 = 10;Integer in1 = new Integer(num1);System.out.println(in1.toString());//10Integer in2 = new Integer("123");System.out.println(in2.toString());//123// 报异常:NumberFormatExceptionInteger in3 = new Integer("123abc");//调用Integer必须全是数字System.out.println(in3.toString());//有点特殊:因为底层源码 return ((s != null) && s.equalsIgnoreCase("true"));Boolean b1 = new Boolean(true);Boolean b2 = new Boolean("True");//trueSystem.out.println(b2);Boolean b3 = new Boolean("true123");//flaseOrder order = new Order();System.out.println(order.isMale);//false//因为基本数据类型的默认初始化值为:falseSystem.out.println(order.isFamale);//null//此时为引用数据类型(类),默认初始化值:null}
}
class Order {boolean isMale;Boolean isFamale;
}

包装类--->基本数据类型:调用包装类的xxxValue()
转换目的:就可以进行加减乘除的运算

public class WrapperTest {@Testpublic void test2() {Integer in1 = new Integer(12);int i1 = in1.intValue();System.out.println(i1 + 1);//13Float f1 = new Float(12.3);float f2 = f1.floatValue();System.out.println(f2 + 1);//13.3}
}

JDK5.0之后

自动装箱:本质是替换之前的调用包装类的构造器

自动拆箱:本质是替换之前的调用包装类的xxxValue()

public class WrapperTest {@Testpublic void test3() {//自动装箱int num2 = 10;Integer in1 = num2;boolean b1 = true;Boolean b2 = b1;//自动拆箱System.out.println(in1.toString());int num3 = in1;}
}

对于包装类而言(以int为例),自动装箱时,使用Integer.valueOf(int i)方法;JVM会创建一个缓存处理对于[-128,127]的取值,Integer会缓存对象(String常量池)超过这个范围就创建新的Integer对象。

Integer i1 = 10;//第一次出现,创建对象进入常量池Integer i2 = 10;//第二次出现,复用上面对象 

到底什么时候用基本类型,啥时候用包装类?基本类型的默认值有时候是个挺烦的事。

阿里编码规约:

1.在类中定义成员变量,必须使用包装类声明。

现在开发的是一个银行卡系统;肯定会有用户的卡号和余额(浮点数)

double sal;//默认值是0.0 -> 到底是正常使用状态余额0还是这个用户已经注销了?

Double sal;//默认是null,变为null即可。

将来要把类的成员变量存储到数据库中,默认值经常造成干扰。利用null来判断是否数值存在!

2.方法中大量进行算术运算,使用基本类型。

基本数据类型、包装类---->String类型:调用String重载的valueOf(Xxx xxx)

public class WrapperTest {@Testpublic void test4() {//方式一:连接运算int num1 = 10;String str1 = num1 + "";//方式二:调用String的valueOf(Xxx xxx)float f1 = 12.3f;String str2 = String.valueOf(f1);Double d1 = new Double(12.4);String str3 = String.valueOf(d1);System.out.println(str2);//"12.3"System.out.println(str3);//"12.4"    }
}

注意点:“+”运算符是最简单、最快捷,也是使用最多的字符串连接方式。在使用"+"运算符连接字符串和int型(或double型)数据时,“+”将int(或double)型数据自动转成String类型。

 String--->基本数据类型、包装类:调用包装类的parseXxx(String s)

public class WrapperTest {@Testpublic void test5() {String str1 = "123";int num2 = Integer.parseInt(str1);//若为"123a",则会报NumberFormatExceptionSystem.out.println(num2 + 1);String str2 = "true";boolean b1 = Boolean.parseBoolean(str2);//非true,即flaseSystem.out.println(b1);}

注意:转换时,可能会报NumberFormatException

包装类的使用:自动装箱与自动拆箱相关推荐

  1. Java 进阶——自动装箱和自动拆箱

    1.什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象实例的时候,我们会这样: Class a ...

  2. 包装类,包装类的自动装箱和自动拆箱

    目标 1)包装类的作用, 2)掌握包装类的自动装箱和自动拆箱操作. 3)掌握包装类的转换操作. 具体内容 一切皆对象,八种基本数据类型不是对象. 把Int包装成一个类,这样的一个类就可以以对象的形式操 ...

  3. java 自动装箱自动拆箱_自动装箱和自动拆箱

    自动装箱和自动拆箱 Java 提供了 8 种基本数据类型,每种数据类型都有其对应的包装类型,包装类是面向对象的类,是一种高级的数据类型,可以进行一些比较复杂的操作,它们是引用类型而不再基本类型了. 基 ...

  4. 第三次学JAVA再学不好就吃翔(part64)--自动装箱和自动拆箱

    学习笔记,仅供参考 自动装箱和自动拆箱 装箱:把基本类型转换为包装类类型 int x = 100; Integer i1 = new Integer(x); 拆箱:把包装类类型转换为基本类型 int ...

  5. 深入理解自动装箱和自动拆箱

    一.什么是自动装箱.自动拆箱 此机制开始于jdk 1.5 java中有8种基本类型,对应8种基本类型有8个包装类. 整形 实型 布尔型 字符型 long/int/short/byte float/do ...

  6. 装箱和拆箱,自动装箱和自动拆箱

    装箱和拆箱,自动装箱和自动拆箱 以Integer的创建为例. 装箱和拆箱 装箱:把基本数据类型转换成包装类对象(int->Integer) Integer num1=new Integer(17 ...

  7. 可能你不知道的,关于自动装箱和自动拆箱

    包装类 我们知道,Java中包含了8种基本数据类型: 整数类型:byte.short.int.long 字符类型:char 浮点类型:float.double 布尔类型:boolean 这8种基本数据 ...

  8. 【自动装箱】Java自动装箱、自动拆箱

    Java中集合只允许存储引用数据类型,那么 int char double等基础数据类型,如何存储在集合里呢?Java在JDK1.5版本以后推出了自动装箱.自动拆箱操作,那么什么是自动装箱呢,下面我们 ...

  9. java中为什么自动装箱拆箱_Java自动装箱和自动拆箱的理解

    Java自动装箱和自动拆箱的理解 1.代码 public class AutoBoxing { public static void main(String[] args) { Integer a = ...

  10. 关于Integer的自动装箱与自动拆箱

    关于Integer的自动装箱与自动拆箱 自动装箱 Integer x1 = 36和Integer n1 = new Integer(36)有什么区别?我们尝试运行下面代码看看会是什么结果: publi ...

最新文章

  1. 下一个全球电子通道系统,一定是BCH!
  2. 如何用 Markdown 来画图?
  3. 【赠书】阿里巴巴官方出品,工业级知识图谱最新书籍领取!
  4. Codeforces 1093C (思维+贪心)
  5. 在PowerDesigner中设计概念模型
  6. C# Task 暂停与取消
  7. 棋牌类游戏算法–牌分类_快速分类–三向和双枢轴
  8. 的udp的接收端如何看速率_计算机网络 TCP与UDP
  9. 普林斯顿微积分读本篇十二:洛必达法则
  10. 量化回测系统 股票回测系统 极简回测 策略开发
  11. ubuntu下使用笔记本摄像头
  12. 干货分享 | 最新机器学习视频教程与数据集下载(持续更新......)
  13. 如何把语音文件转成文字格式
  14. 英语Partschinite芬达石partschinite锰铝榴石
  15. 无线充电技术目前发展情况如何?对单片机行业有什么启示
  16. MATLAB机器人工具箱(一 机器人运动学)
  17. 计算机固态硬盘增大,老电脑想要焕发第二春,升级固态硬盘?还是加大内存容量?...
  18. 在Windows下使用vs2019编译libjpeg库
  19. BDC操作与常见问题
  20. c语言 if (s==null) exit(0)什么意思,[求助]exit(1);” 是什么意思,为什么有的时候我看到的是exit(0)...

热门文章

  1. 推荐系统——(论文阅读笔记)YouTube的视频推荐系统
  2. 利用Python微信远程控制
  3. System.InvalidOperationException: Response Content-Length mismatch: too few bytes written (0 of 1628
  4. 图片怎么转换为jpg格式的?照片如何在线转格式?
  5. 闰年的计算方法及程序算法的实现
  6. java隐藏手机号中间四位和隐藏邮箱
  7. cad打开卡死_在打开cad文件的时候会出现死机的状态
  8. 在家里如何赚钱?5个在家赚钱的方法,让你日进斗金!
  9. HTML笔记(课堂笔记整合)
  10. 初探 sort 方法和 sorted 内置函数