Java数据类型

java数据类型分为两种,一种为基本数据类型(内置数据类型),一种为引用数据类型。

基本数据类型

Java中共有八大基本数据类型,分别为:

数据类型大小(bit)最大值最小值默认值包装类
byte8127(-2^7)-128(2^7-1)0java.lang.Byte
short16-2^152^150java.lang.Short
int32-2^312^310java.lang.Integer
long64-2^632^640L(必须加Ljava.lang.Long
float32--0.0f(必须加f)Java.lang.Float
double32--0.0d(d可省略)java.lang.Double
char16\u0000(0)\uffff(65535)-Java.lang.Char
boolean1--false-

最好知道这些概念,在未来面试可能遇到一些关于 数据类型的概念,能简单描述总比什么都不知道的好 ^_^。
还有一种基本数据类型:void,他有对应的包装类为:java.lang.Void,我们无法对它进行任何操作,所以只需了解即可。

基础类型间的转换
自动类型转换

除了boolean类型外,其他七大数据类型之间可以混合运算,他们之间运算的原理是转换成相同的数据类型,让后进行运算,小位数的数据类型可直接转换成大数据类型(向上转型),如下所示:

byte a =1;
short b =a;//转换成功,a值赋给short类型的b,并且自动转换成short类型。
int a =1;
short b =a;//转换失败,报错。a的数据类型所占位数大于b,许进行强制类型转换

注意:char类型位数虽然比byte大,但不能将byte装换成char类型,char类型可以转换成int以及其他位数大于它的类型型。

byte a =1;
char b =a;//转换失败,
char a ='a';
int b =a;//转换成功,值为97,因为字符‘a’对应的ascll码为97,所以在转换时按照ascll码转换成97。
强制类型转换

若是想将基本数据类型大位数的强制转化为小类型数据类型(向下转型),需进行强制转换
格式:(need_type)value,need_type类型就是想转化成的类型。

int a =97;
char b =(char)a;//将整形a转化成位数比自己小的char类型,同样根据ascll码,b的值为'a'

缺点:强制转换原理其实就是大位数数据省略掉一部分位数强制变为小位数数据,这样会使得数据丢失,所以慎用!

经典面试题
现在有一个整形变量int a =130,在进行byte b =(byte)a操作后,得到的a是多少?
这是一个非常常见的题目,很多人会认为会是byte的最大值127(我之前一直这样认为的),但其实不是,具体运算过程如下:
这里需要掌握一些小知识:
java是采用补码的形式存储整数
- 源码:对于二进制数,最高位为符号位,0表示正数,1表示负数,剩余数值部分是真值。
- 反码:对于二进制数,正数的反码就是它本身,负数的反码除符号位外按位取反。
- 补码:对于二进制数,正数的补码就是它本身,负数的补码符号位取一,数值部分按位取反后末位加一。
正数(源码第一位为0):补码即原码
负数补码(源码第一位为1):源码按位取反,末位加一,前面加上符号。相当于再求一次补码。

//
//由于int型为32位,byte型为8位,那么a的值130在内存中表示形式为:00000000 00000000 00000000 10000010 ,而变为byte类型时,只能有8位,则变成了10000010。
//此时这个数代表了byte类型的源码,由于第一为1,则代表该值为负。
//所以该源码变为补码时,应该为-(01111101+1)=-(01111110)=-126

这样这节就算结束了,下一章节还会对数据类型的知识进行补充。这块的知识看似简单实则复杂,记得java存储数据是采用补码的形式。任何问题欢迎留言,相互学习,错误的地方也请指示出来^_^。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值