Monday, August 31, 2015

String

在Java里,String是一个类(class)。这个类包含char数组(array),以及其他的字段(fields)和方法(methods)。

常用方法(Java):
toCharArray() //get char array of a String charAt(int x) //get a char at the specific index length() //string length length //array size 
indexOf(String s) // return the index of the substring s in string.
split(String pattern) // split the String with string pattern. substring(int beginIndex) substring(int beginIndex, int endIndex) Integer.valueOf()//string to integer String.valueOf()/integer to string Arrays.sort() //sort an array Arrays.toString(char[] a) //convert to string Arrays.copyOf(T[] original, int newLength) System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

注意事项(Java):
1. String is immutable. 也就是说string在被创建以后,在heap上不能被改变,任何的改变都会创建一个新的string object。
2. 如果想用可以改变的String,就需用StringBuffer或者StringBuilder。
3. String immutable的原因:
    1) Efficiency: Caching hashcode;
    2) Security: Security; thread safe; no violation for other objects (HashSet etc.)
4. 初始化String,用"" 还是 new String():
    主要在于interning,如果用"sss",那么会指向heap上已有的"sss",这样的话==是true。否则,会有两个"sss", equals()为true,但是==为false。
5. Array用length (length是Array object的一个final instance variable(不会变)). String用length(),是String这个class的一个method。
6. Varargs (Variable Arguments)
    As its definition indicates, varargs is useful when a method needs to deal with an arbitrary number of objects. One good example from Java SDK is String.format(String format, Object... args). The string can format any number of parameters, so varargs is used.
String.format("An integer: %d", i);
String.format("An integer: %d and a string: %s", i, s);


常见问题:
1. 转化一个char[] to String
public static void main(String[] args) {
  char[] myString = new char[] {'T', 'H', 'I', 'S', ' ',  'I', 'S', ' ', 'T', 'E', 'S', 'T'};
 
  String output1 = new String(myString);
  System.out.println("output1 : " + output1);
 
  String output2 = String.valueOf(myString);
  System.out.println("\noutput2 : " + output2);
 }

2. 转化String to char[]
toCharArray()

3. String to int
Integer.valueof(s);
or
Integer.parseInt(s);

4. String相关的问题,经常会用到char[],经常会遍历,用几个pointer标记位置的方法也是常用的。

5. for-each
char[] cArray = s.toCharArray();
for (char c : cArray)
这里c gets a copy of each value in cArray!

No comments:

Post a Comment