【发布时间】:2015-06-10 12:47:10
【问题描述】:
在 Java 中,为什么不能将 String 转换为 Char 数组,反之亦然?
为什么它们没有可比性?
char matrixC[][] = {{'s', 't','a', 'c','k'},
{'o','v','e','r'},
{'f','l','o','w'}};
String [] matrixS = {"stack", "over","flow"};
// matrixS=matrixC //Not allowed...
if (matrixS.equals(matrixC) || matrixC.equals(matrixS) )
{
System.out.print("true");
}
else
System.out.print("false"); //Output
已编辑:
经过一番研究和挖掘, 我在下面的链接中找到了我的第一个问题的答案(为什么不能将字符串转换为字符数组,反之亦然?),正如 roger_that 所解释的那样。感谢詹姆斯的提示。 不可变
String is immutable. What exactly is the meaning?
所以,我们在 java 堆中有单独的字符串池,它每次都存储和创建新的字符串字面量,并相应地将它们引用到字符串对象。
不过,我对它们的比较仍有一些疑问(我在这里说的是简单的 String 和 Char 序列,而不是二维数组)
为什么没有任何标准简单的方法来比较String和Char seq? 一种方法可能是, 字符数据[] = {'a', 'b', 'c'}; 字符串 str="abc";
if (str.length()==data.length && str.length()>0 )
{
for (int i=0;i<str.length();i++)
{
if (str.charAt(i)!=data[i])
System.out.println("not equal");
}
}
else
System.out.println("not equal");
有没有其他简单/直接的方法可以做到这一点,除了,
char data[] = {'a', 'b', 'c'};
String str="abc";
String str1= new String(data);
if (str1.equals(str))
System.out.println("equal");
结论:
字符串不是java中的字符序列。
他们应该从这里删除这一行 https://docs.oracle.com/javase/tutorial/java/data/strings.html
字符串
在 Java 编程中广泛使用的字符串是一系列 字符。在 Java 编程语言中,字符串是对象。
这是我开始困惑的地方。 :|
请纠正我的理解。
【问题讨论】:
-
因为 java.lang.String 是一个真实的对象,它不等同于 char[],所以直接检查相等性是愚蠢的。看看docs.oracle.com/javase/8/docs/api/java/lang/String.html 并花更多时间阅读基础知识书籍。
-
java String 确实有一个 toCharArray() 方法,这是值得的。
标签: java arrays string char equals