17.19String类
1.String类型的两种声明方式
//方式一
String str = "狗蛋";
String str2 = "狗蛋";
//方式二
String str3 = new String("狗蛋");
String str4 = new String("狗蛋");
System.out.println(str == str2);//true
//== 比较的是内存地址
System.out.println(str == str3);//false
//equal比较的是地址,如果地址不一样 再去比较内容。如果内容一样就是true
//开发中字符串的比较使用的是equals
System.out.println(str.equals(str3));//true
1.使用方式一声明的字符串存在堆中的一个字符串常量池中,这个地方要求不能有重复的内容,所以str1和str2内容相同,指向的是同一个地址。
如果str2 = ”狗蛋233“; 则会在字符串常量池中再开辟一个存储空间,此时和str指向的地址就不同了
2.使用方式二new出来的对象存储在堆空间中,就算内容一样,但是指向的地址也是不一样的
2.String类方法
关注三点:
- 方法功能
- 方法参数
- 返回值
boolean equals(Object obj) ; 判断字符串内容是否相等
int length( ) ; 获取字符串长度
char charAt(int index) ; 获取指定下标处的字符
int indexOf(String str) ; 获取指定字符在字符串中第一个出现的下标
int lastIndexOf(int ch) ; 获取指定字符在字符串中最后一次出现的下标
package com.qfedu.a_string;
public class Demo1 {
public static void main(String[] args) {
//equals方法 判断字符串是否相等
String str1 = "abc";
String str2 = "abc";
/**
* str1==> char[] ch1 = ['a','b', 'c'];
* str2==> char[] ch2 = ['a', 'b', 'c']
* while循环 ch1[i] == ch2[i]
*/
System.out.println(str1.equals(str2));//true
System.out.println("abc".equals("ced"));//false
System.out.println("abcdef".length());//6
System.out.println("abcd".charAt(2));//c
System.out.println("bbccaa".indexOf("c"));//2
System.out.println("bbccaa".indexOf('c'));//2
System.out.println("abcdadf".lastIndexOf('a'));//4
}
}
返回值是布尔类型数据的方法
boolean endWith(String str) ; 判断是否以指定字符(串)结尾
boolean isEmpty( ) ; 判断字符串是否为空
boolean contains( String str) ; 在一个字符串中是否包含另一个字符串
boolean equalsIgnoreCase( ) ; 忽略大小写比较字符串是否相等
package com.qfedu.a_string;
public class Demo3 {
public static void main(String[] args) {
String str1 = "Demo1.java";
System.out.println(str1.endsWith(".java"));//true
System.out.println(str1.endsWith("av"));//false
System.out.println("".isEmpty());//true
System.out.println("ab".isEmpty());//false
System.out.println(" ".isEmpty());//false
System.out.println("不破楼兰终不还".contains("不还"));//true
System.out.println("不破楼兰终不还".contains("还不"));//false
System.out.println("abc".equals("Abc"));//false
System.out.println("abc".equalsIgnoreCase("ABc"));//true
}
}
*开发要用的重要方法:
将字符数组转为字符串
(1)使用String类的构造方法 String( char[ ] ch ) ;
(2)static String valueOf( char[ ] chs) ; 将字符数组转为字符串(静态方法 ) *【重点】
valueOf方法有较多的重载,八大基本数据类型都可以转
将字符串转为字符数组
char[ ] toCharArray( ) ; 将字符串转为字符数组【重点】
package com.qfedu.a_string;
public class Demo4 {
public static void main(String[] args) {
char[] chs = {'a','g', 'e'};
//转为字符串
String str = new String(chs);
System.out.println(str);
String str1 = String.valueOf(chs);
System.out.println(str1);
String str2 = String.valueOf(98.76);
System.out.println(str2);//字符串类型的98.76
//一个double类型的数据 98.7654。取小数点后面的数
char[] chs1 = "我是狗蛋我怕谁".toCharArray();
System.out.println(chs1);
for (int i = 0; i < chs1.length; i++) {
System.out.println(chs1[i]);
}
}
}
- String replace( char oldChar, char newChar ) ; 在字符串中用新的字符替换老的字符
- String[ ] split(String regex) ; 以指定字符串进行切割,将结果片段存到字符串数组中
- String subString( int beginIndex ) ; 从指定位置开始截取字符串
- String subString(int beginIndex, int endIndex);从指定的位置开始截取字符串到指定的位置结束
- String toUpperCase( ) ; 将小写字符转为大写
- String toLowerCase( ) ; 将大写字符转为小写
- String trim( ) ; 去掉首尾空格
package com.qfedu.a_string;
import java.util.Arrays;
public class Demo5 {
public static void main(String[] args) {
System.out.println("abcd".replace('a', '狗'));
System.out.println("abcd".replace("cd", "中国牛皮"));
//切割一个字符串
//["ab", "cd", "ef"]
//["a", ",cd,ef"]
String[] strs = "ab&cd&ef".split("&");
System.out.println(Arrays.toString(strs));
String str1 = "abcdef".substring(2);
System.out.println(str1);//cdef
//要头不要尾
String str2 = "abcdef".substring(2, 4);
System.out.println(str2);//cd
System.out.println("ava".toUpperCase());
System.out.println("ABDF".toLowerCase());
System.out.println(" gsi jsjj ");
System.out.println(" gsi jsjj ".trim());
}
}