黑马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培训、期待与您交流! ----------------------