String类的认识
-
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现【对象】
- “ABC”字符串是常量值,它们的值在创建之后不能更改。因为 String 对象是不可变的,所以可以共享。例如:String str = "abc";
- 关于空字符串的理解:
① String str1 = null; 表示str1没有指向一个对象
② String str2 = “”; 有一个对象,对象是空
③ String str3 = new String(); 和②差不多
- String类常见的创建方式:
String str="abc";
字符串常量池
- 当使用String str = “A” ;的方式赋值,会将该字符串值【对象】放入到常量池
- 当再次使用String st1 = “A”的方式会先检查常量池是否有“A”值,
- 如果不存在,会放入常量池
- 如果存在直接引用
- 常量池与享元模式类型,但是区别,享元模式是已经缓存,但是常量池是在使用的时候缓存字符串拼接
- 常量方式拼接,并直接使用赋值符号赋值,会检查常量池
- 变量方式拼接,不会检查常量池
常用方法
获取:
获取字符串的长度。length();
指定位置的字符。char charAt(int index);
获取指定字符的位置。如果不存在返回-1,所以可以通过返回值-1来判断某一个字符不存在的情况。
int indexOf(int ch);//返回第一次找到的字符角标
int indexOf(int ch,int fromIndex); //返回从指定位置开始第一次找到的角标
int indexOf(String str); //返回第一次找到的字符串角标
int indexOf(String str,int fromIndex);//指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
int lastIndexOf(int ch,int fromIndex); //返回指定字符在此字符串中最后一次出现处的索引,从指定索引处进行反向搜索
int lastIndexOf(String str);//返回指定子字符串在此字符串中最右边出现处的索引
int lastIndexOf(String str,int fromIndex);//返回指定子字符串在此字符串最后一次出现处的索引,从指定的索引反向搜索
获取子串
String substring(int start);//从start位开始,到length()-1为止.
String substring(int start,int end);//从start开始到end为止。//包含start位,不包含end位。
substring(0,str.length());//获取整串
判断:
字符串中包含指定的字符串吗? boolean contains(String substring);
字符串是否以指定字符串开头啊? boolean startsWith(string);
字符串是否以指定字符串结尾啊? boolean endsWith(string);
判断字符串是否相同 boolean equals(string);//覆盖了Object中的方法,判断字符串内容是否相同。
判断字符串内容是否相同,忽略大小写。 boolean equalsIgnoreCase(string) ;
转换:
通过构造函数可以将字符数组或者字节数组转成字符串。
可以通过字符串中的静态方法,将字符数组转成字符串。
static String copyValueOf(char[] );
static String copyValueOf(char[],int offset,int count);
static String valueOf(char[]);
static String valueOf(char[],int offset,int count);
将基本数据类型或者对象转成字符串。
static String valueOf(char);
static String valueOf(boolean);
static String valueOf(double);
static String valueOf(float);
static String valueOf(int);
static String valueOf(long);
static String valueOf(Object);
将字符串转成大小写。
String toLowerCase();
String toUpperCase();
将字符串转成数组。
char[] toCharArray();//转成字符数组。
byte[] getBytes();//可以加入编码表。转成字节数组。
将字符串转成字符串数组。切割方法。
String[] split(分割的规则-字符串);
将字符串进行内容替换。注意:修改后变成新字符串,并不是将原字符串直接修改。
String replace(oldChar,newChar);
String replace(oldstring,newstring);
对字符串进行追加
String concat(string);
去除字符串两端的空格
String trim();
如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。
int compareTo();