Java基本数据类型

众所周知,Java语言内置基本数据类型共分为4类8项,分别为:

  • 整型 byte/short/int/long
  • 浮点型 float/double
  • 布尔型 boolean
  • 字符型 char

  之所以分这么多种类的原因,不外乎一个很简单的道理,一个萝卜一个坑。倘若我们声明了一个long类型的变量,而只给它赋值:123。那无异于为了1个人住了一套别墅。对于空间的利用存在着极大的浪费。而再比如声明了boolean类型,却还是要给其赋值:123,那就无异于问别人吃了没,而他回答你:今天天气很好。
  故Java这种分类方式首先是考虑了类型匹配,再次是考虑了对于需要开辟的空间大小的合理利用。
  
  下面通过具体表格的形式分别介绍对应的空间大小及所表示的值范围。

类型名称占用存储空间表数范围
byte字节类型1字节-128 — 127
short短整型2字节-32768 — 32767
int整型4字节-2147483648 — 2147483647
long长整型8字节-9223372036854775808 — 9223372036854775807
float单精度4字节-3.403E38 — 3.403E38
double双精度8字节-1.798E308 — 1.798E308
char字符型2字节0 – 65535
boolean布尔型1位true/false

  上表中值得注意的是:
  1、存储空间大小,1字节(byte)=8位(bits)。
  2、以byte示例,为何表数范围如表所示。因Java中首位为符号位(0为正,1为负),故只有另七位可自由排列组合。那么正数最大即为01111111,转换为10进制就是127。负数最小理论上是11111111,但因为计算机内存储数字是通过补码的形式(有关原码、补码、反码等请大家自行百度),及对11111111进行取反+1可得到1,0000,0000转换为10进制即为128,所以最小数为-128。
  3、float/double中E即底为10,E38即为10^38。
  4、char大小为64位,原因为: Java采用unicode编码,为64位。即所有字符(包括键盘上符号、字母,中文,日文,韩文 等等)都在这64位=65536个范围之内。例如使用char a=’\u4e70’(\u表示使用unicode编码,4e70为16进制),a即为”买”字。


  另补充几点有关转型
  1、 不能对boolean类型进行类型转换。
  2、不能把对象类型转换成不相关类的对象。
  3、在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  float a = (float)1.23;
  4、 转换过程中可能导致溢出或损失精度,例如:
  int i =128;
  byte b = (byte)i;
  因为byte类型时8位,最大值为127,所以当强制转换为int类型值128时候就会导致溢出。
  5、 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
  (int)23.7 == 23;
  (int)-45.89f == -45
  6、int 之下(byte short)的整型相加减等,都是先转换为int。
  byte a = 1;
  byte b = 2;
  byte c = a + b;
  这样会报错。因为a + b已经为int类型。故需要强转。byte c = (byte) (a + b);


时间不早了,以后想到或用到补充。– end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值