文章目录
- 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:返回下一个分隔符前的内容值