黑马Java学习笔记之-----String类

---------------------- android培训java培训期待与您交流! ----------------------

String类:字符串

  多个字符组成的一个序列,叫字符串

构造方法

A:String():无参构造

**举例:

  String s = new String();

  s = "hello";

B:String(byte[] bys):传一个字节数组作为参数 *****

**举例

  byte[] bys = {97,98,99,100,101};

  String s = new String(bys);

C:String(byte[] bys,int index,int length):把字节数组的一部分转换成一个字符串 *****

**举例

  byte[] bys = {97,98,99,100,101};

  String s = new String(bys,1,2);

D:String(char[] chs):传一个字符数组作为参数 *****

**举例

  char[] chs = {'a','b','c','d','e'};

  String s = new String(chs);

E:String(char[] chs,int index,int length):把字符数组的一部分转换成一个字符串 *****

**举例

  char[] chs = {'a','b','c','d','e'};

  String s = new String(chs,1,2);

F:String(String str):把一个字符串传递过来作为参数

  char[] chs = {'a','b','c','d','e'};

  String ss = new String(s);

G:直接把字符串常量赋值给字符串引用对象(最常用) *****

**举例

  String s = "hello";

 

不变模式:

  一个字符串对象创建后它的值不能改变

String str1="hello";//创建一个对象hello,不会变;
System.out.println(str1);
str1+=" world!";//两个字符串对象粘粘,系统其实创建了一个新的对象,把Str1的指向改了,指向新的对象;hello就变成了垃圾;
System.out.println(str1);
//如果一直这样创建会影响系统的效率;要频繁的改变字符串对象的值就用StringBuffer来描述;
StringBuffer sb=new StringBuffer("[");
sb.append("hehe");

sb.append("]");//append();不会制造垃圾,真正在改sb的值;
System.out.println(sb);

  

 String类常用方法:

 java.lang.String

 

 char charAt (int index)  返回index所指定的字符
 String concat(String str)  将两字符串连接
 boolean endsWith(String str)  测试字符串是否以str结尾
 boolean equals(Object obj)  比较两对象
 char[] getBytes  将字符串转换成字符数组返回
 char[] getBytes(String str)  将指定的字符串转成制服数组返回
 boolean startsWith(String str)  测试字符串是否以str开始
 int length()  返回字符串的长度
 String replace(char old ,char new)  将old用new替代
 char[] toCharArray  将字符串转换成字符数组
 String toLowerCase()  将字符串内的字符改写成小写
 String toUpperCase()  将字符串内的字符改写成大写
 String valueOf(Boolean b)  将布尔方法b的内容用字符串表示
 String valueOf(char ch)  将字符ch的内容用字符串表示
 String valueOf(int index)  将数字index的内容用字符串表示
 String valueOf(long l)  将长整数字l的内容用字符串表示
 String substring(int1,int2)  取出字符串内第int1位置到int2的字符串

 

String和StringBuffer的区别:

  String类表示内容不可改变的字符串。

  StringBuffer表示内容可以被修改的字符串。

把1到100的所有数字拼起来,组成一个串。
StringBuffer sbf = new StringBuffer();  
for(int i=0;i<100;i++)
{
	sbf.append(i);
}
上面的代码效率很高,因为只创建了一个StringBuffer对象,而下面的代码效率很低,因为创建了101个对象。
String str = new String();  
for(int i=0;i<100;i++)
{
	str = str + i;
}

  String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,

  所以,将StringBuffer对象存储进Java集合类中时会出现问题。

 

StringBuffer和StringBuilder的区别:

  StringBuffer和StringBuilder都表示内容可以被修改的字符串,但

  StringBuffer(JDK1.0)是线程安全的。

    StringBuilder(JDK1.5)不保证线程安全。运行效率高

 

如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer

 

 


 

---------------------- android培训java培训期待与您交流! ----------------------

 

posted @ 2013-04-29 02:07  Mercy_K  阅读(227)  评论(0编辑  收藏  举报