gpt4 book ai didi

java - 原始值和字符串值的字符串转换对比输出

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

在下面提到的程序中,对比字符串和原始值的输出。这在内部如何运作??

public class Test {

public static void main(String[] args) {

String s1 = String.valueOf(99);
String s2 = String.valueOf(99);
System.out.println(s1==s2); //returns false, why??

s1 = String.valueOf("99");
s2 = String.valueOf("99");
System.out.println(s1==s2); //returns true, why??


}
}

最佳答案

String.valueOf("99") 返回传递给它的同一个实例(因为 valueOf(Object obj) 返回那个 Object' s totStringStringtoString 返回 this)。由于 "99" 字符串是相同的实例(由于 String 池),所以对 String.valueOf("99") 的调用都返回同一个实例。

public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}

/**
* This object (which is already a string!) is itself returned.
*
* @return the string itself.
*/
public String toString() {
return this;
}

另一方面,每次调用 String.valueOf(99) 都会调用 Integer.toString(99),这会产生一个新的 String 实例。

public static String valueOf(int i) {
return Integer.toString(i);
}

public static String toString(int i) {
if (i == Integer.MIN_VALUE)
return "-2147483648";
int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
char[] buf = new char[size];
getChars(i, size, buf);
return new String(buf, true);
}

关于java - 原始值和字符串值的字符串转换对比输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38590095/

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