Java基础数据类型、类型转换及自动装箱拆箱

开场:计算机是以二进制位数来实现各种复杂计算的,既0和1,这也是计算机存储信息的最小单位,我们称之为位(bit)。计算机中存储器的计量单位是字节(Byte)。1 Byte = 8 bit

八大基础数据类型:    

Java一共包含八种基本类型,char, boolean, byte, short, int, long, float, double。可以分为三类,分别是:

字符型:char

布尔型:boolean

数值型:byte, short, int, long, float, double

每种基本类型都有自己的包装类,或叫封装类。因为基础数据类型只能进行值传递,它不是一个对象,因此不具备对象的一些基本方法,例如toString()。封装类的出现,使得基本数据类型具有了对象的属性和丰富的方法,而且很多时候需要进行引用传递,就必须使用封装类。

优劣分析:

基本数据类型内存分配在栈上,因为不涉及到对象的构造和回收处理,所以速度很快。

封装类的对象分配在堆上,指向该对象的引用分配在栈上,相比效率会降低,但是它提供了很多的类型转换方法,可以进行引用传递。

数据类型booleancharbyteshortintlongfloatdouble
包装类BooleanCharacterByteShortIntegerLongFloatDouble
所占位数18161632643264
数据范围true/false-2^7 ~ 2^7-1-2^15 ~ 2^15-1-2^15 ~ 2^15-1-2^31 ~ 2^31-1-2^63 ~ 2^63-1-2^31 ~ 2^31-1

-2^63 ~ 2^63-1

 

 

自动装箱与拆箱:

 

 

Java在JDK5.0之后对基本数据类型提供了自动装箱与拆箱,直白一点就是数据运算时不用来回转换。例如:

List<Integer> integer_list = new ArrayList<Integer>();
integer_list.add(1);//自动装箱,调用了Integer.valueOf()方法
integer_list.add(new Integer(2));
for (int i : integer_list) {
    System.out.print(i); //自动拆箱,调用了Integer.intValue()方法
}

 

类型转换:

 

char-->byte-->sort-->int-->long-->float-->double
1. 按照上面的顺序,从左往右可以直接转换,例如:char c = 'A'; int i = c; 输出A的ASCII码值65
2. 从右往左需要强制转换,例如:int i = 65; char c = (char)i; 输出A
    很多时候,强制转换会引起数据精度丢失,可以使用Java.math下的BigDecimal类来解决,例如

<strong>double d1 = 2.0;
double d2 = 3.0;
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
b1.add(b2).doubleValue();//加法
b1.subtract(b2).doubleValue();//减法
b1.multiply(b2).doubleValue();//乘法
b1.divide(b2).doubleValue();//除法</strong>

 

 

3. 包装类型转换成基础数据类型可以使用xxxxValue()方法,例如:

 

Integer int1= new Integer(10);
int1.floatValue();//Integer对象转换成float类型
int1.doubleValue();//Integer对象转换成double类型
Double d1 = new Double(10.00);
d1.floatValue();//Double对象转换成float类型
d1.intValue();//Double对象转换成int类型

 

结束:扎实的基础知识是跨越式成长的基石,一起努力夯实它

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值