【问题标题】:what happens when converting char to string? (Java) [duplicate]将 char 转换为字符串时会发生什么? (Java)[重复]
【发布时间】:2023-04-08 05:46:01
【问题描述】:

可能重复:
How do I compare strings in Java?

我正在使用 String.valueOf 将 char 转换为字符串。但是返回值似乎与同一个字母的字符串不完全相同。代码如下:

    String myString = "s";
    char myChar = 's';//both string and char are assigned as letter 's'

    String stringFromChar = String.valueOf(myChar);

    if (myString == stringFromChar) {
        out.println("equal");
    } else {
        out.println("not equal");
    }

每次打印不相等。请帮忙,谢谢! :)

【问题讨论】:

标签: java string char


【解决方案1】:

== 比较参考值,而不是实际值。您必须使用equals 来比较该值。

如果您不明白,请阅读此article,它清晰而简单。

【讨论】:

    【解决方案2】:

    永远不要再这样做了!!!答应我!!! =P

    当比较字符串时,总是,总是,总是使用 equals 方法。见下文!

        String myString = "s";
        char myChar = 's';//both string and char are assigned as letter 's'
    
        String stringFromChar = String.valueOf(myChar);
    
        if (myString.equals(stringFromChar)) {
            System.out.println("equal");
        } else {
            System.out.println("not equal");
        }
    }
    

    【讨论】:

    • 承诺!这似乎与 C++ 不同...
    【解决方案3】:

    将char转换为字符串时会发生什么?

    好吧,您正在使用String.valueOf(char) 方法,其javadoc 没有说明如何它进行转换。但是您看到的行为强烈表明您使用的 JVM 每次调用该方法时都会创建一个新的 String 对象。

    但你应该依赖于这种情况。

    底线是您应该始终使用equals 方法来比较字符串。将字符串与== 进行比较通常会给您带来误报……取决于字符串的创建/获取方式。你刚刚被那个咬了。学习。

    参考:

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2011-10-31
      • 2012-10-03
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多