gpt4 book ai didi

java - 如何通过 char[] 比较构造中的字符串

转载 作者:行者123 更新时间:2023-11-29 03:52:29 25 4
gpt4 key购买 nike

我尝试了以下但无法得到任何比较 2 字符串的答案。我怎样才能比较 b 和 x 并得到“真”?

import java.io.*;

class Test {
public static void main(String[] args) {
// String a = "abc";
String b = new String("abc");
// System.out.printf("a == b -> %b\n", (a == b));
// System.out.printf("a.equals(b) -> %b\n", a.equals(b));
char[] x = new char[4];
x[0] = 'a'; x[1] = 'b'; x[2] = 'c'; x[3] = 0;
String s = new String(x);
System.out.printf("x = %s\n", s);
System.out.printf("b == s -> %b\n", b == s);
System.out.printf("b.equals(s) -> %b\n", b.equals(s));
System.out.printf("b.compareTo(s) -> %d\n", b.compareTo(s));
}
}

x = abc
b == s -> false
b.equals(s) -> false
b.compareTo(s) -> -1

最佳答案

char 数组不是 String。事实上,您正在比较对象(Stringchar[])的引用值,这永远不会是真的。

您需要将 char 数组转换为 String 并使用 String.equals(otherString) 或转换 Stringchar 数组,并将数组与 Arrays 类中的静态方法进行比较。

char[] x = new char[3];
x[0] = 'a'; x[1] = 'b'; x[2] = 'c';
String b = new String("abc");
String otherString = new String(x);
if (b.equals(otherString))
{
// they match
}

或者使用 Arrays 中的静态方法 ...

char[] myStringAsArray = b.toCharArray();
if (Arrays.equals(x, myStringAsArray))
{
// they match
}

如 Alex 的回答所述,Java 字符串中没有终止 null。

Java文档:

http://download.oracle.com/javase/6/docs/api/java/lang/String.html

http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html

关于java - 如何通过 char[] 比较构造中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com