JavaSE语法(13)——简单介绍java中的String类及其各种方法



1.String类


1.1 String类的实例化

  在 Java 中,字符串属于对象,可以用String来创建和操作字符串。用String来创建字符串的方式有很多(构造方法很多),这里介绍三种常用的方式:

public class Main {
    public static void main(String[] args) {

        //直接使用字符串常量
        String str = "Hello world!";
        System.out.println(str);

        //new 一个对象
        String str2 = new String("Hello World!");
        System.out.println(str2);

        //字符数组转字符串
        char[] arr = {'H','e','l','l','o',' ','W','o','r','l','d','!'};
        String str3 = new String(arr);
        System.out.println(str3);
    }
}

  在 Java 中,字符串没有以 '\0' 结尾的要求,与 C 语言有所区别。

  (ps:官方文档:String (Java SE 19 & JDK 19) (oracle.com)


1.2 String类的常用方法


(1)获取字符串长度

  形式:

    字符串.length();

  该方法返回的类型是int类型,为字符串的长度。

在这里插入图片描述


(2)String对象之间的比较

  1.用“==”。对于基本类型变量==比较两个变量中存储的值是否相同,对于引用类型变量,==比较两个引用变量引用的是否为同一个对象,显然这不是这里所需要的方式。

在这里插入图片描述

  2.判断String对象之间是否相等时,最好用字符串.equals()。在String中,重写了Objectequals()方法,所以直接调用即可。

在这里插入图片描述

  3.当我们需要比较两个字符串的大小的时候,用int compareTo(String s)方法,String中实现了Comparable接口。

在这里插入图片描述

  compareTo()的返回值类型为int型,当返回值为的时候,如上图所示,调用者str1str2小;为正的时候 str1大;为 0 的时候表示两者相等。

  4.int compareToIgnoreCase(String str) 方法,此方法与compareTo()用法相同,只是它忽略大小写。

在这里插入图片描述

总结:3种方法

  • boolean equals(String str)
  • int compareTo(String str)
  • int compareToIgnoreCase(String str)

(3)字符串查找

  1.如数组那样访问下标的方法:char charAt(int index),返回index位置上字符,如果index为负数或者越界,抛出 IndexOutOfBoundsException异常。

在这里插入图片描述

  2.indexOf()方法,String中重载了很多的indexOf()方法。

在这里插入图片描述

  注意indexOf()里面是int ch类型,可以传字符类型,以为字符本质上是数字(每个字符都有自己的ASCII码值),

在这里插入图片描述

  3.lastIndexOf()方法,与indexOf()方法用法类似,但是它获取的是最后一次出现的索引。

在这里插入图片描述

  4.boolean contains(CharSequence s)方法。String类实现了CharSequence接口,所以可以传String类型。这个方法表示:当且仅当此字符串包含指定的s的值时才返回true。

在这里插入图片描述

总结:4种方法

  • char charAt(int index)
  • int indexOf()
  • int lastIndexOf()
  • boolean contains(CharSequence s)

(4)与转化相关的方法

  1.数字和字符串之间的转化。

数字 转 字符串:

在这里插入图片描述

  注意这些方法是静态方法。

class Student {
    public String name;
    public int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student:" +"name=" + name + ", age=" + age ;
    }
    
}

public class Main2 {
    public static void main(String[] args) {

        String str1 = String.valueOf(true);
        System.out.println(str1);

        String str2 = String.valueOf('c');
        System.out.println(str2);

        char[] arr = {'H','e','l','l','o'};
        String str3 = String.valueOf(arr);
        //offset参数是子阵列的第一个字符的索引。 count参数指定子数组的长度。
        String str4 = String.valueOf(arr,2,3);
        System.out.println(str3);
        System.out.println(str4);

        String str5 = String.valueOf(123.23);
        System.out.println(str5);

        String str6 = String.valueOf(123.2F);
        System.out.println(str6);

        String str7 = String.valueOf(123);
        System.out.println(str7);

        String str8 = String.valueOf(1234L);
        System.out.println(str8);

        String str9 = String.valueOf(1234L);
        System.out.println(str9);

        //如果参数是null ,那么一个字符串等于"null" ; 否则返回值obj.toString()
        //所以要重写toString()方法!!!
        String str10 = String.valueOf(new Student("小明",20));
        System.out.println(str10);
    }
}

结果:

在这里插入图片描述

字符串 转 数字

public class Main3 {
    public static void main(String[] args) {

        String str1 = "12.12";
        double d = Double.parseDouble(str1);
        System.out.println(d);

        String str2 = "12.12F";
        float f = Float.parseFloat(str2);
        System.out.println(f);

        //如果为 “100L” 或者 “100l” 会抛异常!
        String str3 = "100";
        long l = Long.parseLong(str3);
        System.out.println(str3);

        String str4 = "100";
        int i = Integer.parseInt(str4);
        System.out.println(i);

        String str5 = "100";
        short s = Short.parseShort(str5);
        System.out.println(s);

        String str6 = "127";
        byte b = Byte.parseByte(str6);
        System.out.println(b);
    }
}

(PS:Double、Long……这些是基本类型的包装类,这里不做介绍,可以自己扩展一下。)

结果:

在这里插入图片描述

  2.大小写转换。

  • 转成小写:String toLowerCase()
  • 转成大写:String toUpperCase()

在这里插入图片描述

  注意,凡是要修改String字符串的方法都不会改变原来的值,只会返回一个新的对象(先拷贝),也就是说字符串是不可修改的。(具体的在——>JavaSE语法(14)—— 详细解读java中 String的不可变性与字符串常量池 以及 字符串拼接的过程 - 掘金 (juejin.cn)

  3.字符串转为字符数组。

  • char[] toCharArray()

在这里插入图片描述

  4.格式化

String format(); ,这是String类的静态方法。

在这里插入图片描述


(5)字符串替换

  • String replace(char oldChar, char newChar)
  • String replaceAll(String regex, String replacement)
  • String replaceFirst(String regex, String replacement)

(PS:regex是正则表达式的意思,也就是说形参支持正则表达式)

在这里插入图片描述


(6)字符串截取

在这里插入图片描述

在这里插入图片描述


(7)字符串拆分

  • String[] split(String regex) 将字符串按 regex 为界限分割。
  • String[] split(String regex, int limit)将字符串按 regex 为界限分成 limit 组。
public class Main9 {
    public static void main(String[] args) {

        String str = "Hello1 World1 Hello2 World2";

        //按照 空格 分割
        String[] arr = str.split(" ");
        for (String s : arr){
            System.out.println(s);
        }

        System.out.println("----------------------------------");

        //按照按照 空格 分割成2组
        String[] arr2 = str.split(" ",2);
        for (String s : arr2){
            System.out.println(s);
        }
    }
}

结果:

在这里插入图片描述

  注意这里的分组,你写了几组它就会分几组,不管后面是否还有空格。

  特殊字符作为分割符可能无法正确切分, 需要加上转义。
“.” “$” “|” 和 “*” 等字符,必须得加双斜杠。

在这里插入图片描述

  如果一个字符串中有多个分隔符,可以用"|"作为连字符。

  这里以“=”与“&”作为分隔符。

在这里插入图片描述


(8)剔除空格的方法

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值