String
直接赋值
String str=“hellow”;
只创建了一个内存空间
使用new关键字 String str=new String(“hellow”);
使用new关键字实例化String时会在堆内存中开辟2个空间,其中第一个空间没用,在等待垃圾回收器回收,
所以使用直接赋值的方式会更合理。
String str="hellow";
String str1=new String("hellow");
System.out.print(str==str1);
结果返回false,内存空间不同,所以返回false
-------------------------------------
str.equals(str1);//返回true
‘==’比较的是地址
‘equals’比较的是内容,在开发中多用equals
String内容不可更改(耗资源)
String str=“hellow”;
str=str+“world”;
表面上是更改了,实际上是先在堆内存中开辟空间放‘hellow’,再开辟空间放‘world’,再开辟空间放‘hellowworld’,最终str指向--->‘hellowworld’,所以改变的只是对内存地址的指向
String的常用方法
字符串长度:length()
字符串转换数组:toCharArray()
从字符串中取出指定位置的字符:charAt()
字符串与byte数组的转换:getBytes()
过滤字符串中存在的字符:indexOf(),返回的是该字符在字符串中的位置
去掉字符串前后的空格:trim()
从字符串中取出子字符串:subString()
大小写转换:toLowerCase() toUpperCase()
判断字符串开头,结尾字符:endsWith() startWith()
替换String字符串中的一个字符:replace();
StringBuffer
认识StringBuffer
缓冲区,本身也是操作字符串,但是与String不同,StringBuffer可以更改
StringBuffer是一个操作类,所以必须通过实例化来操作,处理速度比String快
StringBuffer常用方法
append()---追加内容
insert(位置,内容)--插入
replace(开始位置,结束位置,替换内容)
indexOf()
StringBuilder
1.一个可变的字符序列,该类被设计作用StringBuffer的一个简易替换,用在字符串缓冲区,被单个线程使用时,建议优先考虑该类,速度比StringBuffer快。
2.但是如果涉及到线程安全,建议使用StringBuffer
StringBuilder常用方法
append()
insert()