Java类型转换

Java类型转换:自动与强制转换规则详解,
本文介绍了Java中的类型转换,包括自动类型转换(如int转long、float转double)和强制类型转换(如long转int)。强调了不同类型间赋值时可能出现的数据范围和精度问题,以及强制转换的必要性。

类型转换

Java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有较严格的校验。

int a = 10;

long b = 100L;

b = a;//把a赋值给b,可以通过编译

a = b;//编译失败

在Java中,当参与运算数据类型不一致时,就会进行类型转换。Java中类型转换分为两类:自动类型转换(隐式)和强制类型转换(显式)


一.自动类型转换(隐式)

自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。

System.out.println(1024);//整型默认情况下是int

System.out.println(3.14);//浮点型默认情况下是double

int a = 100;

long b = 10L;

b = a;//a和b都是整型,a的范围小,b的范围大,当将a赋值geib的时候,编译器回自动将a提升为 //long类型,然后赋值.

a = b;//编译报错,long的范围比int大,会有数据丢失,不安全



float f = 3.14F;

double d = 5.12;

d = f;//编译器会将f转换为double,然后进行赋值

f = d;//double表示的数据范围大,直接将double类型交给float会有数据丢失,不安全



byte b1 = 100;//编译通过,100没有超过byte的范围,编译隐式将100转换为byte

byte b2 = 257;//编译失败,257超过了byte的数据范围,有数据丢失

二.强制类型转换(显式)

强制类型转换:当进行操作的时候,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。

int a = 10;

long b = 100L;

b = a;//int ---->long,数据范围由小到大,隐式转换

a = (int)b;//long---->int,数据范围由大到小,需要强转,否则编译失败



float f = 3.14F;

double d =5.12;

d = f//float---->double,范围由小变大,隐式转换

f = (float)d;//double---->float,范围由大变小,需要强转,否则编译失败



a = d;//报错,类型不兼容

a = (int)d;//int没有double表示的数据范围大,需要强转,否则编译失败



byte b1 = 100; //100默认为int,没有超过byte范围,隐式转换

byte b2 = (byte)257;//257默认为int类型,超过byte范围,需要显示转换,不然报错



boolean flag = true;

a = flag;//编译失败:类型不兼容

flag = a;//编译失败:类型不兼容

注意事项:

  1. 不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型

  2. 如果需要把范围大的类型赋值给范围小的,需要强制类型转换,但是可能精度丢失

  3. 将一个字面值常量进行赋值的时候,Java会自动针对数字范围进行检查

  4. 强制类型转换不一定能成功,不相干的类型不能相互转换

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值