Java 基础学习02 -- 数据类型转换

数据类型转换:

隐式转换

  • 转换规则: byte, short, char —- int —- long —- float —- double
  • 整数默认是int类型, 浮点数默认是double类型

上述规则用几个例子来解释:

示例1:

int a =1;
short sh1 = 1;
short sh1 = sh1 + 1;//错误
int c = a + sh1; //正确
short sh2 = a + sh1;//错误

long l1 = 111111111111L;
long l2 = 111111111111L;
long l3 = l1 + l2;//正确

大容器承接小容器按照转换规则进行;
整型在进行运算时, 若数据类型小于int, 则会自动提升为int (故long类型运算时并不会变成int类型)

示例2:

float f1 = 1.2F;
float f2 = 2.3F;
float f3 = f1 + f2;//正确
float f4 = f1 + 1.2;//错误

float 类型之间进行运算时, 不会提升类型, 但是浮点数常量默认为double类型, float类型与 double类型运算时, 类型提升为double.

示例3:

byte by1 = 1;
byte by2 = 1;
short sh = 1;
char ch = ‘0’;

sh = by1 + sh;//错误
ch = by1 + ch// 错误
byte by3= by1 + by2;//错误
byte by3= by1 + 1;//错误

byte由于运算时升级成int 类型, 编译报错; short, char 同byte, 并且这三个类型之间直接进行运算也都会报错.

示例4:

byte a = 1;
byte a += 1;//正确

扩展运算符隐含了强制转换, 相当于 a = (byte) (a + 1);

示例5:

byte b = 3 + 4;//正确

常量优化机制,编译时,会优先计算3+4的结果,如果其结果在byte取值范围内,则通过,如果不再byte的取值范围内,则报错

强制转换

目标类型 变量名 = (目标类型) (被转换的数据)

示例1:

char ch = ‘a’;
ch += 1;
int b = (int) ch;

强制转换时, 要注意变量所能接受的数值范围, 若超出了范围, 会丢失精度.

示例2:

Int a1 = 10;
byte b1 = (byte) a1; //值为10
int a2 = 200;
byte b2 = (byte) a2; //值不为200, 丢失精度

由于byte 的数值范围是 -128~127, 上述 b1的值 10 得以保留, 而 b2 则不能保存 200的数值, 损失了精度.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值