黑马程序员技术交流社区

标题: String.valueof(11);和String 是= ""+11;的区别 [打印本页]

作者: z_one    时间: 2015-11-6 14:45
标题: String.valueof(11);和String 是= ""+11;的区别
1.string.valueof("11"), "11"是字符串;String  s =“” +11,11是整型;
2. string.valueof("11")调用的是:
public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
     }
String  s =“” +11,编译器会优化成,String  s =new StringBuilder.append(“”) .append(11);  而.append(11)调用的是:
public StringBuilder append(int i) {
        super.append(i);
         return this;
     }
super.append(i); 调用的是:
public AbstractStringBuilder append(int i) {
         if (i == Integer.MIN_VALUE) {
             append("-2147483648");
             return this;
         }
         int appendedLength = (i < 0) ? stringSizeOfInt(-i) + 1
                                      : stringSizeOfInt(i);
         int spaceNeeded = count + appendedLength;
         if (spaceNeeded > value.length)
             expandCapacity(spaceNeeded);
        Integer.getChars(i, spaceNeeded, value);
         count = spaceNeeded;
         return this;
     }

作者: 大自然的搬运工    时间: 2015-11-6 15:00
楼主威武,看的真是够深的,,,,,我只知道string在用+连接时,系统代码优化执行StringBuilder的append方法。    楼主这是从哪里看的?推荐一下吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2