java 字符串的基本内容

305 阅读3分钟

一, 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来进行修改

屏幕截图 2023-11-03 194926.png 1.注意:StringBuilder是一个容器不是字符串类型. 基本创建格式为

StringBuilder sb =new StringBuilder();

2.StringBuilder可以来更方便处理字符串的方法: 屏幕截图 2023-11-03 195020.png 代码实现:

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一致 屏幕截图 2023-11-04 093203.png

4.成员方法: 屏幕截图 2023-11-04 093203.png 了解了成员方法我们可以打开自己编译器尝试去实现数组拼接 代码:

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出现的一个可变操作字符串的容器,可以高效,方便的拼接字符串