strValue.toString()和amp;之间的差异strValue中+"" &安培; "&#34 + strValue中

时间:2016-04-26 07:24:06

标签: java android string

在java中将值转换为String;有多种方法可以做到这一点。 只是想通过以下方式了解彼此之间的区别。

strValue.toString()

strValue+""

""+strValue

4 个答案:

答案 0 :(得分:2)

一个主要区别是如何处理null

如果strValuenull,则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的情况下,它就是全部。