Java基础教程

第一章: 开启Java学习之旅

第二章: 掌握计算机基础知识

第三章: 掌握命令行基础知识

第四章: 我的第一个Java程序

第五章: Java编程必备基础

第六章: Java编程的核心:控制结构

第七章: Java面向对象基础

第八章: Java面向对象进阶

第九章: Java字符串类型

第十章: Java数组与数据结构

第十一章: Java高级数据结构

第十二章: Java并发编程基础

首页 > Java基础教程 > 第九章: Java字符串类型 > 9.2节: 字符串的操作方法

9.2节: 字符串的操作方法

薯条老师 2021-12-14 11:09:27 179679 0

编辑 收藏

广州番禺Python, Java小班周末班培训

第四期线下Java, Python小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析, Java中高级工程师培训。授课详情请点击:http://chipscoco.com/?cate=6    

9.2.1 字符串常用操作方法

 字符串类型是一种抽象数据类型,抽象数据类型定义了数据类型的操作方法,在本节的内容中,着重介绍Java字符串类的常用操作方法。

9.2.2 获取字符串长度

(1) String.length()

函数说明:

返回字符串的长度,这里的长度指的是字符数。

代码实例:

public class HelloJava{
    public  static void main(String[] args) {
        String content = "好好学Java,天天向上";
        // 字符串对象的length方法返回值为整型,表示字符串的字符数
        int length = content.length();
        System.out.println(length);
    }
}

9.2.3 字符串的索引访问

(1) String.charAt(int index)

函数说明:

返回主串在index位置的单个字符。

这里的索引值同数组中的索引值,Java中的索引值从0开始进行编号。 

代码实例:

public class HelloJava{
    public  static void main(String[] args) {
        String content = "好好学Java,天天向上。问题来了,你为什么要学Java?";
        int start = 0, end = content.length()-1;
        // 访问主串中的第一个字符
        System.out.println(content.charAt(start));
        // 访问主串中的最后一个字符
        System.out.println(content.charAt(end));
    }

9.2.4 字符串的大小写转换

(1) String.toLowerCase()

函数说明:

将字符串中的拉丁字母全部转换为小写,返回一个转换为小写后的新字符串

代码实例:

public class HelloJava{
    public  static void main(String[] args) {
        String content = "你为什么要学Java";
 
        String content_lower = content.toLowerCase();
        System.out.println(content_lower);
    }
}

(2) String.toUpperCase()

函数说明:

将字符串中的拉丁字母全部转换为大写,返回一个转换为大写后的新字符串

代码实例:

public class HelloJava{
    public  static void main(String[] args) {
        String content = "你为什么要学Java";
 
        String content_upper = content.toUpperCase();
        System.out.println(content_upper);
    }
}

9.2.5 字符串的子串查找

(1) String.indexOf(String str)

函数说明:

返回子串str在主串中的索引位置,索引位置为整型。如果子串不存在,则返回-1。

代码实例:


public class HelloJava{
    public  static void main(String[] args) {
        String content = "你为什么要学Java";
        // indexOf方法的返回值为整型,表示子串在主串中的起始位置
        int pos = content.indexOf("Java");
        System.out.println(pos);
    }
}

(2) String.indexOf(String str,int fromIndex)

函数说明:

参数str表示子串,fromIndex在主串中查找的起始位置。函数返回子串str在主串的起始位置,如果子串不存在,则返回-1。

代码实例-统计子串的个数:

public class HelloJava{
    public  static void main(String[] args) {
        String content = "好好学Java,天天向上。问题来了,你为什么要学Java?";
        int count = 0;
        String sub = "Java";
        int index = content.indexOf(sub);
        while ( index != -1 ){
            // 如果index不等于-1,说明找到子串
            count += 1;
            // 从主串中的子串的尾部位置继续查找
            index = content.indexOf(sub, index+sub.length());
        }
        System.out.println(count);
    }

9.2.6 字符串的子串截取

(1) String.substring(int beginIndex)

 函数说明:

 截取从beginIndex位置到字符串末尾的所有字符,返回一个新的字符串。

代码实例:

public class HelloJava{
    public  static void main(String[] args) {
        String content = "好好学Java,天天向上。问题来了,你为什么要学Java?";
        String sub = "Java";
        int startIndex = content.indexOf(sub);
        if ( startIndex != -1){
            // 如果Java在主串中,则截取从Java起始位置到主串末尾的所有字符
            System.out.println(content.substring(startIndex));
        }
    }
}

现在通过字符串的find方法,切片操作,以及while循环结构来实现count方法的功能。

 

(2) String.substring(int beginIndex, int endIndex)

函数说明:

截取从beginIndex位置到endIndex之间的所有字符,返回一个新的字符串。beginIndex与endIndex构造的是一个左闭右开的区间。

代码实例:

public class HelloJava{
    public  static void main(String[] args) {
        String content = "好好学Java,天天向上。问题来了,你为什么要学Java?";
        String sub = "Java";
        int startIndex = content.indexOf(sub);
        if ( startIndex != -1){
            int endIndex = content.indexOf(sub, startIndex+sub.length());
            if (endIndex != -1) {
                // 截取主串中的第一个Java的起始位置到第二个Java的起始位置之间的所有字符
                System.out.println(content.substring(startIndex, endIndex));
            }
        }
    }
}

9.2.7 字符串的子串替换

(1) String.replace(String target, String replacement)

函数说明:

参数target表示待替换的目标字符串,replacement表示替换后的字符串。该函数返回一个新的字符串。

代码实例:

现在通过字符串的find方法,切片操作以及while循环结构来实现replace方法的功能。

public class HelloJava{
    public  static void main(String[] args) {
        String content = "好好学Java,天天向上。问题来了,你为什么要学Java?";
        // 将主串中的Java替换为C++
        String new_content = content.replace("Java", "C++");
        System.out.println(new_content);
    }
}

9.2.8 字符串的拆分函数

(1) String.split(String regex, int limit)

函数说明

参数regex表示分割字符串或正则表达式, 参数limit用来指定分割的最大条目,可不传。该函数返回由regex分割的字符串数组,当指定limit参数时,函数返回一个包含limit项的字符串数组。

代码实例:

import java.util.Arrays;
 
public class HelloJava{
    public  static void main(String[] args) {
        String content = "好好学Java,天天向上。问题来了,你为什么要学Java?";
        // 将主串中的Java替换为C++
        String[] substrings = content.split(",");
        System.out.println(Arrays.toString(substrings));
    }
}

9.2.9 字符串的前缀与后缀

(1) String.startsWith(String prefix) 判断字符串是否以prefix子串作为前缀,返回值为布尔类型

(2) String.endsWith(String suffix) 判断字符串是否以suffix子串作为后缀,返回值为布尔类型

代码实例-修改前缀与后缀:

public class HelloJava{
    public  static void main(String[] args) {
        String query = "Java该怎么学?";
        String prefix = "Java", suffix = "怎么学?";
        // 如果以prefix为前缀
        if (query.startsWith(prefix)){
            // 就将前缀修改为C++
            query = "C++"+query.substring(4);
        }
 
        // 如果以suffix为后缀
        if (query.endsWith(suffix)) {
            // 就将后缀修改为这样学!
            query = query.substring(0, query.length()-suffix.length())+"这样学!";
        }
        System.out.println(query);
    }

9.2.10 字符串的比较

(1) String.equals(Object anObject)

函数说明:

参数anObject表示待比较的对象,函数的返回值为布尔类型,返回true时表示相等,返回false时表示不相等。在进行比较时,首先判断引用的是否为同一个对象,如果引用的是同一个对象,则直接返回true。如果不为同一个对象,则逐字符进行比较。

代码实例:

public class HelloJava{
    public  static void main(String[] args) {
        String left = "Java该怎么学?";
        // 通过直接定义法来定义字符串时,Java会直接引用已存在的字符串
        String right = "Java该怎么学?";
        
        // 通过new操作符来构造一个新的字符串对象
        String right_ = new String(right);
 
        // ==操作符是判断对象的地址是否相等,如果相等说明引用的是同一个对象
        if (left == right){
            System.out.println("left与right引用的是同一个字符串");
        }
 
        // equals会先判断地址是否相等,如果不相等再逐字符进行比较
        if (left.equals(right_)) {
            System.out.println("left与right_中的字符顺序一致且相等");
        }
    }
}

9.2.11 高薪就业班

  


欢迎 发表评论: