深度理解类型转换(包含面试题适合二刷)

基本数据类型转换

在Java程序中,不同的基本数据类型的值经常需要进行相互转换。Java语言所提供的七种数值类型之间可以相互转换,基本数据类型转换有两种转换方式:自动类型转换和强制类型转换

1. 自动类型转换

取值范围小的类型自动提升为取值范围大的类型
在这里插入图片描述
以下情况会发生自动类型转换(隐式类型转换):

  1. 当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时

    int i = ‘A’;//char自动升级为int
    double d = 10;//int自动升级为double

  2. 当存储范围小的数据类型与存储范围大的数据类型一起混合运算时,会按照其中最大的类型运算

    int i = 1;
    byte b = 1;
    double d = 1.0;
    double sum = i + b + d;//混合运算,升级为double

  3. 当byte,short,char数据类型进行算术运算时,按照int类型处理

    byte b1 = 1;
    byte b2 = 2;
    byte b3 = b1 + b2;//编译报错,b1 + b2自动升级为int
    char c1 = ‘0’;
    char c2 = ‘A’;
    System.out.println(c1 + c2);//113

boolean类型不参与

2. 强制类型转换

通常将取值范围大的类型转换成取值范围小的类型时需要进行强制(显示)类型转换。

转换格式:
数据类型 变量名 = (数据类型)被强转数据值;

(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围小的变量时,需要强制类型转换,提示:有风险,可能会损失精度或溢出

int i = (int)3.14;//强制类型转换,损失精度
double d = 1.2;
int num = (int)d;//损失精度
int i = 200;
byte b = (byte)i;//溢出

(2)当某个值想要提升数据类型时,也可以使用强制类型转换.提示:这个情况的强制类型转换是没有风险的。

int i = 1;
int j = 2;
double shang = (double)i/j;

3.特殊的数据类型转换

任意数据类型的数据与String类型进行“+”运算时,结果一定是String类型

System.out.println(“” + 1 + 2);//12

练习

1.判断如下代码是否编译通过,如果能,结果是多少?
short s1 = 120;
short s2 = 8;
byte s3 = (byte)(s1 + s2);
2.判断如下代码是否编译通过,如果能,结果是多少?
char c1 = ‘0’;
char c2 = ‘1’;
char c3 = c1 + c2;
3.判断如下代码是否编译通过,如果能,结果是多少?
char c1 = ‘0’;
char c2 = ‘1’;
System.out.println(c1 + c2);
4.判断如下代码是否编译通过,如果能,结果是多少?
int i = 1;
int j = 2;
double d = i/j;
System.out.println(d);

思考题和面试题:
1.下面两种方式有区别吗?
float f1 = 12.345f;
float f2 = (float)12.345;
2.下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
3.下面的操作结果是什么呢?
byte b = (byte)130;//-126
4.字符参与运算
是查找ASCII里面的值
‘a’ 97
‘A’ 65
‘0’ 48
System.out.println(‘a’);
System.out.println(‘a’ + 1);
5.字符串参与运算
这里其实是字符串的连接
System.out.println(“hello”+‘a’+1);//
System.out.println(‘a’+1+“hello”);//
System.out.println(“5+5=”+5+5); //
System.out.println(5+5+“=5+5”);//

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力奋斗的JAVA小余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值