一.String类
1.1 字符串基础操作方法
1.1.1 length()返回字符串长度
String a = "haohaoxuexi"
a.length();//返回字符串长度
1.1.2 isEmpty()判断字符串是否为空
String a = "haohaoxuexi"
a.isEmpty();//判断字符串是否为空
1.1.2.1 一些关于判空的区别
String a = "";//1
String b = " ";//2
String c = null;//3
1为空字符串,当使用isEmpty();方法判空时为true;
2为空格字符串,使用isEmpty();方法判空时为flase;由此可见空格也算字符。
3使用isEmpty();方法时会出现空指针异常。
1即使为空但在常量池中任然存在,3为null空对象,因此在内存中没有任何地址。
1.1.3 startWith() 判断字符串以什么开头
String a = "BeiJing";
a.startWith(B); //true
a.startWith(Bei);//true
a.startWith(e);//flase
1.1.4 toUpperCase() 使字符串中所有英文字母大写
String aa = "BeiJing";
System.out.println(aa.toUpperCase());//BEIJING
1.1.5 toLowerCase() 小写
调用toUpperCase()和toLowerCase()并不会改变aa本身的值,而是新建一片内存复制原字符串后进行操作,若次数太多会造成资源占用过多。
2. 字符串查找方法⭐
2.1 charAt()
String aa = "BeiJing";
System.out.println(aa.charAt(4));//i
由此可见String底层是一个char类型的数组,charAt()方法可以根据下标返回对应的字符。
2.2 indexOf()
String aa = "BeiJing";
System.out.println(aa.indexOf("i"));// 2
System.out.println(aa.indexOf("X"));//-1
System.out.println(aa.indexOf("i",3));//4
返回字符串内第一个对应字符的下标,找不到返回-1,第二个参数为从第几位开始查找。
2.3 lastIndexOf()
String aa = "BeiJing";
System.out.println(aa.lastIndexOf("i"));//4
相应的该方法返回字符串内倒数第一个对应的字符的下标。
2.4 substring()
String aa = "BeiJing";
System.out.println(aa.substring(3));//Jing
System.out.println(aa.substring(2,5));//iJi
substring()方法当只有一个参数时,从该参数所指下标开始截取字符串。第二个参数位终止截取时的下标。
3. 字符串拼接、替换、查询是否包含方法⭐
3.1 contains()
String aa = "BeiJing";
System.out.println(aa.contains("b"));//false
System.out.println(aa.contains("B"));//true
查询字符串中是否含有参数字符,返回布尔类型。
3.2 replace() / replaceAll()
String aa = "BeiJing";
System.out.println(aa.replace("Bei","Nan"));//NanJing
System.out.println(aa.replaceAll("Bei","Nan"));//NanJing
两者都将对应字符串替换为后面的字符串,区别在于replaceAll()需要经过正则表达式的判断。
3.3 concat()
String aa = "BeiJing";
System.out.println(aa.concat(" in China"));//BeiJing in China
System.out.println(aa+" in China");//BeiJing in China
/******************************************************************************/ aa.concat(" N");
aa.concat("B");
System.out.println(aa);//BeiJing
concat()方法用于拼接字符串。从输出结果看concat()方法与字符串相加所实现的效果是一样的.
第二部分可以看出,concat()方法并不会改变字符串aa上值,而是像上面toUpperCase()方法一样重新开辟一个内存并复制过去原字符串进行拼接操作,过多进行此操作会占用不必要的内存,也可以说String是不能改变的,因为改变会造成资源浪费。
3.4 split()
String aa = "Bei-Jing-Xi-An";
String[] sr = aa.split("-");
System.out.println(Arrays.toString(sr));//[Bei, Jing, Xi, An]
按照指定字符串进行分割,返回值为String数组
3.5 trim()
String aa = " Bei-Jing-Xi-An ";
System.out.println(">"+aa+"<");//> Bei-Jing-Xi-An <
System.out.println(">"+aa.trim()+"<");//>Bei-Jing-Xi-An<
tirm()方法用于去除字符串首尾的空格
4. 比较方法
4.1 equals()
4.2compareTo() / compareToIgnoreCase()
String aa = "Bei-jing-Xi-An";
String bb = "Bei-Jing-Xi-An";
System.out.println(aa.compareTo(bb));//32
比较大小,底层比较ASCii值,前者区分大小写,后者不区分大小写