包装类的使用:自动装箱与自动拆箱
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
包装类的使用:自动装箱与自动拆箱相关推荐
- Java 进阶——自动装箱和自动拆箱
1.什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象实例的时候,我们会这样: Class a ...
- 包装类,包装类的自动装箱和自动拆箱
目标 1)包装类的作用, 2)掌握包装类的自动装箱和自动拆箱操作. 3)掌握包装类的转换操作. 具体内容 一切皆对象,八种基本数据类型不是对象. 把Int包装成一个类,这样的一个类就可以以对象的形式操 ...
- java 自动装箱自动拆箱_自动装箱和自动拆箱
自动装箱和自动拆箱 Java 提供了 8 种基本数据类型,每种数据类型都有其对应的包装类型,包装类是面向对象的类,是一种高级的数据类型,可以进行一些比较复杂的操作,它们是引用类型而不再基本类型了. 基 ...
- 第三次学JAVA再学不好就吃翔(part64)--自动装箱和自动拆箱
学习笔记,仅供参考 自动装箱和自动拆箱 装箱:把基本类型转换为包装类类型 int x = 100; Integer i1 = new Integer(x); 拆箱:把包装类类型转换为基本类型 int ...
- 深入理解自动装箱和自动拆箱
一.什么是自动装箱.自动拆箱 此机制开始于jdk 1.5 java中有8种基本类型,对应8种基本类型有8个包装类. 整形 实型 布尔型 字符型 long/int/short/byte float/do ...
- 装箱和拆箱,自动装箱和自动拆箱
装箱和拆箱,自动装箱和自动拆箱 以Integer的创建为例. 装箱和拆箱 装箱:把基本数据类型转换成包装类对象(int->Integer) Integer num1=new Integer(17 ...
- 可能你不知道的,关于自动装箱和自动拆箱
包装类 我们知道,Java中包含了8种基本数据类型: 整数类型:byte.short.int.long 字符类型:char 浮点类型:float.double 布尔类型:boolean 这8种基本数据 ...
- 【自动装箱】Java自动装箱、自动拆箱
Java中集合只允许存储引用数据类型,那么 int char double等基础数据类型,如何存储在集合里呢?Java在JDK1.5版本以后推出了自动装箱.自动拆箱操作,那么什么是自动装箱呢,下面我们 ...
- java中为什么自动装箱拆箱_Java自动装箱和自动拆箱的理解
Java自动装箱和自动拆箱的理解 1.代码 public class AutoBoxing { public static void main(String[] args) { Integer a = ...
- 关于Integer的自动装箱与自动拆箱
关于Integer的自动装箱与自动拆箱 自动装箱 Integer x1 = 36和Integer n1 = new Integer(36)有什么区别?我们尝试运行下面代码看看会是什么结果: publi ...
最新文章
- 下一个全球电子通道系统,一定是BCH!
- 如何用 Markdown 来画图?
- 【赠书】阿里巴巴官方出品,工业级知识图谱最新书籍领取!
- Codeforces 1093C (思维+贪心)
- 在PowerDesigner中设计概念模型
- C# Task 暂停与取消
- 棋牌类游戏算法–牌分类_快速分类–三向和双枢轴
- 的udp的接收端如何看速率_计算机网络 TCP与UDP
- 普林斯顿微积分读本篇十二:洛必达法则
- 量化回测系统 股票回测系统 极简回测 策略开发
- ubuntu下使用笔记本摄像头
- 干货分享 | 最新机器学习视频教程与数据集下载(持续更新......)
- 如何把语音文件转成文字格式
- 英语Partschinite芬达石partschinite锰铝榴石
- 无线充电技术目前发展情况如何?对单片机行业有什么启示
- MATLAB机器人工具箱(一 机器人运动学)
- 计算机固态硬盘增大,老电脑想要焕发第二春,升级固态硬盘?还是加大内存容量?...
- 在Windows下使用vs2019编译libjpeg库
- BDC操作与常见问题
- c语言 if (s==null) exit(0)什么意思,[求助]exit(1);” 是什么意思,为什么有的时候我看到的是exit(0)...
热门文章
- 推荐系统——(论文阅读笔记)YouTube的视频推荐系统
- 利用Python微信远程控制
- System.InvalidOperationException: Response Content-Length mismatch: too few bytes written (0 of 1628
- 图片怎么转换为jpg格式的?照片如何在线转格式?
- 闰年的计算方法及程序算法的实现
- java隐藏手机号中间四位和隐藏邮箱
- cad打开卡死_在打开cad文件的时候会出现死机的状态
- 在家里如何赚钱?5个在家赚钱的方法,让你日进斗金!
- HTML笔记(课堂笔记整合)
- 初探 sort 方法和 sorted 内置函数