java中复杂类型转换_Java中的类型转换

本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

无论在C/C++还是在Java,强制类型转换已经不是陌生的概念了。但是要想全面掌握Java中类型转换的要点可不那么简单,本文将带领大家一同了解有关Java类型转换的所有要点。

数值类型的类型转换

众所周知,Java有两种数据类型:基本数据类型与引用数据类型;Java又有两种基本的类型转换原则:拓宽转换原则(widening conversion)与缩小转换原则(narrowing conversion)。

拓宽转换与缩小转换只适用于基本数据类型中的数值类型。数据值类型按照范围从小到大排列为:

byte   short   int   long   float   double

当目标类型的范围比源类型的范围大时遵循拓宽转换原则,不必强制转换。如:

byte b = 10;

short s = b;

反之则遵循缩小转换原则,即

当目标类型的范围比源类型的范围小时遵循缩小转换原则,必须强制转换。如:

short s = 10;

byte b = (byte)s;

需要注意的是拓宽转换原则不丢失数据。如:

long l1 = Long.MAX_VALUE;

float f = l1;

long l2 = (long)f;

System.out.println("转换前:" + l1);

System.out.println("转换后:" + l2);

上例输出结果为:

转换前:9223372036854775807

转换后:9223372036854775807

缩小转换原则在超出目标类型的取值范围时会导致数据丢失。如:

int i1 = 257;

byte b = (byte)i1;

int i2 = b;

System.out.println("转换前:" + i1);

System.out.println("转换后:" + i2);

上例输出结果为:

转换前:257

转换后:1

字符类型与数值类型之间的转换

基本数据类型char等同于一个无符号短整型,范围从0x0000到0xFFFF。

从其它数值类型转换到char类型时,必须进行强制转换。如:

byte b = 10;

short s = 10;

int i = 10;

long l = 10L;

float f = 10.0F;

double d = 10.0;

char c = (char)b;

c = (char)s;

c = (char)i;

c = (char)l;

c = (char)f;

c = (char)d;

将char类型转换成其它数值类型时,除byte、short必须强制转换外,int long float double均不必强制转换。如:

char c = 'a';

byte b = (byte)c;

short s = (byte)c;

int i = c;

long l = c;

float f = c;

double d = c;

引用类型的类型转换

引用类型的赋值常见于具有继承关系的两种类型的转换。如下面的例子:

public class Person {

p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值