黑马程序员技术交流社区
标题:
【南京校区】Java中的类型转换
[打印本页]
作者:
大蓝鲸Java
时间:
2019-7-19 12:00
标题:
【南京校区】Java中的类型转换
1.基本数据类型对应的包装类
包装类,其实就是把基本数据类型变成对应的对象。
好处;其实就可以来调用方法,简化操作。
我们就必须有一个类去表示这个对象。
基本数据类型所对应包装类的类名:把首字母变成大写。int 跟 char 有点特殊
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
//以上的8种都是基本数据类型所对应的包装类
//在这些类中都定义了很多的方法来帮我操作基本数据类型。
//比如:基本数据类型中,最大值。
//int类型的最大值。
2.获取Integer对象的方式
Integer i = 100;
引申:
Integer i = 100;
底层:
会看100是否在byte的取值范围之内,如果在直接从数组中拿
如果不在,那么直接new Integer的对象。
目的:
因为在实际开发中,byte取值范围之内的值,用的非常多。
如果用一次new一次,那么浪费空间。
不管用多少次,只要是在byte的取值范围之内,提前给你准备好了,用的时候直接拿。
cache 数组:byte常量池。
池子中装的:-128 - 127 之间每一个值的Integer对象。
3.int和String的相互转换
每种方式记住一个最为简单,在工作中最为常用的方法就可以了。
int --> String
+ "";
//任意数据类型变成字符串 都可以加一个双引号。
String --> int
int i = Integer.parseInt("123");//记忆的。
int i = Integer.parseInt("abc");//类型转换异常。
注意点:
字符串中必须是数字类型也可以。
4.自动装箱和自动拆箱
装箱:基本数据类型 变成 引用数据类型
拆箱:引用数据类型 遍历 基本数据类型
自动:不需要我们自己完成。
自动装箱:Java帮我们已经完成了基本数据类型变成包装类的操作,不需要我们自己手写代码实现。
自动拆箱:Java帮我们已经完成了包装类变成基本数据类型的操作,不需要我们自己手写代码实现。
案例:
Integer i = 100; //触发了自动装箱
Integer i1 = 10;//触发了自动装箱,把一个基本数据类型变成了包装类。
Integer i2 = 20;//触发了自动装箱,把一个基本数据类型变成了包装类。
Integer i3 = i1 + i2;//两个对象怎么能相加呢?
//此时触发了自动拆箱。
//先把i1和i2这两个对象拆箱成基本数据类型,再用基本数据类型进行相加
//再把相加之后的结果,自动装箱成Integer对象赋值给i3.
//了解
byte常量池的触发时机?
Integer i = new Integer(10);//此时不会触发
只有在直接赋值的时候触发byte常量池机制。
如果直接赋的值,是在byte的取值范围之内,就从常量池中拿。
如果不在byte取值范围之内,就new。
好处:可以结束内存空间。
引申:
键盘录入的引申。
基础班:Scanner
整数:nextInt
小数:nextDouble
字符串:next
有一个小弊端:
next无法接受带有空格的字符串。
且nextInt,nextDouble在遇到字母的时候会报错。
以后的写法:
不管录入什么样的数据请一律使用:nextLine。
如果你想要用整数类型。再进行类型的转换就可以了。
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个数");
String line = sc.nextLine();//abc
int i = Integer.parseInt(line);
//思想:
不管数据怎么样,先把他录到内存里面。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2