本文共 1260 字,大约阅读时间需要 4 分钟。
Java中的数据类型分为基本数据类型和引用数据类型。
基本数据类型:java中的基本数据类型与C/C++中的无太大差别,由于Java虚拟机的原因,Java中的基本数据类型所占存储空间的大小是确定的不会随着机器硬件架构的变化而变化,使得Java编写的程序移植性比C/C++更高。Java中的基本数据类型分为8种4类。
默认值:整型常量默认为int型,浮点型常量默认为double型。
类型转换:
自动转换:当不同基本类型进行运算时,所占内存空间小的类型会自动转换为所占内存大的类型转换。但是boolean型除外,它不能和其它类型进行计算。
byte a = 10;
short b = 100;
int c = 1000;
float f = 1.0f;
double d = 1.12;
c = c+a; //a会自动转换为int型再与c进行计算。
c = c+b; //b会自动转换为int型再与c进行计算。
d = d+f; //f会自动转换为double再与d进行计算。
d = c+d; //c会自动转换为double型再与d进行计算。
强制转换:当你想把所占内存空间大的类型转换成小的类型时,就要进行强制转换了。语法是:(要转换成的类型)变量名或常量;但是这可能会造成数据丢失,比如把浮点型转换成整型,那么小数部分就会丢弃。
1 inta;2 double d = 1.45;3 a = (int)d; //a=1
要注意的是byte是一个特殊的基本类型,当用int型常量赋值给byte变量时,只要不超过byte的取值范围就不用进行强制转换,但是:仅限于常量。
1 byte b = 100; //100是int型常量,且没有超过byte的取值范围所以不会出现错误
2 byte y = (byte)200; //因为byte的最大正整数为127,所以200超过了范围,如果不进行强制转换会出错
3 int a = 10;4 b = (byte)a; //a是int型变量,当赋值给byte型变量时如果不进行强制转换会出错
最大值与最小值:以byte型为例,它的最大值为28-1,最小值为-28,为什么最大值会(-1):
在Java中是以补码的形式表示一个数的,当一个数为正数时它的补码就是它的补码,当一个数是负数时,它的补码等于它的原码的数值位取反[取反之后变成了反码]再在最低位加一,而且它的最高位,也就是从左往右的第一位表示符号位,1表示负,0表示正。以3为例:
+3的原码:0000 0011;-3的原码:1000 0011;
+3的反码:0000 0011; -3的反码:1111 1100;
+3的补码:0000 0011;-3的补码:1111 1101;
因为最高位是符号位,所以一个整数的最大值只能是0111 1111;转换成十进制就是127,而负数的最小值就是1000 0000,这个是补码,把它转成反码(即最低位-1)得:0111 1111,再转成原码得:1000 0000就是-128了。
转载地址:http://dqjdv.baihongyu.com/