一, String
1.Sting是java中的字符串类,属于引用类型,底层为char 数组.
2.String是不可变的字符串
3.存储方式:
String a="abc";//表示a直接指向字符串常量词中abc的地址
String a=new String("abc");//表示在堆中创建对象,a指向堆内存
那么这两种存储方式有什么区别呢??
我们将它们运用到字符串的判断当中
String a="abc";
String b=new String("abc");
sout(a==b);
这段代码打印出的结果是什么呢?
结果是false
为什么是这个结果呢?
首先==比较的是地址值,即使a,b字符串的值相等,但是它们不在一个对象内,所以结果为false
4.用equals进行比较:
sout(a.equals(b));
运用equals进行比较的话比较的是字符串的值是否相等.
5.charAt():
作用:返回字符串中指定索引位置的一个字符,返回值为char类型.
代码实现
string a="zhang";
char b=a.charAt(1);
sout(b);
结果是h.
用法:可以用循环来实现计算一个字符在字符串中出现的次数.
二.StringBuilder
由于运用String字符串本身值是无法改变的,那么要修改一个字符串的内容用chatAt遍历字符串很不方便.那么我们可以运用StringBuilder来进行修改
1.注意:StringBuilder是一个容器不是字符串类型.
基本创建格式为
StringBuilder sb =new StringBuilder();
2.StringBuilder可以来更方便处理字符串的方法:
代码实现:
StringBuffer sb=new StringBuffer("zhang");
sb.append("san");
sb.reverse();
String x= sb.toString();
int l=sb.length();
System.out.println(x);
结果为nasgnahz
注:这里对象名为StringBuilder首字母,没有不良引导
因为StringBuilder是一个容器所以要打印出字符串类型必须用tostring方法将sb转换为字符串类型 2.进阶练习:将数组拼接为字符串{1,2,3}->[1,2,3]
public static void main(String[] args) {
int []arr={1,2,3};
String str= arrtostring(arr);
System.out.println(str);
}
public static String arrtostring(int []arr){
StringBuffer sb=new StringBuffer();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i==arr.length-1){
sb.append(arr[i]);
}else
sb.append(arr[i]).append(",");
}
sb.append("]");
return sb.toString();
}
上述返回结果为[1,2,3].
三.Stringjoiner
对于StringBuilder中进阶练习的数组拼接还需要判断i==arr.length-1来确定是否要引入","相对而言还是有些麻烦,那么我们可以用Stringjoiner处理这类问题
1.Stringjoiner和StringBuilder一样,也可以看成一个容器,创建之后内容是可以改变的
2.Stringjoiner是在jdk8后出现的, 但是相对StringBuilder而言编写更加简洁.
3.创建对象与StringBuilder一致
4.成员方法:
了解了成员方法我们可以打开自己编译器尝试去实现数组拼接
代码:
public static void main(String[] args) {
StringJoiner sj=new StringJoiner(",","[","]");
String []arr={"1","2","3"};
for (int i = 0; i < arr.length; i++) {
sj.add(arr[i]);
}
String x=sj.toString();
System.out.println(x);
}
注意sj.add(字符串)括号内只能读入字符串.
总结
1.String:
表示字符串的类,定义了很多操作字符串的方法;
2.StringBuilder:
一个可变操作字符串的容器
可以高效的拼装字符串,还可以将容器里面字符串反转;
3.StringJoiner:
JDK8出现的一个可变操作字符串的容器,可以高效,方便的拼接字符串