三元操作符、字符串操作符、类型转换操作符 --《JAVA编程思想》12

本文介绍了Java中的三元操作符、字符串操作符和类型转换操作符的使用。三元操作符提供了一种简洁的条件赋值方式,但可读性较差。字符串操作符在连接不同类型时,Java会自动转换。类型转换中,窄化转换可能造成数据丢失,而扩展转换通常是安全的。同时讨论了截尾、舍入和提升在不同类型转换中的行为,并提醒开发者注意数据溢出问题。

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

今天我们来学习 JAVA 中的 三元操作符、字符串操作符、类型转换操作符。

一、三元操作符

三元操作符的表达式为 :
boolean-exp ? value0 : value1

当 boolena-exp(当布尔表达式)的结果为 true ,则返回 vaule0 ;为 false 则返回 value1 。

        int i1 = 2;
        int i2 = 3;
        int result1 = i1 > i2 ? 1 : 0;
        System.out.println("result1======"+result1);
         i1 = 6;
         i2 = 5;
        int result2 = i1 > i2 ? 1 : 0;
        System.out.println("result2======"+result2);
result1======0
result2======1

但通常不推荐使用 三元操作符,因为可以它的逻辑可以用 if-else 来替代, 并且代码拥有更优的可读性。

        int i1 = 2;
        int i2 = 3;
        int result1;
        if (i1 > i2) {
            result1 = 1;
        } else {
            result1 = 0;
        }
        System.out.println("result1======" + result1);
        i1 = 6;
        i2 = 5;
        int result2;
        if (i1 > i2) {
            result2 = 1;
        } else {
            result2 = 0;
        }
        System.out.println("result2======" + result2);
result1======0
result2======1

二、字符串操作符
我们在使用 +、+= 操作字符串类型时,若表达式中有一个字符串类型,则后续的操作类型必须都是字符串类型(编译器会自动将其转换为字符类型)。

        int number = 24;
        String s1 = "I am ";
        System.out.println(s1 + number);
I am 24

其实上述代码中有一个隐藏的细节,JAVA已经帮我们自动处理了,其显示调用应为:

        int number = 24;
        String s1 = "I am ";
        System.out.println(s1 + Integer.toString(number));
I am 24

但小括号内的表达式仍可以进行数学逻辑运算:

        int number1 = 24;
        int number2 = 26;
        String s1 = "I am ";
        System.out.println(s1 + (number1 + number2));
I am 50

三、类型操作符
JAVA 在适当的时候,会将一种数据类型自动转换成另一种,例如为 float 类型赋值一个 int 类型,则 int 类型会自动转换为 float 类型。


        int i1 = 24;
        float f1 = i1;

我们也可以手动进行类型转换,只需在右侧的变量类型前加上小括号,小括号内放入需要转换的变量。

        int i1 = 24;
        float f1 = (float) i1;

对于基本类型而言,无需进行此操作,JAVA 会自动帮我们完成。

将位数长的数据类型转换为位数短的数据类型(int 转换为 short),称为窄化转换;将位数短的数据类型转换为位数长的类型(int 转换为 long),称为“扩展转换”。

扩展转换相对来说是安全的,窄化转换可能面临数据丢失的危险,因为其短位数的类型不能容纳超过其长度的信息(int 类型长度为32位,short类型长度为16位,位数超过16位的 int 类型转换为 short 类型时,会造成数据丢失)。

        int i1 = 36768;
        short c1 = (short) i1;
        System.out.println("c1===" + c1);
c1===-28768

在基本类型进行类型转换的时候还需要注意三类特殊情况:截尾、舍入、提升。

(1)截尾
当浮点类型 float 、double 转换为 int 类型时,只会保留其整数位。

        float f1 = 2.4F;
        double d1 = 3.6;
        int i1 = (int) f1;
        int i2 = (int) d1;
        System.out.println("i1=====" + i1);
        System.out.println("i2=====" + i2);
i1=====2
i2=====3

(2)舍入
如果想得到四舍五入的结果,需要使用 java.lang.Math 中的 round() 方法:

        float f1 = 2.4F;
        double d1 = 3.6;
        int i1 = (int) Math.round(f1);
        int i2 = (int) Math.round(d1);
        System.out.println("i1=====" + i1);
        System.out.println("i2=====" + i2);
i1=====2
i2=====4

(3)提升
当 float 类型与 double 相乘,其结果就是 double;当 int 类型与 long 类型相乘,其结果就是 long,JAVA 会自动进行扩展转换从而保证其结果的安全性。

但请注意,如果同类型运算的结果超出其最大位数,结果仍会不正确:

        int i1 = Integer.MAX_VALUE;
        System.out.println("i1====" + i1);
        int i2 = 4;
        int result = i1 * i2;
        System.out.println("result====" + result);
i1====2147483647
result====-4

所以,在进行数学运算时,请谨记数据类型溢出的问题。

本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。

若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BaymaxCS

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

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

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

打赏作者

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

抵扣说明:

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

余额充值