Java String

String 是一个final 类,代表不可变的字符序列。底层使用char[ ]存放。

String 的内存解析:

public void test1(){
		String str1 = "JavaEE";
		String str2 = "JavaEE";
		String str3 = new String("JavaEE");
		String str4 = "JavaEE" + "Android";
		String str5 = "Android";
		String str6 = str1 + str5;
		str5 = str5 + "Handoop";
		String str7 = str6.intern();
		String str8 = "JavaEEAndroid";
		System.out.println(str1 == str2);//true
		System.out.println(str1 == str3);//false
		System.out.println(str1.equals(str3));//true
		
		System.out.println(str4 == str6);//false
		System.out.println(str4.equals(str6));//true
		System.out.println(str7 == str4);//true
		System.out.println(str4 == str8);//true
		
		Person p1 = new Person("AA");
		Person p2 = new Person("AA");
		System.out.println("^_^"+ (p1.name == p2.name));//true
	}

所以,String s = new String("xyz");创建了2个String Object.

String 方法

字符串对象操作的方法:

public int length() 
public char charAt(int index)    // 返回在指定index位置的字符。
public boolean equals(Object anObject)     //比较字符串是否相等。相等返回true。
public int compareTo(String anotherString)     //从index = 0 开始比较,直到不等,返回不等时的差值
public int indexOf(String s)           //返回s字符串在当前字符串中首次出现的位置。若没有,返回 -1.
public int indexOf(String s ,int startpoint)      //返回s字符串从当前字符串startpoint 位置开始的,首次出现的位置
public int lastIndexOf(String s)       //返回s字符串在当前字符串中最后一次出现的位置。若没有,返回 -1.
public int lastIndexOf(String s ,int startpoint)
public boolean startsWith(String prefix)      //判断当前字符串是否以prefix 开始
public boolean endsWith(String suffix)        //判断当前字符串是否以suffix 结束
public boolean regionMatches(int firstStart,String other,int otherStart ,int length) 
                           //判断当前字符串从firstStart开始的子串与另一个字符串other从otherStart开始,length长度的字串是否equals
public boolean contains(String s)         //判断当前字符串是否包含s
字符串对象修改的方法: 
public String substring(int startpoint) 
public String substring(int start,int end) //返回从start开始到end结束的一个左闭右开的子串。start可以从0开始的。 
pubic String replace(char oldChar,char newChar) //将当前字符串出现的所有oldChar 都改为newChar。返回的是一个字符串。但当前的字符串不会改变。
public String replaceAll(String old,String new) //类似上一个 
public String trim() //去除当前字符串中首尾出现的空格,若有多个,就去除多个。 字符串中间的空格不会去除。 
public String concat(String str) //连接当前字符串与str 但当前的字符串不会改变。 
public String[] split(String regex) //按照regex将当前字符串拆分,拆分为多个字符串,整体返回值为String[] 
public Char[] toCharArray() //

转换

 

1. 字符串 与基本数据类型、包装类之间转换

      ( 1). 字符串 --->基本数据类型、包装类:   调用相应的包装类的parseXxx(String str);     (2). 基本数据类型、包装类--->字符串:   调用字符串的重载的valueOf()方法

2. 字符串与字符数组间的转换

    (1). 字符串---->字符数组:调用字符串的toCharArray();

    (2). 字符数组---->字符串:调用字符串的构造器

3.  字符串与字节数组间的转换

    (1). 字符串---->字节数组:调用字符串的getBytes()

    (2). 字节数组---->字符串:调用字符串的构造器

StringBuffer

 

StringBuffer代表可变的字符序列,是一个容器。

StringBuffer类有三个构造方法:

    1.StringBuffer()初始容量为16的字符串缓冲区    2.StringBuffer(int size)构造指定容量的字符串缓冲区    3.StringBuffer(String str)将内容初始化为指定字符串内容

StringBuffer 方法

StringBuffer append(String s),   StringBuffer append(int n) ,  
 StringBuffer append(Object o) ,  StringBuffer append(char n),
 StringBuffer append(long n),  StringBuffer append(boolean n),
 StringBuffer insert(int index, String str) 
 public StringBuffer reverse() : 反转此StringBuffer
 StringBuffer delete(int startIndex, int endIndex) 
 public char charAt(int n )
 public void setCharAt(int n ,char ch)
 StringBuffer replace( int startIndex ,int endIndex, String str) 
 public int indexOf(String str)
 public String substring(int start,int end)
 public int length()

 总结:添加:append() 删除:delete(int i,int j) 修改:setCharAt(int index,char ch) 查 charAt(int n);
 插入:insert(int index,String str)  反转:reverse() 长度:length()

StringBuilder类

String:不可变字符序列
StringBuffer:可变字符序列、效率低、线程安全
StringBuilder(JDK1.5):可变字符序列、效率高、线程不安全

效率从高到底: StringBuilde > StringBuffer > String


 

posted @ 2016-03-31 18:29  岳灵珊  阅读(184)  评论(0编辑  收藏  举报