Java 空白(“空白”)作为常数v/s直接使用空白(“空白”)

Java 空白(“空白”)作为常数v/s直接使用空白(“空白”),java,string,Java,String,我在java代码的许多地方使用了空白值(“”) 我想知道在常量中定义blank(“”)与直接使用该常量和使用blank(“”是同一回事还是有什么区别 谢谢。字符串文本“将添加到字符串常量池中。所以像这样直接使用-->“,因为它更具可读性。不要定义一个名为BLANK_VALUE=“的静态常量,然后使用它。就性能而言,字符串文本的同一实例将被重复使用,因此这无关紧要(声明静态字段*的开销很小,但这没关系) 查看哪种代码更有意义: if("".equals(myString)){ // clear a

我在java代码的许多地方使用了
空白值(“”

我想知道在常量中定义
blank(“”)与直接使用该常量和
使用blank(“”
是同一回事还是有什么区别

谢谢。

字符串文本
将添加到字符串常量池中。所以像这样直接使用-->
,因为它更具可读性。不要定义一个名为BLANK_VALUE=
的静态常量,然后使用它。就性能而言,字符串文本的同一实例将被重复使用,因此这无关紧要(声明静态字段*的开销很小,但这没关系)

查看哪种代码更有意义:

if("".equals(myString)){ // clear and easy to understand.
//do something
}


PS:在LHS上使用常量将阻止NPE

为什么不尝试使用
isEmpty()
方法

if(myString !=null && myString.isEmpty() ){}

谢谢将像
一样直接使用。使用“.equals(myString)”来防止NPE@abc123-同意。。我不确定我是否同意这一点。它如何更具可读性?您可以通过导入static来摆脱类前缀。@eis-这个问题的答案是基于选项的。定义常量的问题在于我们往往会过度思考和使用它们。我曾经不得不处理一些正则表达式,比如:
str.matches(SPACE+”(?=“+NUMBER\u CONTANT+”+“+”+EOS\u CONSTANT+…”
你明白我的意思了吗?。可能很简单:
str.matches(“?=0+…)
不同之处在于,一个是更多的键入。前者还可能触发一些有关魔法值的警告,这可能导致编码样式报告失败。
“”
用作返回空白值,该值被解释为方法的一些响应,以避免NullPointerException。因此,我已询问了差异。对于null和blank检查,我使用您建议的代码。
if(myString !=null && myString.isEmpty() ){}