String类各种方法调用及相关的知识点:
1.双引号引起的类容均放在常量池。
2.若常量池当中存在该字符串常量池。
3.如果两个字符串用+拼接,那么在编译期间就处理为拼接的结果。
4.两个变量拼接,在运行期间处理结果。
5.inter():手动入池。//native方法
如果代码中有此引用,直接将对象返回,直接引用。
6.利用反射访问String类中私有的字段,可修改私有的信息。
一、字符串的查找方法
//查找字符串中是否包含某个字符串
String str = “helloworld” ;
System.out.println(str.contains(“world”));
//查找字符串,返回字符串开始的下标
str.indexOf(“hello”)
注意:只能返回查找到的第一个字符串下标,如果有多个相同的,只能返回一个。
String str = “helloworld” ;//会判断开头和结尾,可以指定开始位置,也可以从尾部开始查找
System.out.println(str.indexOf(“l”)); // 2
System.out.println(str.indexOf(“l”,5)); // 8
System.out.println(str.lastIndexOf(“l”)); // 8
Class clc =String.class
Field field = clc.getDeclaredField(value)
//指str2的第2位往后的3个字符串。
String str2 = new String(value,1,3)
//指str3下标为2的字符串。
char ch =str3 charAt(2)
//将字符串转化为字符数组。
char[] value = str.toCharArray();
//反转指定位置的字符串:
str = reverse(str,s1,e1);
二、字符串比较:
//区分大小写的比较;
public boolean equals(objiect,object):
str1.equals(str2)
//不区分大小写的比较;
str1.equalsIgnoreCase(str2)
//在String类中compareTo()方法是一个非常重要的方法,该方法返回一个整型,
该数据会根据大小关系返回三类内容:
- 相等:返回0.
- 小于:返回内容小于0.
- 大于:返回内容大于0。
compareTo()是一个可以区分大小关系的方法,是String方法里是一个非常重要的方法。
三、字符串替换;
//将字符串中某个字符替换成要求的字符
str.replaceAll(“l”, “")//替换所有
str.replaceFirst(“l”, "”)//替换遇到的第一个
注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串.
四、字符串拆分;
//利用字符串中指定字符,将字符串进行拆分
String[] result = str.split(" ") ; // 按照空格拆分
特殊拆分,需要加上转义字符;
String str = “192.168.1.1” ;
String[] result = str.split("\.") ;
for(String s: result) {
System.out.println(s);
}
注意事项:
- 字符"|","*","+“都得加上转义字符,前面加上”".
- 而如果是"",那么就得写成"\".
- 如果一个字符串中有多个分隔符,可以用"|"作为连字符.
多次拆分:开发过程中会经常出现
打印结果:
五、字符串截取;
//对指定字符串截取指定位置的字符
System.out.println(str.substring(5));//截取从第五位置到末尾的全部
System.out.println(str.substring(0, 5));//截取从0位置后的5位置的字符,不包括位置5。
六、其他字符串方法;
//trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符等)
System.out.println("["+str+"]");
System.out.println("["+str.trim()+"]");
//大小写转换
String str = " hello%$
%@#
%world 哈哈哈 " ;
System.out.println(str.toUpperCase());
System.out.println(str.toLowerCase());
//判断字符串是否为空
System.out.println(“hello”.isEmpty());
System.out.println("".isEmpty());
System.out.println(new String().isEmpty());
//String类并没有提供首字母大写操作,需要自己实现.
public static String fistUpper(String str) {
if ("".equals(str) || str == null) {
return str;
}
if (str.length() > 1) {
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
return str.toUpperCase();
}
public static void main(String[] args) {
System.out.println(fistUpper(“yuisama”));
System.out.println(fistUpper(""));
System.out.println(fistUpper(“a”));
}
//lastIndexOf:代表从后往前找,遇到的第一个需要查找的字符的下标。
startswith:判断是否按照指定位置开始。
包含下标本身。
//endsWith:判断是否按照某个字符结尾。
//String repalce:将某个位置的字符串,替换成指定的字符的函数。
//length:在字符串里面,是属性,类似于name。
七、StringBuffer和StringBuilder的区别:
1.StringBuffer
synchronized:线程安全的
2.String和StringBuffer最大的区别在于:
String的内容无法修改,而StringBuffer的内容可以修改。频繁修改字符串的情况考虑使用StingBuffer。
3.面试题:
请解释String、StringBuffer、StringBuilder的区别:
①String的内容不可修改,StringBuffer和
StringBuilder的内容可以修改.
②StringBuffer与StringBuilder大部分功能是相似的。StringBuffer采用同步处理,属于线程安全操作;而StringBuilder采用异步处理,属于线程不安全操作