1. 利用三元运算符进行递归算出1+2+3+····+100的结果
public class test {
static int sum;
public static void main(String[] args) {
int n=100;
int result=isS(100);
System.out.println(result);
}
public static int isS(int n){
sum+=n;
sum=n==0?sum:isS(--n);
return sum;
}
}
2.浮点数计算过程中的精度问题
import java.math.BigDecimal;
public class test {
static int sum;
public static void main(String[] args) {
//直接计算,精度丢失
System.out.println(3-2.6);
System.out.println(3-2.6==0.4);
//利用BigDecimal计算,不会出现精度丢失的问题
BigDecimal b1 = new BigDecimal("3");
BigDecimal b2 = new BigDecimal("2.6");
BigDecimal b3 = b1.subtract(b2);//等同于b1-b2
System.out.println(b3);
double b = b3.doubleValue();
System.out.println(b==0.4);
}
}
精度问题究其原因是计算机计算过程中是使用二进制计算,而十进制的小数转化为二进制会造成无限循环的现象,从而引发精度问题
3、复合赋值运算符
在使用复合赋值运算符,运算结果不能超出数据类型的取值范围,否则计算结果就会出错
public class test {
public static void main(String[] args) {
short a=30000;
int b=35000;
a+=b;
System.out.println(a);
}
}
复合运算结果如下,如果使用的是分开的运算:a=a+b,就会出现编译不通过