(Java)String 类(二)

一、字符串的内容不可改变

字符串的内容一旦声明则不可改变

public class Test{
    public static void main(String[] args) {
        String str = "hello";
        str = str + "world";
        System.out.println("str = " + str);
    }
}

在这里插入图片描述
如图所示,一个 String 对象内容的改变实际上是通过内存地址的“断开-连接”变化完成的,而本身字符串中的内容并没有任何的变化。

二、String 类中常用方法

在这里插入图片描述

(1)字符串与字符数组的转换

字符串可以使用 toCharrArry() 方法变成一个字符数组,也可以使用 String 类的构造方法把一个字符数组变为一个字符串。

public class Test{
    public static void main(String[] args) {
        String str1 = "Java";
        char ch[] = str1.toCharArray();//定义字符串
        for(int i=0;i< ch.length;i++){ //循环输出数组里的字符
            System.out.print(ch[i] + "\t");
        }
        System.out.println();
        String str2 = new String(ch);//将全部字符数组变为 String
        String str3 = new String(ch,0,3); //将部分字符数组变为 String
        System.out.println(str2);
        System.out.println(str3);
    }
}

在这里插入图片描述

(2)从字符串中取出指定位置的字符

可以直接使用 String 类中的 charAt() 方法取出字符串指定位置的字符

public class Test{
    public static void main(String[] args) {
        String str = "Java";
        System.out.println(str.charAt(3));//取出字符串中第四个字符
    }
}

在这里插入图片描述

(3)字符串与 byte 数组的转换

字符串可以通过 getBytes() 方法将 String 变为一个 byte 数组,之后可以通过 String 的构造方法将一个字节数组重新变为字符串。

public class Test{
    public static void main(String[] args) {
        String str1 = "Java"; // 定义字符串
        byte bt[] = str1.getBytes(); // 将字符串变为 byte 数组
        System.out.println(new String(bt)); //将全部 byte数组变为字符串
        System.out.print(new String(bt,1,3)); //将部分byte数组变为字符串
    }
}

在这里插入图片描述

(4)取得一个字符串的长度

在 String 中使用 length() 取得字符串的长度

public class Test{
    public static void main(String[] args) {
        String str1 = "Java"; // 定义字符串
        System.out.print("\"" + str1 + "\"的长度为:" + str1.length());
    }
}

length 与 length() 的区别

在数组操作中,使用 length 取得数组的长度,但是操作的最后没有 “()”
但是字符串调用 length() 是一个方法,只要是方法后面都要有 ‘()’

(5)查找一个指定的字符串是否存在

在 String 中使用 indexOf() 方法,可以返回指定的字符串的位置,如果不存在则返回 -1

public class Test{
    public static void main(String[] args) {
        String str1 = "Java"; // 定义字符串
        System.out.println(str1.indexOf("v")); // 查到返回位置
        System.out.println(str1.indexOf("v",2)); //查到返回位置,从第 3 个字符开始查找
        System.out.println(str1.indexOf("h")); //没有查到返回 -1
    }
}

JDK 1.5 后也可以使用 contains() 方法判断字符串是否存在
contains() 方法直接返回 boolean 型数据

public class Test{
    public static void main(String[] args) {
        String str1 = "I am learning Java"; // 定义字符串
        if (str1.contains("Java")){
            System.out.print("可以查询到数据");
        }
    }
}

(6)去掉左右空格

可以使用 trim() 方法去掉字符串的左、右空格

public class Test{
    public static void main(String[] args) {
        String str1 = "  Java  "; // 定义字符串
        System.out.println(str1);
        System.out.println(str1.trim());
    }
}

在这里插入图片描述

(7)字符串截取

在 String 中提供了两个 substring() 方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。

public class Test{
    public static void main(String[] args) {
        String str1 = "I am learning Java"; // 定义字符串
        System.out.println(str1.substring(5)); // 从第5个位置开始截取
        System.out.println(str1.substring(0,5)); //截取0-5个位置的内容
    }
}

在这里插入图片描述

(8)按照指定的字符串拆分字符串

在 String 中通过 split() 方法可以进行字符串的拆分操作,拆分的数据将以字符串数组的形式返回。

public class Test{
    public static void main(String[] args) {
        String str1 = "I am learning Java"; // 定义字符串
        String s[] = str1.split(" "); // 按照空格进行字符串的拆分
        for(int i=0;i<s.length;i++){
            System.out.println(s[i]);
        }
    }
}

在这里插入图片描述
避免正则表达式的影响,可以进行转义操作

public class Test{
    public static void main(String[] args) {
        String str1 = "192.168.1.1"; // 定义字符串
        // 此时需要对拆分的“.” 进行转义,Java转义需要使用“\\”
        // 此处的 "\\" 表示一个 "\"
        String s[] = str1.split("\\."); // 按照"."进行字符串的拆分
        for(int i=0;i<s.length;i++){
            System.out.println(s[i]);
        }
    }
}

(9)字符串的大小写转换

toUpperCase():大写转换
toLowerCase():小写转换
public class Test{
    public static void main(String[] args) {
        String str = "hello";
        System.out.println(str.toUpperCase());
        System.out.println(str.toLowerCase());
    }
}

在这里插入图片描述

(10)判断是否以指定的字符串开头或结尾

在 String 中使用startsWith()方法可以判断字符串是否以指定的内容开头,使用endsWith()方法可以判断字符串是否以指定的内容结尾。

public class Test{
    public static void main(String[] args) {
        String str = "**hello**";
        if(str.startsWith("**")){
            System.out.println("判断开头是否是 ** ");
        }
        if(str.endsWith("**")){
            System.out.println("判断结尾是否是 ** ");
        }
        System.out.println(str.startsWith("**"));
    }
}

在这里插入图片描述

(11)不区分大小写进行字符串比较

在 String 中可以通过 equals() 方法进行字符串内容的比较,但是这种方法是区分大小写的比较,如果要完成不区分大小写的比较可以使用 equalsIgnoreCase() 方法。

public class Test{
    public static void main(String[] args) {
        String str = "hello";
        String STR = "HELLO";
        System.out.println(str.equals(STR));
        System.out.println(str.equalsIgnoreCase(STR));
    }
}

在这里插入图片描述

(12)将一个指定的字符串,替换成其他的字符串

使用 String 的 replaceAll() 方法,可以将字符串的指定内容进行替换。

public class Test{
    public static void main(String[] args) {
        String str = "hello";
        String newstr = str.replaceAll("l","x"); // 将字符串中所有的 l 替换成 x
        System.out.println(newstr);
    }
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值