java 基本数据类型转换_Java基本数据类型转换

本文详细介绍了Java中基本数据类型的转换规则,包括自动类型转换和强制类型转换,并提供了实例代码进行解析。文章指出,转换时需要注意数据范围、精度损失等问题,如byte、short、char之间的转换以及混合运算时的类型提升。通过示例代码,解释了编译错误并提供了修正方案,帮助读者理解和应用类型转换规则。
摘要由CSDN通过智能技术生成

Java基本数据类型转换

Java基本数据类型之间是存在固定的转换规则的,现总结出以下6条规则,无论是哪个程序,将这6个规则套用进去,问题迎刃而解:

● 八种基本数据类型中,除boolean类型不能转换,剩下七种类型之间都可以进行转换;

● 如果整数型字面量没有超出byte,short,char的取值范围,可以直接将其赋值给byte,short,char类型的变量;

● 小容量向大容量转换称为自动类型转换,容量从小到大的排序为:byte < short(char) < int < long < float < double

注:short和char都占用两个字节,但是char可以表示更大的正整数;

● 大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用;

● byte,short,char类型混合运算时,先各自转换成int类型再做运算;

● 多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;

接下来,根据以上的6条规则,我们来看一下以下代码,指出哪些代码编译报错,以及怎么解决:

public class TypeConversionTest {

public static void main(String[] args) {

byte b1 = 1000;

byte b2 = 20;

short s = 1000;

int c = 1000;

long d = c;

int e = d;

int f = 10 / 3;

long g = 10;

int h = g / 3;

long m = g / 3;

byte x = (byte)g / 3;

short y = (short)(g / 3);

short i = 10;

byte j = 5;

short k = i + j;

int n = i + j;

char cc = 'a';

System.out.println("cc = " + cc);

System.out.println((byte)cc);

int o = cc + 100;

System.out.println(o);

}

}

编译报错,错误信息如下所示:

2a8725746738caaef0c756f05d781824.png

图4-16:类型转换编译错误提示信息

如何修改,请看以下代码:

public class TypeConversionTest {

public static void main(String[] args) {

//1000超出byte取值范围,不能直接赋值

//byte b1 = 1000;

//如果想让上面程序编译通过,可以手动强制类型转换,但程序运行时会损失精度

byte b1 = (byte)1000;

//20没有超出byte取值范围,可以直接赋值

byte b2 = 20;

//1000没有超出short取值范围,可以直接赋值

short s = 1000;

//1000本身就是int类型,以下程序不存在类型转换

int c = 1000;

//小容量赋值给大容量属于自动类型转换

long d = c;

//大容量无法直接赋值给小容量

//int e = d;

//加强制类型转换符

int e = (int)d;

//int类型和int类型相除最后还是int类型,所以结果是3

int f = 10 / 3;

long g = 10;

//g是long类型,long类型和int类型最终结果是long类型,无法赋值给int类型

//int h = g / 3;

//添加强制类型转换符

int h = (int)(g / 3);

//long类型赋值给long类型

long m = g / 3;

//g先转换成byte,byte和int运算,最后是int类型,无法直接赋值给byte

//byte x = (byte)g / 3;

//将以上程序的优先级修改一下

byte x = (byte)(g / 3);

short y = (short)(g / 3);

short i = 10;

byte j = 5;

//short和byte运算时先各自转换成int再做运算,结果是int类型,无法赋值给short

//short k = i + j;

int n = i + j;

char cc = 'a';

System.out.println("cc = " + cc);

//将字符型char转换成数字,'a'对应的ASCII是97

System.out.println((byte)cc);

//char类型和int类型混合运算,char类型先转换成int再做运算,最终197

int o = cc + 100;

System.out.println(o);

}

}

运行结果如下图所示:

8aa31fa4a05d74b86ce3657de39c1bca.png

图4-17:类型转换测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值