1.字符串的不变性
String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。
String s1="爱慕课";
String s2="爱慕课";
String s3=new String("爱慕课");
String s4=new String("爱慕课");
system.out.println(s1==s2);//多次出现的字符串常量,java编译器只创建一个
system.out.println(s1==s3);//s1和s3是不同对象
system.out.println(s3==s4);//s3和s4是不同对象
运行结果:
true
false
false
注:如果想要比较两个字符串的内容是否相同,应使用”equals()”方法。
string类的常用方法
int length() 返回当前字符串长度
int indexOf(int ch) 查找ch字符在该字符串中第一次出现的位置
int indexOf(String str) 查找str子字符串在该字符串中第一次出现的位置
int lastIndexOf(int ch) 查找ch字符在该字符串中最后一次出现的位置
int lastIndexOf(String str) 查找str子字符串在改字符串中最后一次出现的位置
String substring(int beginIndex) 获取从beginIndex位置开始到结束的子字符串
String substring(int beginIndex , int endIndex) 获取从beginIndex位置开始到endIndex位置的子字符串
String trim() 返回去除了前后空格的字符串
bolean equals(Object obj) 将字符串与指定对象比较,返回true或者false
String toLowerCase() 将字符串转换为小写
String toUpperCase() 将字符串转换为大写
char charAt(int index) 获取字符串中指定位置的字符
String [ ] split (String regex,int limit) 将字符串分割为子字符串,返回字符串数组
byte [ ] getBytes() 将字符串转换为byte数组
当频繁操作字符串时,就会额外产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。
定义StringBuilder类的对象
StringBuilder str1=new String StringBuilder();
StringBuilder str2=new String StringBuilder("imooc");
System.out.println(str2);
StringBuilder append (参数) 追加内容到当前StringBuilder对象的末尾
StringBuilder insert(位置,参数) 将内容插入到StringBuilder对象的指定位置
String toString() 将StringBuilder对象转换为String对象
int length() 获取字符串的长度
代码实例:
StringBuilder str=new StringBuilder("hello");
str.append("imooc");
str.append(520);
System.out.println("插入前:”+str.length());
str.insert(11,"!");
string str2=str.toString();
System.out.println("插入后:”+str2);
运行结果:
插入前:hello imooc520;
插入后:hello imooc!520;