今天我们来学习 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
所以,在进行数学运算时,请谨记数据类型溢出的问题。
本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。
若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!