在java中将值转换为String;有多种方法可以做到这一点。 只是想通过以下方式了解彼此之间的区别。
strValue.toString()
strValue+""
""+strValue
答案 0 :(得分:2)
一个主要区别是如何处理null
。
如果strValue
为null
,则strValue.toString()
会抛出NullPointerException
,而其他两个选项将返回字符串"null"
。
如果strValue
是盒装数字类型,并且您尝试将其他数字变量连接到它,则可能会出现其他差异。
例如:
如果
Integer a = 5;
Integer strValue = 6;
然后
a+strValue+""
将返回
"11"
,而
a+""+strValue
或
""+a+strValue
将返回
"56"
答案 1 :(得分:2)
这取决于java版本。使用StringBuilder + append(),Java 7会更聪明一些。
通常,您不需要不必要的分配。使用第一个。
答案 2 :(得分:2)
Factory.getSession(SessionType.NATIVE)
将返回自身,因为strValue.toString()
toString()
的实现(我猜测String
确实属于strValue
类型)返回String
。
this
会产生相同的值(strValue+""
""+strValue
),但不会调用strValue
方法
答案 3 :(得分:2)
所有字符串包含相同的值,请尝试:
String strValue = "Hello world"; // not null
String a = strValue.toString();
String b = strValue+"";
String c = ""+strValue;
测量其长度会得到所有结果11
,因为将空字符串添加到另一个字符串等于原始字符串本身:
System.out.println(a.length());
...
尝试这些字符串之间的相等:
System.out.println(a.equals(b));
System.out.println(b.equals(c));
System.out.println(c.equals(a));
它们都是true
,因为这些字符串具有相同的值。在strValue
不是null
的情况下,它就是全部。