ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-02-20 21:03:21  阅读:166  来源: 互联网

标签:类型转换 short 字节 int 类型 强制 byte


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);

 

标签:类型转换,short,字节,int,类型,强制,byte
来源: https://blog.csdn.net/weixin_43761066/article/details/123034909

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有