Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的空字符串与空字符串_Java_String - Fatal编程技术网

Java中的空字符串与空字符串

Java中的空字符串与空字符串,java,string,Java,String,我在一些链接上读到过,返回空字符串比返回空字符串更好,因为它消除了空点异常的可能性 但是,如果我们从内存的角度考虑,我认为空字符串确实占用了一些堆空间,毕竟它是一个对象,尽管是空的。因此,考虑到返回null不比返回空字符串好吗?对于collection来说也是一样的,比如说ArrayList?有时候你想返回null,有时候你不想。这实际上取决于你的逻辑 例如,考虑一种情况,其中一个空字符串表示一个合法的返回值。在这种情况下,如果在构造某个对象时遇到逻辑错误,则不希望返回空字符串,因为它在您的情况

我在一些链接上读到过,返回空字符串比返回空字符串更好,因为它消除了
空点异常的可能性


但是,如果我们从内存的角度考虑,我认为空字符串确实占用了一些堆空间,毕竟它是一个对象,尽管是空的。因此,考虑到返回null不比返回空字符串好吗?对于collection来说也是一样的,比如说
ArrayList

有时候你想返回
null
,有时候你不想。这实际上取决于你的逻辑

例如,考虑一种情况,其中一个空字符串表示一个合法的返回值。在这种情况下,如果在构造某个对象时遇到逻辑错误,则不希望返回空字符串,因为它在您的情况下是合法的返回值,因此您可能希望返回
null
,以指示存在某种错误

例如,考虑得到这个数组:<代码> [ DOG1 ],“DOG2”,“CAT”,“”,“”/Cord>,并且您要编写一个在数组中搜索字符串的方法:

private String getDog(String dog) {
   for(String str : animals) {
      if(str.equals(dog)) {
         return dog;
      }
   }
   return null;
   //If you return an empty String instead
   //it's already a valid member in that array...
   //it won't be an indication that the String doesn't exist
}

有时您希望返回
null
,有时您不希望返回。这实际上取决于你的逻辑

例如,考虑一种情况,其中一个空字符串表示一个合法的返回值。在这种情况下,如果在构造某个对象时遇到逻辑错误,则不希望返回空字符串,因为它在您的情况下是合法的返回值,因此您可能希望返回
null
,以指示存在某种错误

例如,考虑得到这个数组:<代码> [ DOG1 ],“DOG2”,“CAT”,“”,“”/Cord>,并且您要编写一个在数组中搜索字符串的方法:

private String getDog(String dog) {
   for(String str : animals) {
      if(str.equals(dog)) {
         return dog;
      }
   }
   return null;
   //If you return an empty String instead
   //it's already a valid member in that array...
   //it won't be an indication that the String doesn't exist
}

null
宗教战争中,我自己并不认为
null
与其他选择相比是不好的做法,但有些人确实如此。在担心性能之前,我肯定会首先考虑什么样的设计和API是有意义的

也就是说,我不认为记忆是个问题<代码>“
将被
intern
ed,并且堆上只有一个从使用
return”“
的方法返回的
实例


我也不认为返回一个非
null
引用要快得多。

。在担心性能之前,我肯定会首先考虑什么样的设计和API是有意义的

也就是说,我不认为记忆是个问题<代码>“将被
intern
ed,并且堆上只有一个从使用
return”“
的方法返回的
实例


我也不相信返回非
null
引用的速度会快到无穷多。

我不会说返回null总是坏事,但我个人倾向于避免它

如果可用,我们通常使用可选的。(来自或)


因此,在您的情况下,您要么返回包含某些值的
Optional
,要么返回
Optional.缺席()

如果可用,我们通常使用可选的。(来自或)


因此,在您的例子中,您可以返回包含一些值的
可选的
,或者返回
可选的.缺席()

答案取决于。空的
字符串
对象基本上是
字符[0]
int
。如果你认为这是一个很大的堆空间,那么…好吧。但我从未见过有人这样做。@sᴜʀᴇsʜᴀᴛᴛᴀ 这可能要视情况而定,但我对
null
有偏见:)@是的。空字符串有时会引起痛苦:P.
return“”在多个位置不会浪费堆内存!在Java中,字符串是不可变的,这给了Java编译器很大的优化空间。由字符串文字创建的字符串(如
“xyz”
,而不是
新字符串(“…”
)在字符串文字池中得到优化,字符串文字池中将不会有重复的字符串!答案取决于。空的
字符串
对象基本上是
char[0]
int
。如果你认为这是一个很大的堆空间,那么…好吧。但我从未见过有人这样做。@sᴜʀᴇsʜᴀᴛᴛᴀ 这可能要视情况而定,但我对
null
有偏见:)@是的。空字符串有时会引起痛苦:P.
return“”在多个位置不会浪费堆内存!在Java中,字符串是不可变的,这给了Java编译器很大的优化空间。由字符串文字创建的字符串(如
“xyz”
,而不是
新字符串(“…”
)在字符串文字池中得到优化,字符串文字池中将不会有重复的字符串!