杰瑞科技汇

java string最后一个字符

在 Java 中,获取字符串(String)的最后一个字符有几种常见的方法,最核心和推荐的方法是使用 charAt()length() 的组合。

java string最后一个字符-图1
(图片来源网络,侵删)

下面我将详细介绍最常用的方法,并提供其他方法的示例和对比。

使用 charAt()length() (最常用)

这是最直接、最常用且性能最高的方法。

原理:

  1. str.length() 返回字符串的长度(字符个数)。
  2. Java 中的字符串索引(index)是从 0 开始的,最后一个字符的索引是 长度 - 1
  3. str.charAt(index) 方法根据给定的索引返回对应的字符。

示例代码:

java string最后一个字符-图2
(图片来源网络,侵删)
public class LastCharExample {
    public static void main(String[] args) {
        String str1 = "Hello, World!";
        String str2 = "Java";
        String str3 = "A"; // 只有一个字符
        String str4 = "";  // 空字符串
        // --- 获取最后一个字符 ---
        // 检查字符串是否为空,避免 StringIndexOutOfBoundsException 异常
        if (!str1.isEmpty()) {
            char lastChar1 = str1.charAt(str1.length() - 1);
            System.out.println("字符串: \"" + str1 + "\"");
            System.out.println("最后一个字符: " + lastChar1); // 输出: !
            System.out.println("--------------------");
        }
        if (!str2.isEmpty()) {
            char lastChar2 = str2.charAt(str2.length() - 1);
            System.out.println("字符串: \"" + str2 + "\"");
            System.out.println("最后一个字符: " + lastChar2); // 输出: a
            System.out.println("--------------------");
        }
        if (!str3.isEmpty()) {
            char lastChar3 = str3.charAt(str3.length() - 1);
            System.out.println("字符串: \"" + str3 + "\"");
            System.out.println("最后一个字符: " + lastChar3); // 输出: A
            System.out.println("--------------------");
        }
        // --- 处理空字符串 ---
        if (str4.isEmpty()) {
            System.out.println("字符串: \"" + str4 + "\"");
            System.out.println("字符串为空,无法获取最后一个字符。");
        }
    }
}

⚠️ 重要:异常处理 如果对一个空字符串 () 使用 str.charAt(str.length() - 1)str.length() 是 0,0 - 1 = -1charAt(-1) 会抛出 StringIndexOutOfBoundsException 异常,在使用此方法前,必须检查字符串是否为空。


使用 substring()length()

这种方法也可以实现,但通常不如 charAt() 高效,因为它会创建一个新的子字符串,而 charAt() 只返回单个字符。

原理:

  1. str.substring(beginIndex, endIndex) 提取一个从 beginIndex (包含) 到 endIndex (不包含) 的子字符串。
  2. 要获取最后一个字符,beginIndex 应该是 length() - 1endIndex 应该是 length()

示例代码:

java string最后一个字符-图3
(图片来源网络,侵删)
public class LastCharSubstringExample {
    public static void main(String[] args) {
        String str = "Programming";
        if (!str.isEmpty()) {
            // substring(str.length() - 1, str.length()) 会提取最后一个字符
            String lastCharAsString = str.substring(str.length() - 1, str.length());
            System.out.println("最后一个字符 (作为字符串): " + lastCharAsString); // 输出: g
            // 如果你需要 char 类型,可以再调用 charAt(0)
            char lastChar = lastCharAsString.charAt(0);
            System.out.println("最后一个字符 (作为char): " + lastChar);
        }
    }
}

缺点:

  • 效率较低:创建了一个新的 String 对象,而 charAt() 不需要。
  • 代码稍显冗长。

使用 Java 8+ 的 Stream API (功能强大但过于复杂)

对于这个特定任务,使用 Stream API 是“杀鸡用牛刀”,但如果你需要对字符串中的所有字符进行更复杂的操作,它就非常有用。

原理:

  1. str.chars() 将字符串转换为 IntStream(一个 int 值的流,每个 int 代表一个字符的 Unicode 值)。
  2. toArray() 将流转换为数组。
  3. array[array.length - 1] 获取数组的最后一个元素。
  4. (char)int 类型的 Unicode 值强制转换为 char 类型。

示例代码:

import java.util.Arrays;
public class LastCharStreamExample {
    public static void main(String[] args) {
        String str = "Stream";
        if (!str.isEmpty()) {
            // 将字符串转为字符数组,然后取最后一个
            char lastChar = (char) Arrays.stream(str.toCharArray())
                                          .toArray()[str.length() - 1];
            System.out.println("最后一个字符: " + lastChar); // 输出: m
        }
    }
}

缺点:

  • 代码非常冗长和复杂,可读性差。
  • 性能远低于 charAt()

总结与最佳实践

方法 优点 缺点 推荐度
charAt(length() - 1) 代码简洁、性能最高、意图明确 需要手动处理空字符串 ⭐⭐⭐⭐⭐ (强烈推荐)
substring(length() - 1, length()) 逻辑清晰 效率较低,会创建新对象 ⭐⭐
Stream API 功能强大,适合复杂操作 过于复杂,性能差,可读性低

在 Java 中获取字符串的最后一个字符,首选且最佳的方法是 charAt()

完整的、健壮的代码模式应该是:

String myString = "some text";
if (myString != null && !myString.isEmpty()) {
    char lastChar = myString.charAt(myString.length() - 1);
    // 在这里使用 lastChar
    System.out.println("最后一个字符是: " + lastChar);
} else {
    // 处理字符串为 null 或为空的情况
    System.out.println("字符串为空或null,无法获取字符。");
}
分享:
扫描分享到社交APP
上一篇
下一篇