1. String概述
String类代表字符串,提供了开发中常用的字符串处理的方法,如:求字符串的长度、截取字符串、替换字符串等方法.
字符串是常量,它的值创建之后就不可以再修改了。
如果字符串反复修改,不推荐使用String类。
2. String类常用构造方法
String() 无参构造方法
String(String str) 有一个字符串参数的构造方法
String(char[]ch) 有一个char类型数组参数的构造方法
String(byte[] b) 有一个byte数组参数的构造方法
注意:新建一个对象后,将不存放在字符串常量池中 , 声明和创建字符串对象的方式
3. 字符串常量池
当定义一个字面量字符串时,JVM会在常量池中寻找是否有这个字符串,如果有,则引用这个字符串,因此图1中的str1== str,比较的是字符串的地址
拼接字符串常量时,首先会在常量池寻找是否有拼接的字符串,没有则创建,比如图1中第10行,JVM会检测到常量池中没有“世界”这个字符串,因此会创建一个“世界”字符串,JVM将这两个字符串拼接起来,在常量池中,创建一个拼接后的字符串“你好世界”
拼接字符串时,如果其中有变量,则在堆中创建字符串,与常量池不是一个内存,因此中的str != str1,即地址不同
4. String类常用方法
- int length() 求字符串值的字符个数
- boolean equals(Object o) 比较两个字符串是否相同
- String类将equals方法重写,可以比较字符串是否相同
- String replace(char old,char n) 字符串替换
- String replaceAll(String old,String n) 字符串替换
- char charAt(int index) 返回指定字符串指定位置的字符
- int compareTo(String s)按字典顺序比较字符串大小
- boolean endWith(String s) 比较字符串是否以指定的参数结尾
- boolean beginWith(String s)比较字符串是否以指定的参数开头
- String valueOf(int i)将基本数据类型转换为字符串
- boolean isEmpty() 判别一个字符串值的长度是不是为0
- int indexOf(int ch) 返回指定字符ch在字符串中的索引
- int lastIndexOf(int ch)返回指定字符ch在字符串中最后出现的索引
- String substring(int begin,int end)从指定索引位置截取字符串
- 方法的使用