banner
Hi my new friend!

Java-3

Scroll down

4.String

1.概述

String是引用数据类型,在java中用于存放字符串

2.特点

-字符串不可变,它们的值在创建后不能被更改

-虽然String的值是不可变的,但是它们可以被共享

-字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])

3.构造方法

图片

class StringDemo {
    public static void main(String[] args) {
        //public String(),创建一个空白字符串对象,不含有任何内容
        String s1=new String();
        System.out.println("s1="+s1); //输出结果为 s1=
        //public String(char[] arr),根据字符数组的内容,来创建字符串对象
        char[] arr={'a','b','c'};
        String s2=new String(arr);
        System.out.println("s2="+s2);//输出结果为 s2=abc
        //public String(bytr[] arr1),根据字节数组的内容,来创建字符串对象
        byte[] arr1={97,98,99};//97=a,98=b,99=c
        String s3=new String(arr1);
        System.out.println("s3="+s3);//输出结果为 s3=abc
        //String s="abc";直接赋值的方式创建字符串对象,内容就是abc
        String s4="abc";
        System.out.println("s4="+s4);
    }
}

4.String对象的特点

4.1.通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地域值不同

图片
4.2.以””方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池种维护图片

4.3.存储分析

图片
图片
图片
图片
图片
图片

图片
图片

图片
图片

图片
图片

5.字符串的比较

使用**==**做比较

-基本类型:比较的是数据值是否相同

-引用类型:比较的是地址值是否相同

字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals()

-public boolean equals(Object anObject):将此字符串与指定对象进行比较,由于我们比较的是对象,所以参数直接传递一个字符串

6.案例

6.1遍历字符串

图片

import java.util.Scanner;
public class Tttast {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        int len=s.length();
        char[] arr=new char[len];
        for(int i=0;i<len;i++){
            arr[i]=s.charAt(i);
            System.out.print(arr[i]+" ");
        }
    }
}
输入14567
运行结果为
1 4 5 6 7

6.2统计字符次数

图片

import java.util.Scanner;
public class StringTest {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        int big=0,small=0,num=0;
        for(int i=0;i<s.length();i++){
            char ch=s.charAt(i);
            if(ch>='A'&&ch<='Z'){
                big++;
            }else if(ch>='a'&&ch<='z'){
                small++;
            }else if(ch>='0'&&ch<='9'){
                num++;
            }
        }
        System.out.println("big:"+big);
        System.out.println("small:"+small);
        System.out.println("num:"+num);
    }
}
输入:AA2022libo
输出:big:2
     small:4
     num:4

6.3拼接字符串

图片

class StringTest01 {
    public static void main(String[] args) {
        int[] arr={1,2,3};
        String s=Arr(arr);
        System.out.println(s);
    }
    public static String Arr(int[] arr1){
        String s="";
        s+="[";
        for(int i=0;i<arr1.length;i++){
            if(i==arr1.length-1){
                s+=arr1[i];
            }else{
                s+=arr1[i];
                s+=", ";
            }
        }
        s+="]";
        return s;
    }
}
输出:[1, 2, 3]

6.4字符串反转

图片

class StringTest02 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        String sss=Arr(s);
        System.out.println(sss);
    }
    public static String Arr(String ss){
        char[] arr=new char[ss.length()];
        String s="";
        s+="[";
        for(int i=ss.length()-1,j=0;i>=0;i--,j++){
            arr[j] = ss.charAt(i);
            if(i==0){
                s +=arr[j];
            }else {
                s += arr[j];
                s += ", ";
            }
        }
        s+="]";
        return s;
    }
}
输入:abcde
输出:[e, d, c, d, a]

7.通过帮助文档查看String中的方法

即API查看

图片

8.常用方法

1.0

0.boolean	equals(Object anObject)
将此字符串与指定对象进行比较。 区分大小写,判断内容是否相等
1.boolean	equalsIgnoreCase(String anotherString)
将此 String与其他 String比较,忽略案例注意事项。忽略大小写的判断内容是否相等
2.int	indexOf(int ch)
返回指定字符第一次出现的字符串内的索引。索引从0开始,如果找不到,返回-1
3.int	lastIndexOf(int ch)
返回指定字符的最后一次出现的字符串中的索引。索引从0开始,如果找不到,返回-1
4.String	substring(int beginIndex)
返回一个字符串,该字符串是此字符串的子字符串。即截取指定范围的字符串
5.String	substring(int beginIndex, int endIndex)
返回一个字符串,该字符串是此字符串的子字符串。即截取指定范围的字符串
6.String	trim()
返回一个字符串,其值为此字符串,并删除任何前导和尾随空格。即删除前后空格

public class StringDemo01 {
    public static void main(String[] args) {
//        boolean  equals(Object anObject)区分大小写,判断内容是否相等
        String s1="hello";
        String s2="Hello";
        System.out.println(s1.equals(s2));//false
//        boolean  equalsIgnoreCase(String anotherString)忽略大小写的判断内容是否相等
        String s3="hello";
        String s4="Hello";
        System.out.println(s3.equalsIgnoreCase(s4));//true
//        int  indexOf(int ch)返回指定字符第一次出现的字符串内的索引。索引从0开始,如果找不到,返回-1
        String s5="hello@java@li";
        int index=s5.indexOf('@');
        int index2=s5.indexOf('$');
        int index5=s5.indexOf("java");
        System.out.println(index+" "+index2+" "+index5);//5 -1 6
//        int  lastIndexOf(int ch)返回指定字符的最后一次出现的字符串中的索引。索引从0开始,如果找不到,返回-1
        String s6="hello@java@li";
        int index3=s6.lastIndexOf('@');
        int index4=s6.lastIndexOf('$');
        int index6=s6.lastIndexOf("java");
        System.out.println(index3+" "+index4+" "+index6);//10 -1 6
//          String substring(int beginIndex)返回一个字符串,该字符串是此字符串的子字符串。即截取指定范围的字符串
        String s7="hello,李白";
//        s7.substring(6)表示从索引6开始截取后面所有的内容
        System.out.println(s7.substring(6));//李白
//        String   substring(int beginIndex, int endIndex返回一个字符串,该字符串是此字符串的子字符串。即截取指定范围的字符串
//        s7.substring(0,5)表示从索引0开始截取,截取到索引5-1=4这个位置
        System.out.println(s7.substring(0,5));//hello
//         String  trim()返回一个字符串,其值为此字符串,并删除任何前导和尾随空格。即删除前后空格
        String s8="   hello world   ";
        System.out.println(s8.trim());//hello world
    }
}

2.0

0.String	replace(char oldChar, char newChar)
返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。即替换字符串中的字符
1.int	compareTo(String anotherString)
按字典顺序比较两个字符串。即比较两个字符串的大小
2.char[]	toCharArray()
将此字符串转换为新的字符数组。即把字符串转换为字符数组
3.String	concat(String str)
将指定的字符串连接到该字符串的末尾。 
4.String	toLowerCase()
将所有在此字符 String使用默认语言环境的规则,以小写。 
5.String	toUpperCase()
将所有在此字符 String使用默认语言环境的规则大写。 
6.String[]	split(String regex)
将此字符串分割为给定的 regular expression的匹配。即分割字符串,对于某些分割字符,需要转义,比如|\\等

public class StringDemo02 {
    public static void main(String[] args) {
//        String   replace(char oldChar, char newChar)返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。即替换字符串中的字符
    String s="hello world";
//        s.replace()方法执行后,返回的结果才是替换过的
//        对s本身没有任何影响
        String ss=s.replace("hello","Hello");
        System.out.println(ss);//Hello world
        System.out.println(s);//hello world
//        除非用s本身来接收替换的结果,s才会有变化
        s=s.replace("hello","Hello");
        System.out.println(s);//Hello world
//        int  compareTo(String anotherString)按字典顺序比较两个字符串。即比较两个字符串的大小
//        如果前者大,则返回正数,如果后者大,则返回负数,如果相等,则返回0
        String s1="jcva";
        String s2="java";
        System.out.println(s1.compareTo(s2));//返回值是'c'-'a'=2的值
//      char[] toCharArray()将此字符串转换为新的字符数组。即把字符串转换为字符数组
        String s3="happy";
        char[] arr=s3.toCharArray();
        for(int i=0;i<s3.length();i++) {
            System.out.print(arr[i] + " ");//h a p p y
        }
//       String    concat(String str)将指定的字符串连接到该字符串的末尾。
            String s4="李白";
           s4 = s4.concat("爱").concat("写诗").concat("和喝酒");
            System.out.println(s4);//李白爱写诗和喝酒
//        String toLowerCase()将所有在此字符 String使用默认语言环境的规则,以小写。
        String s5="Hello";
        System.out.println(s5.toLowerCase());//hello
//        String   toUpperCase()将所有在此字符 String使用默认语言环境的规则大写。
        System.out.println(s5.toUpperCase());//HELLO
//        String[] split(String regex)将此字符串分割为给定的 regular expression的匹配。即分割字符串,对于某些分割字符,需要转义,比如|\\等
       String s6="锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦";
       String[] s7=s6.split(",");
        System.out.println(s7[0]);//锄禾日当午
       for(String poem:s7){
           System.out.print(poem+" ");//锄禾日当午 汗滴禾下土 谁知盘中餐 粒粒皆辛苦
       }
       String s8="C:\\Tast\\java";
       String[] s9=s8.split("\\\\");
            for(String luji:s9){
                System.out.print(luji+" ");//C: Tast java
            }
        }
        }

5.StringBuilder

1.概述

图片
图片

-StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器

-这里的可变指的是StringBuilder对象中的内容是可变的

2.构造方法

图片

class StringBuilder01 {
    public static void main(String[] args) {
//public StringBuilder(),创建一个空白的字符串对象,不含有任何内容
        StringBuilder s1=new StringBuilder();
     System.out.println("s1:"+s1+" "+s1.length());
//public StringBuilder(String str),根据字符串的内容,来创建可变字符串对象
        StringBuilder s2=new StringBuilder("hello");
        System.out.println("s2:"+s2+" "+s2.length());
    }
}
输出:s1:0
     s2:hello 5

3.添加和反转方法

图片

class StringBuilder02 {
    public static void main(String[] args) {
//        创建对象
        StringBuilder s=new StringBuilder();
/*        public StringBuilder append(任意类型);添加类型,并返回对象本身
       StringBuilder s1=s.append("hello");
      System.out.println("s:"+s);
      System.out.println("s1:"+s1);
      System.out.println(s==s1);
      输出s:hello
          s1:hello
          true
 */
   /*     s.append("hello");
        s.append("world");
        s.append("java");
        s.append(100);
        System.out.println("s:"+s);
       输出:helloworldjava100
    */
        s.append("hello").append("world").append("java").append(100);
        System.out.println("s:"+s);
//         输出:helloworldjava100
//        public StringBuilder reverse();返回相反的字符序列
        s.reverse();
        System.out.println("s:"+s);
//        输出:s:001avajdlrowolleh
    }
}

4.StringBuilder和String相互转换

4.1 StringBuilder转换为String

public String toString(_):通过toString()就可以实现把StringBuilder转换为Strng

StringBuilder s=new StringBuilder();
s.append("hello");
String s1=s;//这个是错误的
String s1=s.toString();

4.2 String转换为StringBuilder

public StringBuilder(String s):通过构造方法就可以把String转换为StringBuilder

String s="hello";
StringBuilder s1=s;//这个是错误的
StringBuilder s1=new StringBuilder(s);

5.案例

5.1拼接字符串

图片

class StringBuilder03 {
    public static void main(String[] args) {
        int[] arr={1,2,3};
        String s=Arr(arr);
        System.out.println(s);
    }
    public static String Arr(int[] arr1){
        StringBuilder s=new StringBuilder();
        s.append("[");
        for(int i=0;i<arr1.length;i++){
            if(i== arr1.length-1){
                s.append(arr1[i]);
            }else{
                s.append(arr1[i]).append(", ");
            }
        }
        s.append("]");
        String s1=s.toString();
        return s1;
    }
}

5.2字符串反转

图片

```plain
class StringBuilder04 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String ss=sc.next();
String sss=Arr(ss);
System.out.println(sss);
}
public static String Arr(String s){
// StringBuilder s1=new StringBuilder(s);
// s1.reverse();
// String s3=s1.toString();
// return s3;
return new StringBuilder(s).reverse().toString();
}
}
输入:1234
输出:4321

Other Articles
cover
MySql
  • 23/01/23
  • 11:00
cover
Java-2
  • 22/11/26
  • 12:00