在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池,每次都存储并创建新的String文字,并相应地将它们引用到String对象。
不过,我对他们的比较有一些疑问(我在这里谈的是简单的字符串和字符序列,而不是2d数组)
为什么没有任何标准和简单的方法来比较String和Char seq? 一种方法是, char data [] = {' a',' b',' c'}; String str =" abc&#34 ;;
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编程语言中,字符串是对象。
这是我开始迷茫的路线。 :|
请纠正我的理解。
答案 0 :(得分:0)
在C ++中(我猜测你是从哪里来的)字符串存储为字符数组。在Java中不是这种情况。在java中,字符串是不可变对象,而不是Char []。