标签:ram pre 不用 pen for lov str false bsp
前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bug的时候,才能处理更加从容。
String s6=new String("jiajun"); String s1="jiajun"; String s2="jiajun"; System.out.println(s1==s2);//true System.out.println(s1==s6);//false
public String substring(int beginIndex) { if (beginIndex < 0) { throw new StringIndexOutOfBoundsException(beginIndex); } int subLen = value.length - beginIndex; if (subLen < 0) { throw new StringIndexOutOfBoundsException(subLen); } return (beginIndex == 0) ? this : new String(value, beginIndex, subLen); } public String concat(String str) { int otherLen = str.length(); if (otherLen == 0) { return this; } int len = value.length; char buf[] = Arrays.copyOf(value, len + otherLen); str.getChars(buf, len); return new String(buf, true); }
public StringBuilder() { super(16); } AbstractStringBuilder(int capacity) { value = new char[capacity]; }
public AbstractStringBuilder append(String str) { if (str == null) return appendNull(); int len = str.length(); ensureCapacityInternal(count + len); str.getChars(0, len, value, count); count += len; return this; } private void ensureCapacityInternal(int minimumCapacity) { // overflow-conscious code if (minimumCapacity - value.length > 0) { value = Arrays.copyOf(value, newCapacity(minimumCapacity)); } } public static char[] copyOf(char[] original, int newLength) { char[] copy = new char[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
public synchronized StringBuffer append(StringBuffer sb) { toStringCache = null; super.append(sb); return this; } public synchronized StringBuffer append(String str) { toStringCache = null; super.append(str); return this; } public StringBuilder append(StringBuffer sb) { super.append(sb); return this; } public StringBuilder append(String str) { super.append(str); return this; } public String toString() { // Create a copy, don‘t share the array return new String(value, 0, count); }public synchronized StringBuffer append(StringBuffer sb) { toStringCache = null; super.append(sb); return this; } public synchronized StringBuffer append(String str) { toStringCache = null; super.append(str); return this; } public StringBuilder append(StringBuffer sb) { super.append(sb); return this; } public StringBuilder append(String str) { super.append(str); return this; } public String toString() { // Create a copy, don‘t share the array return new String(value, 0, count); }
public synchronized String toString() { if (toStringCache == null) { toStringCache = Arrays.copyOfRange(value, 0, count); } return new String(toStringCache, true); } public String toString() { // Create a copy, don‘t share the array return new String(value, 0, count); }
public class d { public static void main(String[] args) { String s="I"+"love"+"jiajun"; String s1="I"; String s2="love"; String s3="jiajun"; String s4=s1+s2+s3; } }
public class d { public static void main(String[] args) { String s="I"+"love"+"jiajun"; String s1="I"; String s2=s1+"lovejiajun"; System.out.println(s==s2); } }
public class d { public static void main(String[] args) { final String s1="I"; String s2=s1+"lovejiajun"; String s3="Ilovejiajun"; //s1==s3 } }
public class Demo3 { public static void main(String[] args) { run1(); run2(); } public static void run1() { long start = System.currentTimeMillis(); String result = ""; for (int i = 0; i < 10000; i++) { result += i; } System.out.println(System.currentTimeMillis() - start); } public static void run2() { long start = System.currentTimeMillis(); StringBuilder builder = new StringBuilder(); for (int i = 0; i < 10000; i++) { builder.append(i); } System.out.println(System.currentTimeMillis() - start); }
//输出:223 1
public class Demo3 { public static void main(String[] args) { test1(); test2(); } public static void test1() { StringBuilder sb = new StringBuilder(7000000); long start = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { sb.append("jiajun"); } long end=System.currentTimeMillis()-start; System.out.println(end); } public static void test2() { StringBuilder sb = new StringBuilder(); long start = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { sb.append("jiajun"); } long end=System.currentTimeMillis()-start; System.out.println(end); } //输出:18 26 }
String、StringBuffer、StringBuilder
标签:ram pre 不用 pen for lov str false bsp
原文地址:http://www.cnblogs.com/qlqwjy/p/7492786.html