????????在Java中,如果一个变量没有被显式初始化,它将具有默认值。这些默认值依赖于变量的类型,例如,整数类型的默认值是0,布尔类型的默认值是false,引用类型的默认值是null。当我们使用这些未初始化的变量时,可能会出现一些问题,因为它们的值是不确定的。
????????为了避免这些问题,我们通常会在使用之前对变量进行判空或者初始化。这样可以确保变量具有合适的值,从而避免程序运行时的异常和错误。
利处和意义:
????????1. 避免NullPointerException:当一个变量是引用类型,并且没有被初始化时,其默认值是null。如果我们直接使用这个变量,而没有进行判空,就有可能抛出NullPointerException。通过判空处理,我们可以在使用变量之前检查其是否为null,从而避免出现空指针异常。
????????2. 提高代码可读性:通过对未初始化的变量进行判空或者初始化,可以让代码更加清晰和易读。其他开发人员可以清楚地知道变量的状态和值,减少代码理解和维护的困难。
????????3. 防止逻辑错误:有时候,变量的默认值可能与我们期望的不符。例如,一个整型变量的默认值是0,但我们期望它表示一个无效的状态。在这种情况下,我们可以通过判空或者特定的初始化来表示这个无效状态,从而避免逻辑错误。
????????4. 提高程序的健壮性:通过判空和初始化,我们可以在程序运行时及早发现潜在的问题,并采取相应的处理措施。这有助于提高程序的健壮性和可靠性,减少潜在的异常和错误。
????????总而言之,判空和初始化可以提高程序的稳定性和可读性,避免空指针异常和逻辑错误。对于未初始化的变量,始终要根据实际需求进行判空或者初始化,以确保变量具有合适的值。
示例代码:
//初始化数据
private static String cmiFormat(String num){
if (Double.isInfinite(Double.parseDouble(num))){
return "--";
}
if (Double.isNaN(Double.parseDouble(num)) || StringUtils.isBlank(num)){
num = "0";
}
BigDecimal data = new BigDecimal(Validate.treatStr(num,"0"));
BigDecimal percent = new BigDecimal("100");
return data.divide(percent, 4, RoundingMode.HALF_UP).toString();
}
//返回数据类型为String类型数据类校验
public static String treatStr(Object content, String def) {
if (content instanceof String) {
if (StringUtils.isBlank((String) content) || "null".equals(content)) {
return def;
} else {
return (String) content;
}
} else if (content == null) {
return def;
} else {
String data = String.valueOf(content);
return StringUtils.isBlank(data) ? def : data;
}
}