java中负数默认类型为-Java中的基本数据类型与C/C+的区别
Java中的数据类型分为基本数据类型和引用数据类型。java
基本数据类型:java中的基本数据类型与C/C++中的无太大差异,因为Java虚拟机的缘由,Java中的基本数据类型所占存储空间的大小是肯定的不会随着机器硬件架构的变化而变化,使得Java编写的程序移植性比C/C++更高。Java中的基本数据类型分为8种4类。架构
默认值:整型常量默认为int型java中负数默认类型为,浮点型常量默认为double型。spa
类型转换:code
自动转换:当不一样基本类型进行运算时,所占内存空间小的类型会自动转换为所占内存大的类型转换。可是boolean型除外,它不能和其它类型进行计算。blog
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 int a; 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):class
在Java中是以补码的形式表示一个数的,当一个数为正数时它的补码就是它的补码,当一个数是负数时,它的补码等于它的原码的数值位取反[取反以后变成了反码]再在最低位加一,并且它的最高位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了。