文章目录
- String类
- String常用的字符串处理方法
- StringBuffer类
 
- StringBuffer
- StringBuffer类中常用的方法
- StringBuilder类(了解为主)
- StringTokenzier类(了解为主)
 

final属性,不可扩展,不可子类,不可改变。
数据在常量池
String s1="1";
String s2="1";
String s3=new String("1");
s1=s2   s1与s2都是常量区,地址相同
s1!=s3  s3是栈,地址不同
"1"+"2" 是常量+常量=常量
String s1="1"; s1是变量
String s2="2"; s2是变量
s1+s2=变量+变量=变量(new的 在堆中)
字符串比较所有字符的Ascll大小
String s1="1";
String s2="1";
System.out.println(s1.compareTo(s2));
-1 S1<S2
0  S1=S2
1  S1>S2
判断字符串包含关系
String s1="1";
String s2="12";
System.out.println(s2.contains(s1));
S2包含S1 true
查找指定字符位置
Strings1="12";
System.out.println(s1.indexOf('1'));   0位置
System.out.println(s1.indexOf('2'));   1位置
System.out.println(s1.indexOf('3'));   -1找不到
字符串截取,
String s1="0123456789";
从指定位置一直到最后
System.out.println(s1.substring(7));   789
从A位置到B位置之前,不包括B位置
System.out.println(s1.substring(7,8));   7
去掉前后空格
S1.trim();
String转char[]
Strings1="0123456789";
char[] list=s1.toCharArray();
System.out.println(list);
字符串比较所有字符的Ascll大小
String s1="001122";
System.out.println(s1.replaceAll("11","33"));
System.out.println(s1);
003322
001122
字符串分割
S1="11 22 33";
S1.split(" ")=["11","22","33"]
String类
String是字符串常量类
 String对象的值一经赋值,其值不可变
 指的是所指向的内存值不可修改,但可以改变指向
String list=new String("hello");
list引用指向了对象
引用数据类型不直接拥有空间,只是指向空间
list=new String("hai");
引用指向被改变
String类型变量的初始化
 方法一:构造方法初始化
 String name= new String(“zhangxiao”);
 方法二:字符串常量初始化(不推荐)
 String sex = “男”;
//了解为主!!!
s="hello";
相当于:s=new String("hello);
在JVM中进行的优化
String s1="hello";
s==s1;
这是因为JVM进行的优化
String类是final的,无法被继承
String s = “hello” 和 String s = new String(“hello”) 有什么不一样?
 两个对象的内存不同
String常用的字符串处理方法
字符串连接(不改变原来的数据)
 concat(String str)
 “+”运算符
String s1=new String("111");
String s2=new String("222");
s1=s1+s2;
s1=s1.concat(s2);
- 字符串查找
indexOf (String str)
 lastIndexOf(String str)
 charAt(int indexOf)
 startsWith(String prefix)检测字符串是否以指定的前缀开始。
- 字符串分割
split(String regex):字符串分割
 compareTo(String str):字符串比较
 equalslgnoreCase(String str):忽略大小写
- 字符串替换
replace(char oldChar, char newChar)
- 字符串求子串
substring(int beginIndex, int endIndex)
- 字符串大小写转换
toUpperCase() 小写转大写
 ToLowerCase()大写转小写
StringBuffer类
StringBuffer
 StringBuffer sb=new StringBuffer();
 添加
 sb.append("123");
 sb.append('4');
 System.out.println(sb);    					1234
 获取指定位置字符
 System.out.println(sb.charAt(0));				1
 插入
 System.out.println(sb.insert(2,"00"));			120034
 字符串反转
 System.out.println(sb.reverse());				430021
 删除
 System.out.println(sb.delete(2, 4));      		4321
 替换
 System.out.println(sb.replace(2, 4, "00"));	4300
StringBuffer类是一个字符串变量类
 StringBuffer对象的值可以修改
 主要用于对字符串做大量修改的操作时
 StringBuffer变量的初始化
 构造方法初始化
 StringBuffer stringBuffer = new StringBuffer(“Hello”);
StringBuffer类中常用的方法
-  字符串连接:append(Object obj) 
-  字符串删除:delete(int start,int end) 
-  字符串插入:insert(int offset,Object obj) 
-  字符串逆序:reverse() 
-  转换为String对象:toString() 

只使用·String时内存消耗比较大
StringBuilder类(了解为主)
StringBuilder类与StringBuffer类的方法调用是一致的。
 StringBuilder类与StringBuffer类的区别:
 – StringBuffer是线程安全的
 – StringBuilder是非线程安全的
 (多线程)
StringTokenzier类(了解为主)
StringTokenizer类主要用途是将字符串以定界符为界,分析为一个个独立的token(大块变小块)。
 StringTokenizer中的定界符可以自己指定。
 StringTokenizer常用的方法:
 hasMoreTokens:是否有更多的分隔符
 nextToken:返回下一个分隔符前的内容值



















