Java基础篇--String(字符串)类

Java中的String类是用于处理字符串的核心类之一。它属于Java的标准库,并提供了许多操作字符串的方法。

String类是不可变的,这意味着一旦创建了一个String对象,它的值就不能被改变。当对字符串进行操作时,实际上是创建了一个新的String对象。如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类

String类的初始化

String类的初始化有以下几种方式:

  • 直接赋值:通过将字符串字面值(用双引号括起来的字符序列)赋给String对象进行初始化。例如:

    String str1 = "Hello World";
    System.out.println(str1); // 输出: Hello World
    
  • 使用构造方法:使用String类的构造方法来创建一个新的String对象。常用的构造方法包括:

    1. String():创建一个空字符串对象。
    2. String(String original):根据指定的字符串original创建一个新的字符串对象。
    3. String(char[] value):根据字符数组value的内容创建一个新的字符串对象。
    4. String(char[] value, int offset, int count):根据字符数组value中从偏移量offset开始、长度为count的部分创建一个新的字符串对象。
    5. String(byte[] bytes):根据字节数组bytes的内容使用平台默认字符集创建一个新的字符串对象。
    6. String(byte[] bytes, String charsetName):根据字节数组bytes的内容使用指定的字符集charsetName创建一个新的字符串对象。
String str2 = new String(); // 创建一个空字符串对象
System.out.println(str2); // 输出: ""

char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(charArray); // 根据字符数组创建字符串对象
System.out.println(str3); // 输出: Hello

byte[] byteArray = {72, 101, 108, 108, 111};
String str4 = new String(byteArray); // 根据字节数组使用默认字符集创建字符串对象
System.out.println(str4); // 输出: Hello

String str5 = new String(byteArray, "UTF-8"); // 根据字节数组使用指定字符集创建字符串对象
System.out.println(str5); // 输出: Hello
  • 使用静态工厂方法:String类提供了一些静态工厂方法用于创建字符串对象,例如:

  1. String.valueOf():将其他基本类型或对象转换为字符串。
  2. String.format():使用格式化字符串和参数创建一个新的字符串对象。
String str2 = new String(); // 创建一个空字符串对象
System.out.println(str2); // 输出: ""

char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(charArray); // 根据字符数组创建字符串对象
System.out.println(str3); // 输出: Hello

byte[] byteArray = {72, 101, 108, 108, 111};
String str4 = new String(byteArray); // 根据字节数组使用默认字符集创建字符串对象
System.out.println(str4); // 输出: Hello

String str5 = new String(byteArray, "UTF-8"); // 根据字节数组使用指定字符集创建字符串对象
System.out.println(str5); // 输出: Hello

String 方法

下面是 String 类支持的常用方法,更多详细,参看 Java String API 文档:

方法声明

功能描述

int indexOf(int ch)

返回指定字符ch在字符串中第一次出现位置的索引

int lastIndexOf(int ch)

返回指定字符ch在字符串中最后一次出现位置的索引

int indexOf(String str)

返回指定子字符串str在字符串第一次出现位置的索引

int lastIndexOf(String str)

返回指定子字符串str在此字符串中最后一次出现位置的索引

char charAt(int index)

返回字符串中index位置上的字符,其中index的取值范围是

0~(字符串长度-1)

Boolean endsWith(String suffix)

判断此字符串是否以指定的字符串结尾

int length()

返回此字符串的长度

boolean equals(Object anObject)

将此字符串与指定的字符串比较

boolean isEmpty()

判断字符串长度是否为0,如果为0则返回true,反之则返回flase

boolean startsWith(String prefix)

判断此字符串是否以指定的字符串开始

boolean contains(CharSequence cs)

判断此字符串中是否包含指定的字符序列

String toLowerCase()

使用默认语言环境的规则将String中的所有字符都转换为小写

String toUpperCase()

使用默认语言环境的规则将String中的所有字符都转换为大写

static String valueOf(int i)

int变量i转换成字符串

char[] toCharArray()

将此字符串转换为一个字符数组

String replace(CharSequence oldstr, CharSequence newstr)

返回一个新的字符串,它是通过用 newstr替换此字符串

中出现的所有 oldstr得到的

String  originalString.replaceAll(regex, replacement);

originalString 是要进行替换操作的原始字符串;

regex 是一个正则表达式,用于匹配要替换的内容;

replacement 是替换后的新内容。

这个方法返回一个新的字符串,其中所有与正则表达式匹配的内容都被替换为指定的新内容。

String[] split(String regex)

根据参数regex将原来的字符串分割为若干个子字符串

String substring(int beginIndex)

返回一个新字符串,它包含从指定的beginIndex处开始,

直到此字符串末尾的所有字符

String substring(int beginIndex, int endIndex)

返回一个新字符串,它包含从指定的beginIndex处开始,

直到索引endIndex-1处的所有字符

String trim()

返回一个新字符串,它去除了原字符串首尾的空格

示例代码:

public class myclass {
    public static void main(String[] args) {
        // 示例字符串
        String str = "Java编程很有趣!";

        // 判断是否以指定前缀开头
        boolean startsWith = str.startsWith("Java");
        System.out.println("是否以 'Java' 开头:" + startsWith);

        // 判断是否以指定后缀结尾
        boolean endsWith = str.endsWith("趣!");
        System.out.println("是否以 '趣!' 结尾:" + endsWith);

        // 获取字符在字符串中的位置
        int indexOfChar = str.indexOf('编');
        System.out.println("'编' 在字符串中的位置:" + indexOfChar);

        // 替换子字符串
        String replacedStr = str.replace("很有趣", "非常有趣");
        System.out.println("替换后的字符串:" + replacedStr);

        // 将字符串转换为大写
        String uppercaseStr = str.toUpperCase();
        System.out.println("转换为大写字母:" + uppercaseStr);
        
        // 将字符串转换为小写
        String lowercaseStr = str.toLowerCase();
        System.out.println("转换为小写字母:" + lowercaseStr);
        
        // 拆分字符串为字符数组
        char[] chars = str.toCharArray();
        System.out.println("拆分后的字符数组:");
        for (char c : chars) {
            System.out.println(c);
        }

        // 检查字符串是否为空
        boolean isEmpty = str.isEmpty();
        System.out.println("字符串是否为空:" + isEmpty);

        // 字符串按照指定分隔符拼接
        String[] words = {"Java", "编程", "很有趣"};
        String joinedStr = String.join("-", words);
        System.out.println("拼接后的字符串:" + joinedStr);

        // 去除字符串中的空格
        String stringWithSpaces = "  Java 编程 很有趣  ";
        String trimmedStr = stringWithSpaces.replaceAll("\\s", "");
        System.out.println("去除空格后的字符串:" + trimmedStr);
    }
}

运行:

是否以 'Java' 开头:true
是否以 '趣!' 结尾:true
'编' 在字符串中的位置:4
替换后的字符串:Java编程非常有趣!
转换为大写字母:JAVA编程很有趣!
转换为小写字母:java编程很有趣!
拆分后的字符数组:
J
a
v
a
编
程
很
有
趣
!
字符串是否为空:false
拼接后的字符串:Java-编程-很有趣
去除空格后的字符串:Java编程很有趣

扩展小知识

StringTokenizer方法是Java中用于分割字符串的一种便捷方法。它可以根据指定的分隔符(如空格、制表符或换行符)将字符串分割成多个单词。StringTokenizer对象可以用来遍历字符串中的每个单词,并获取其文本内容。

StringTokenizer对象的构造函数有三个:

  1. StringTokenizer(String str):使用给定的字符串创建一个StringTokenizer对象。
  2. StringTokenizer(String str, String delimiters):使用给定的字符串和分隔符创建一个StringTokenizer对象。
  3. StringTokenizer(String str, String[] delimiters):使用给定的字符串数组和分隔符创建一个StringTokenizer对象。

StringTokenizer对象的方法有:

  1. boolean hasMoreTokens():检查是否还有更多的单词可以被读取。
  2. String nextToken():返回下一个单词的文本内容,并从字符串中删除该单词。
  3. String nextToken(String delimiters):返回下一个单词的文本内容,并从字符串中删除该单词。只返回指定分隔符之间的单词。
  4. int countTokens():返回分隔符之间的单词数量。
  5. String getToken(int index):返回指定索引的单词的文本内容。
  6. String getTokenTypes(int index):返回指定索引的单词的分隔符类型。

代码示例

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        String input = "This is a sample string";
        StringTokenizer tokenizer = new StringTokenizer(input, " ");

        while (tokenizer.hasMoreTokens()) {
            String token = tokenizer.nextToken();
            System.out.println("Token: " + token);

            int  index = tokenizer.countTokens();
            System.out.println("Token count: " + index);

            String[] tokenArray = token.split("[,.]");
            for (String tokenInArray : tokenArray) {
                System.out.println("Token in array: " + tokenInArray);
            }
        }
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

正在奋斗的程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值