什么是String?
String是一个引用数据类型
是jdk给我们提供好的一个现成的String类
"abc"既是一个字符串常量,也是一个字符串的对象(实例)
常见的构造方法?
1. public String ( ) ; 初始化一个新创建的 String 对象,使其表示一个空字符序列
2. public String ( byte [ ] bytes) ; 将字节数组转换成字符串
3. public String ( byte [ ] bytes, int offset, int length) ; 将字节数组的一部分转换成字符串
4. public String ( char [ ] value) ; 将字符数组转换成字符串
5. public String ( char [ ] value, int offset, int count) ; 将字符数组的一部分转换成字符串
6. public String ( String original) ; 初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列
7. String s = "abc" ;
常见的问题?
通过new出来的String对象和直接赋值的String对象有什么区别?
通过new出来的,在内存中有2个对象
通过直接赋值的对象,在内存只有1个对象
String s1 = "abc" ;
String s2 = "abc" ;
String s3 = new String ( "abc" ) ;
System . out. println ( s1 == s2) ;
System . out. println ( s1 == s3) ;
String s1 = "abc" ;
String s2 = "ab" ;
String s3 = s2 + "c" ;
System . out. println ( s1 == s3) ;
String s1 = "abc" ;
String s2 = "ab" + "c" ;
System . out. println ( s1 == s2) ;
常见的成员方法?
1. public char charAt ( int index) ; 获取指定索引对应的字符
2. public int compareTo ( String anotherString) ; 按字典顺序比较两个字符串。
"abcde" -> { 'a' , 'b' , 'c' , 'd' , 'e' }
"bccde" -> { 'b' , 'c' , 'c' , 'd' , 'e' }
对位比较,如果对位相等,去下一位再继续比
3. public String concat ( String str) ; 字符串的拼接
4. public boolean contains ( String s) ; 判断是否包含指定的字符串
5. public String toLowerCase ( ) ; 将大写字母转换成小写字母
6. public String toUpperCase ( ) ; 将小写字母转换成大写字母
7. public boolean equals ( Object anObject) ; 比较两个字符串的内容是否一致
"abcde" -> { 'a' , 'b' , 'c' , 'd' , 'e' } arr1[ 1 ]
"abcde" -> { 'a' , 'd' , 'c' , 'd' , 'e' } arr2[ 1 ]
8. public boolean equalsIgnoreCase ( String anotherString) ; 比较两个字符串的内容是否一致( 不区分大小写)
9. public int indexOf ( int ch) ; 获取指定字符对应的索引值,如果找不到返回- 1
10. public int indexOf ( String str) ; 获取指定字符串对应的索引值,如果找不到返回- 1
11. public int lastIndexOf ( int ch) ; 获取指定字符对应的最后第一次出现的位置的索引,如果找不到返回- 1
12. public boolean isEmpty ( ) ; 判断字符串是否为空串
13. public int length ( ) ; 获取字符串的长度
14. public boolean startsWith ( String prefix) ; 判断是否以指定的字符串为前缀的,开头
15. public boolean endsWith ( String suffix) ; 判断是否以指定的字符串为后缀的,结尾
16. public String replace ( char oldChar, char newChar) ; 替换字符
17. public byte [ ] getBytes ( ) : 将字符串转换成字节数组
18. public char [ ] toCharArray ( ) ; 将字符串转换成字符数组
19. public String trim ( ) ; 去除字符串的前后空格
20. public String substring ( int beginIndex) : 截取,从指定的索引开始截取到末尾
21. public String substring ( int beginIndex, int endIndex) ; 截取,从指定的beginIndex索引开始截取到endIndex ( 包头不包尾)
22. public String [ ] split ( String regex) ; 按照指定的符号进行切割,根据给定正则表达式的匹配拆分此字符串。
正则表达式:是一个字符串,在字符串里面写一些规则,可以帮助对指定的String 数据进行校验
23. public String replace ( String target, String replacement) ; 替换子字符串
练习:
1. 遍历字符串
方法一:
String s = "abcde" ;
String [ ] strs = s. split ( "" ) ;
for ( int i = 0 ; i < strs. length; i++ )
System . out. println ( strs[ i] ) ;
方法二:
String s = "abcde" ;
for ( int i = 0 ; i < s. length ( ) ; i++ ) {
char ch = s. charAt ( i) ;
System . out. println ( ch) ;
}
方法三:
String s = "abcde" ;
char [ ] chs = s. toCharArray ( ) ;
for ( int i = 0 ; i < chs. length; i++ )
System . out. println ( chs[ i] ) ;
2. 已知字符串String s = "adfasADFJASadfljdasjSFADASLJadfjaldj" ; 将首字母变大写,其余都变小写?
System . out. println ( s. substring ( 0 , 1 ) . toUpperCase ( ) . concat ( s. substring ( 1 ) . toLowerCase ( ) ) ) ;