Java字符串中的Null \u0000是什么?

4

在Java字符串中使用\u0000作为分隔符,有没有不好的理由?我将自己编码和解码字符串。

这是为了将用户输入的字符串列表保存到Eclipse首选项中并读取它。该列表可能具有可变大小,因此我认为无法将每个项目保存到自己的首选项中。

5个回答

3
如果数据仅在Java中使用,为什么不使用数组或列表?

它将被存储到 Eclipse 首选项中,以便在会话间保持持久性,该首选项仅接受字符串和基本类型。 - Albert
在这种情况下,我会将其序列化,但是按照您提出的方式存储也可以。 - phihag

2

曾经有一些库错误地将Java字符串视为以null结尾的字符串。我不知道现在是否仍然存在这种情况,但值得牢记这样的事情。特别是如果您与处理以null结尾的字符串的外部库进行交互。


感谢Jon Skeet(http://stackoverflow.com/questions/305223/jon-skeet-facts)允许我的答案被接受。 - Dinah

1

嗯,有可能任何以某种方式转换字符串的操作都会剥离它。哦,还有一丝可能性是您可能想保留输入中的任何空值。

你打算用它做什么?


1
如果您需要稍后解析它,字符串解析函数可能不会接受空作为分隔符的值。

非常适用于移动应用程序。 - sandalone

0

听起来你想用它来存储一个列表。为什么不使用 ArrayList<String> 呢?在字符串中有一个 \u0000 是不好的。考虑使用字节数组。

正如你所说,它是用于保存一些东西在 Eclipse 设置中,我不会使用嵌入式 NULs,因为这些文件似乎是可读的(至少在我的 ~/.eclipse 中)。你想要保存什么?例如,你可以将项目字符串化 ("item 2" "item 2")。只是不要让它变得太复杂。


它将被存储到Eclipse首选项中,以便在会话间保持持久性,该首选项仅接受字符串和基本类型。为什么一个包含0的字节数组比带有\u0000的字符串更好? - Albert
因为某些函数可能不希望嵌入的 NUL 字符,并有可能将其剥离。 - Johannes Schaub - litb
它正在尝试保存命令行参数以便稍后播放。我认为分隔符必须是无法在键盘上输入的东西。 - Albert
Eclipse提供了将某些内容存储到其设置中的功能吗? - Johannes Schaub - litb
除了它的首选项功能之外还有什么别的吗?我的问题是我不知道这个列表会有多长,所以我不能使用每个首选项。 - Albert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接