java数据类型间的转换

本文详细介绍了Java中的三种类型转换方式:基本数据类型之间的类型转换、字符串与其他数据类型的转换及引用类型间的转换。重点讲解了基本数据类型之间的自动类型转换、强制类型转换及通过包装类进行的转换,并给出了具体的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 数据类型间的转换
类型转换就是将某个数值从一种数据类型更改为另一种数据类型。Java中通常存在3种类型转换方式:
基本数据类型之间的类型转换
字符串与其他数据类型的转换
引用类型间的类型转换
下面分别介绍这3种类型转换方式。
1.基本数据类型之间的类型转换
在Java语言中,当多个不同基本数据类型的数据进行混合运算时,如整型、浮点型和字符串型进行混合运算,需要先将它们转换为统一的类型,然后再进行计算。
基本数据类型之间的转换可以分为3种:自动类型转换、强制类型转换和通过包装类进行过渡转换。
自动类型转换
从低级类型向高级类型的转换为自动类型转换,Java编程人员无需进行任何操作,由计算机自动地转换数据的类型。低级类型指取值范围小的类型,高级类型指取值范围大的类型,如int型相对于short型是高级类型,而相对于long型则是低级类型。不同基本数据类型间的混合运算存在以下4种情况。
(1)byte、short、char、int、long、float中的一种或多种类型数据与double型数据进行混合运算,可进行如下表示:
(byte、short、char、int、long、float) op double àdouble
该规则表明,当存在double型的数据参与计算时,其他所有数据都会被自动转换为double类型,并且计算结果为double型。
说明:箭头左边表示进行计算的各基本数据类型的数据,op表示操作符(如加“+”、减“-”、乘“*”、除“/”等),箭头右边表示自动转换后的数据类型。
例如:
System.out.println(200/4.5);        //int型与double型数据进行运算, 输出结果为: 44.44444444444444
System.out.println(12.1F-1.0);           //float型与double型数据进行运算, 输出结果为: 11.100000381469727
(2)byte、short、char、int、long中的一种或多种类型数据与float型数据进行混合运算,可进行如下表示:
(byte、short、char、int、long) op float àfloat
该规则表明,在不存在double型的数据情况下,若有float型的数据参与计算,则其他所有数据都会被自动转换为float类型,并且计算结果为float型。
例如:
System.out.println(200/4.5F);              //int型与float型数据进行运算, 输出结果为: 44.444443
(3)byte、short、char、int中的一种或多种类型数据与long型数据进行混合运算,可进行如下表示:
(byte、short、char、int) op long àlong
该规则表明,在不存在浮点型数据的情况下,若有long型的数据参与计算,则其他所有类型数据都会被自动转换为long类型,并且计算结果为long型。
(4)byte、short、char中的一种或多种类型数据与int型数据进行混合运算,可进行如下表示:
(byte、short、char) op int àint
该规则表明,在不存在浮点型和long型数据的情况下,若有int型的数据参与计算,则其他所有类型数据都会被自动转换为int类型,并且计算结果为int型。
(5)只存在byte、short、char类型间的混合运算,可进行如下表示:
(byte、short、char) op (byte、short、char) àint
该规则表明,在只有byte、short和char类型间的数据进行混合运算时,所有的类型数据都会被自动转换为int类型,并且计算结果为int型。
例如:
byte a=8;
short b=2;
short c=a+b;                       //编译出错, 表达式"a+b"的值的类型为int
注意:
byte、short类型变量与char类型变量之间的赋值不允许自动转换,可进行强制类型转换,但如果一个字符常量值在byte或short类型的取值范围内,则可以将该字符常量直接赋值给byte或short型变量,例如:byte bt='a'或short st='z'是合法的。
从低级类型向高级类型的转换通常是比较安全的,因为低级类型数据的取值范围包含在高级类型数据的取值范围内,不会出现数据溢出或精度下降的情况。但在个别情况下,自动转换就会导致数据溢出的现象,例如:
int num1=2147483647;                    //定义int型变量num1, 并赋值为int类型的最大值
char c='A';                                //定义char型变量c, 并赋值为字符'A'

来源:网站源代码
原文地址:http://www.isstudy.com/java/1567.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值