基本类型之4类8种 强制类型转换

1B(字节) = 8bit        --------->        0000  0000

在Java中默认类型 : 型整数为 int , 小数为 double 

数据类型

关键字

内存占用

取值范围

字节型

byte

1个字节

-128至127

短整型

short

2个字节

-32768至32767

整型

int(默认)

4个字节

-2^31^至2^31^-1

长整型

long

8个字节

-2^63^至2^63-1

单精度浮点数

float

4个字节

1.4013E-45至3.4028E+38

双精度浮点数

double(默认)

8个字节

4.9E-324至1.7977E+308

字符型

char

2个字节

0至2^16^-1

布尔类型

boolean

1个字节

true , false

自动转换:将取值范围小的类型自动提升为取值范围大的类型

在Java中 , 整型的默认类型为 int , 所以在进行变量运算过程中, a 和 b 会自动提升为 int 类型的数据 , 得出来的结果自然也是 int 类型 , 使用 byte x = a + b; 会报错.若想坚持使用 byte类型可进行强制转换 -- byte x = (byte) (a + b);

public static void main(String[] args) {
    int a = 1;
    byte b = 2;
  	// byte x = a + b; ---> 报错
    //int类型和byte类型运算,结果是int类型
    int y = a + b;
    System.out.println(y);
}

转换规则

范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为int

byte、short、char-->int-->long-->float-->double

强制类型转换:将取值范围大的类型强制转换成取值范围小的类型

比较而言,自动转换是Java自动执行的,而强制类型转化需要我们自己手动进行

转换格式 :         数据类型      变量名 = (数据类型) 被转数据值;

数据类型 变量名 = (数据类型)被转换数值;
// double类型数据强制转成int类型,直接去掉小数点。
         int i = (int)1.5;

同样道理,当一个short类型与1相加,我们知道会类型提升,但是还想给结果赋值给short类型变量,就需要强制转换。

public static void main(String[] args) {
     //short类型变量,内存中2个字节
     short s = 1;
     /*
       出现编译失败
       s和1做运算的时候,1是int类型,s会被提升为int类型
       s+1后的结果是int类型,将结果在赋值会short类型时发生错误
       short内存2个字节,int类型4个字节
       必须将int强制转成short才能完成赋值
     */
     s = s + 1;//编译失败
     s = (short)(s+1);//编译成功
}

强烈注意:

      1.浮点转成整数,直接取消小数点,可能造成数据损失精度。

      2.int 强制转成short 砍掉2个字节,可能造成数据丢失。

// 定义s为short范围内最大值
short s = 32767;
// 运算后,强制转换,砍掉2个字节后会出现不确定的结果
s = (short)(s + 10);

基本类型之4类8种 强制类型转换

 

上一篇:KI子线段树 / AKEE SegmentTree


下一篇:Light