标签:
1,字符串,String类。private final char value[];
/** The offset is the first index of the storage that is used. */private final int offset;
/** The count is the number of characters in the String. */private final int count;
/** Cache the hash code for the string */private int hash; // Default to 0
/*** Class String is special cased within the Serialization Stream Protocol.** A String instance is written initially into an ObjectOutputStream in the* following format:* <pre>* <code>TC_STRING</code> (utf String)* </pre>* The String is written by method <code>DataOutput.writeUTF</code>.* A new handle is generated to refer to all future references to the* string instance within the stream.*/private static final ObjectStreamField[] serialPersistentFields =new ObjectStreamField[0];
public String() {this.offset = 0;this.count = 0;this.value = new char[0];}
public String(String original) {int size = original.count;char[] originalValue = original.value;char[] v;if (originalValue.length > size) {// The array representing the String is bigger than the new// String itself. Perhaps this constructor is being called// in order to trim the baggage, so make a copy of the array.int off = original.offset;v = Arrays.copyOfRange(originalValue, off, off+size);} else {// The array representing the String is the same// size as the String, so no point in making a copy.v = originalValue;}this.offset = 0;this.count = size;this.value = v;}
public String(char value[]) {int size = value.length;this.offset = 0;this.count = size;this.value = Arrays.copyOf(value, size);}
public int length() {return count;}
public boolean isEmpty() {return count == 0;}
public char charAt(int index) {if ((index < 0) || (index >= count)) {throw new StringIndexOutOfBoundsException(index);}return value[index + offset];}
public boolean equalsIgnoreCase(String anotherString) {return (this == anotherString) ? true :(anotherString != null) && (anotherString.count == count) &®ionMatches(true, 0, anotherString, 0, count);//调用此方法}
public boolean regionMatches(boolean ignoreCase, int toffset,String other, int ooffset, int len) {char ta[] = value;int to = offset + toffset;char pa[] = other.value;int po = other.offset + ooffset;// Note: toffset, ooffset, or len might be near -1>>>1.if ((ooffset < 0) || (toffset < 0) || (toffset > (long)count - len) ||(ooffset > (long)other.count - len)) {return false;}while (len-- > 0) {char c1 = ta[to++];char c2 = pa[po++];if (c1 == c2) {continue;}if (ignoreCase) {// If characters don‘t match but case may be ignored,// try converting both characters to uppercase.// If the results match, then the comparison scan should// continue.char u1 = Character.toUpperCase(c1);char u2 = Character.toUpperCase(c2);if (u1 == u2) {continue;}// Unfortunately, conversion to uppercase does not work properly// for the Georgian alphabet, which has strange rules about case// conversion. So we need to make one last check before// exiting.if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {continue;}}return false;}return true;}
public boolean startsWith(String prefix, int toffset) {char ta[] = value;int to = offset + toffset;//索引开始位置char pa[] = prefix.value;int po = prefix.offset;//开始位置int pc = prefix.count;//总长度// Note: toffset might be near -1>>>1.if ((toffset < 0) || (toffset > count - pc)) {return false;}while (--pc >= 0) {if (ta[to++] != pa[po++]) {return false;}}return true;}
public boolean endsWith(String suffix) {return startsWith(suffix, count - suffix.count);//获取开始比较位置,然后调用开始比较的方法,开始比较。}
public boolean startsWith(String prefix) {return startsWith(prefix, 0);}
标签:
原文地址:http://blog.csdn.net/mergades/article/details/43269957