JAVA01-避坑

浮点数不能通过 == 进行比较

因为Java中浮点数是一个近似值而不是一个绝对值
应该用两个数的差,的绝对值来判断是否小于一个较小的数

1
2
3
4
5
6
7
  // 判断两个double是否相等
public class Main {
    public static boolean doubleEquals(double a, double b) {
        // 应该用两个数的差,的绝对值来判断是否小于一个较小的数
        return Math.abs(a - b) < 0.0000001;
    }
}

Java中整数除法是地板除

如果想要精确的结果应该把它的类型提升为double在做运算

1
2
3
4
5
6
7
public class Main {
    // 请修复此问题,让3/2的结果为正确的1.5
    // 不要修改方法的参数类型
    public static double divide(int a, int b) {
        return (double) a / b;
    }
}

包装类型Boolean,自动拆箱到boolean类型时,可能会发生空指针异常

1
2
3
4
5
6
7
8
public class Main {
    // 比较一个int和一个Integer是否相等
    // 当且仅当它们代表的整数相等时,此方法返回true
    public static boolean compare(int a, Integer b) {
        if (b == null) return false;
        return a == b;
    }
}

一个变量的作用域是包围它的第一对花括号

你可以在任何地方定义花括号,花括号可以限定一个作用域

== 运算符用于判断原生数据类型,而引用数据类型,应该调用该对象的 .equlas 方法

因为 == 判断的是地址是否相同,而equlas判断是判断地址指向的内容是否相同

原生数据类型作为参数时是值传递,而引用数据类型作为参数时是引用(地址)传递

注释有可能会影响测试用例,readAsString 方法读取的是字符而不是程序有效代码

字符串拼接调用的是toString方法或者原生类型对应的表示形式

Java会自动把字符串拼接转换成StringBuilder调用

updatedupdated2025-03-012025-03-01