当 String 作为类变量时,不管有没有加 static 前缀,其初始值都是 null
当 String 作为方法中的变量时,如果没有赋初始值,在做变量方法调用判定空的时候,运行前就直接被检测出错误,显示需要赋初值
isEmpty() 判空用来判定字符串是否为空的方法,当然这个空值得是不为 null 的空""
,如下
String str = "";
System.out.println(str.isEmpty());
最后返回的是 true,如果 str 没有赋初值则在运行前就会报错,如果 str 赋初值 null 则在运行时,调用isEmpty()
会抛出空指针异常
String 在作为类变量时候不手动给其赋值,其初始值为 null,null 表示还未给其分配一个空间,而""
表示已经开辟了一份空间了
String str = null;
System.out.println(str==null);
最后输出结果是 true,如果这个 null 的 str 去调用 String 类中的一些方法也会一起空指针异常
equals("") 判空除了使用isEmpty()
,使用equals("")
也可以达到同样判定""
的效果
String str = "";
System.out.println(str.equals(""));
结果返回 true
(String)null这种写法其实我之前没有用过,我是看了 jedis 的源码发现在创建 redis 连接池的时候如果不传密码,密码会通过 (String)null 的方式传递
经过我自己的尝试发现,(String)null 实际还是 null 空值,效果上和 null 一模一样,但是还不太清楚为什么源码要 (String)null 这样去写