Java中String类常用的各种方法

打印 上一主题 下一主题

主题 967|帖子 967|积分 2901

Java中String类常见的方法

以下先容字符串常见的几个方法。
先容String类

在 Java 中,String 类是一个代表字符串的类,具有以下特性:

  • 不可变性:String 对象一旦被创建就是不可变的,即它们的值在创建后不能被更改。任何对 String 对象的修改操作实际上会创建一个新的 String 对象。
  • 字符串池:Java 中的字符串池是一种特殊的内存区域,用于存储字符串常量。当创建一个字符串时,它会首先查抄字符串常量池中是否已经存在雷同值的字符串,如果存在,则返回池中的字符串引用,而不会创建新的对象。
  • 比较:字符串可以通过 equals() 方法来比较它们的内容是否雷同。在 Java 中,利用 equals() 比较字符串内容,而不是利用 == 来比较对象引用是否相等。
  • 不可变性带来的安全性:由于字符串是不可变的,它们可以作为参数安全地传递给方法,以免被意外地修改。
  • 性能:由于字符串是不可变的,它们可以被缓存起来重复利用,并且字符串毗连的过程中可以利用 StringBuilder 或 StringBuffer 类来进步性能。
  • 字符串操作方法:String 类提供了许多方法用于对字符串进行操作,比如 length()、charAt(index)、substring() 等等,这些方法可以资助开辟职员方便地处理字符串。
总的来说,String 类在 Java 中具有重要的作用,是开辟中经常利用的类之一。它的不可变性和字符串池特性使得字符串的处理更加安全和高效。
1.拼接:

在 Java 中,String 类的 concat() 方法和 + 操作符都用于拼接字符串。这两种方法都能够将两个字符串毗连起来形成一个新的字符串,但有一些微小的区别:

  • concat() 方法:concat() 方法是 String 类的实例方法,用于将指定的字符串毗连到调用该方法的字符串的末了。它返回一个新的字符串对象,原始字符串不受影响。比方:
  1. String str1 = "Hello";
  2. String str2 = "World";
  3. String result = str1.concat(str2); // 结果为 "HelloWorld"
复制代码

  • + 操作符:+ 操作符也可以用于字符串拼接,它可以毗连两个字符串(也可以毗连字符串和其他数据范例,会进行范例转换),这种方式在 Java 中比较常见。比方:
  1. String str1 = "Hello";
  2. String str2 = "World";
  3. String result = str1 + str2; // 结果为 "HelloWorld"
复制代码
主要区别在于语法形式,利用操作符 + 时,其实是通过对 String 类的 concat() 方法进行隐式调用来实现字符串拼接。
在实际开辟中,+ 操作符更为常用,由于它更直观,而且可以与其他数据范例混合利用,如:
  1. String name = "Alice";
  2. int age = 30;
  3. String message = "My name is " + name + " and I am " + age + " years old.";
复制代码
以上代码中,+ 操作符不仅毗连了多个字符串,还将整数范例转换为字符串,形成了完备的输出信息。
总的来说,无论是利用 concat() 方法还是 + 操作符,最终目的都是将多个字符串毗连成一个新的字符串。
2.比较字符串是否相等:

当我们想要比较两个字符串是否雷同时,要特别注意,我们实际上是想比较字符串的内容是否雷同。必须利用equals()方法而不能用==。
我们看下面的例子:
  1. // String
  2. public class Main {
  3.     public static void main(String[] args) {
  4.         String s1 = "hello";
  5.         String s2 = "hello";
  6.         System.out.println(s1 == s2);
  7.         System.out.println(s1.equals(s2));
  8.     }
  9. }
复制代码
从表面上看,两个字符串用==和equals()比较都为true,但实际上那只是Java编译器在编译期,会主动把所有雷同的字符串看成一个对象放入常量池,天然s1和s2的引用就是雷同的。
所以,这种==比较返回true纯属巧合。换一种写法,==比较就会失败:
  1. // String
  2. public class Main {
  3.     public static void main(String[] args) {
  4.         String s1 = "hello";
  5.         String s2 = "HELLO".toLowerCase();
  6.         System.out.println(s1 == s2);
  7.         System.out.println(s1.equals(s2));
  8.     }
  9. }
复制代码
结论:两个字符串比较,必须总是利用equals()方法。
3.比较字符串的大小:

在 Java 中,String 类提供了 compareTo() 方法和 compareToIgnoreCase() 方法用于比较字符串之间的大小关系。这两个方法返回整数值,用于表现两个字符串之间的按字典排序的关系。以下是它们的先容:

  • compareTo() 方法

    • compareTo() 方法用于按字典顺序比较两个字符串,并返回一个整数值,根据比较效果差别返回差别的值:

      • 如果调用字符串小于参数字符串,则返回负整数。
      • 如果调用字符串大于参数字符串,则返回正整数。
      • 如果两个字符串相等,则返回0。

    • 示例:
    1. String str1 = "apple";
    2. String str2 = "banana";
    3. int result = str1.compareTo(str2);
    4. // result 小于 0,因为 "apple" 在字典顺序中排在 "banana" 之前
    复制代码
  • compareToIgnoreCase() 方法

    • compareToIgnoreCase() 方法也用于按字典顺序比较两个字符串,并返回一个整数值。与 compareTo() 差别的是,compareToIgnoreCase() 方法在比较时不区分大小写。
    • 示例:
    1. String str1 = "apple";
    2. String str2 = "Banana";
    3. int result = str1.compareToIgnoreCase(str2);
    4. // result 小于 0,因为 "apple" 在忽略大小写并按字典顺序中排在 "Banana" 之前
    复制代码
这些方法是基于 Unicode 值来比较字符串的。在比较字符串时,JVM会逐个比较字符串中对应位置上的字符的 Unicode 值。如果在某个位置发现差别的字符,则根据这些字符的 Unicode 值来确定团体的大小关系。
总的来说,compareTo() 和 compareToIgnoreCase() 方法都是在对字符串进行比较排序时非常有用的工具,可以资助我们确定字符串在字典序中的位置关系。
4.截取字符串

在 Java 中,String 类的 substring() 方法用于从原始字符串中提取子字符串。这个方法有两个重载形式,一个是通过指定开始索引的方式提取子字符串,另一个是同时指定开始索引和竣事索引来提取子字符串。下面是关于这两种形式的先容:

  • substring(int beginIndex) 方法

    • 这个方法接受一个整数参数 beginIndex,表现子字符串的起始索引(包括 beginIndex 对应的字符)。
    • 返回一个新的字符串,包含从 beginIndex 到原始字符串结尾的所有字符。
    • 示例:
    1. String str = "Hello, World!";
    2. String subStr = str.substring(7); // subStr 等于 "World!"
    复制代码
  • substring(int beginIndex, int endIndex) 方法

    • 这个方法接受两个整数参数 beginIndex 和 endIndex,分别表现子字符串的起始索引(包括 beginIndex 对应的字符)和竣事索引(不包括 endIndex 对应的字符)。
    • 返回一个新的字符串,包含在 beginIndex 和 endIndex 之间的字符(不包括 endIndex 对应的字符)。
    • 示例:
    1. String str = "Hello, World!";
    2. String subStr = str.substring(7, 12); // subStr 等于 "World"
    复制代码
必要注意的是,beginIndex 表现子字符串的起始索引,而 endIndex 是不包含在子字符串内的。如果必要提取整个字符串,可以不指定 endIndex,如许会提取从 beginIndex 到字符串末了的所有字符。
在利用 substring() 方法时,必须确保提供的索引在有效范围内,否则会抛出 IndexOutOfBoundsException 非常。这个方法在处理字符串时经常用到,可以资助我们从一个较长的字符串中提取必要的子串。
5.去除首尾空格

在 Java 中,String 类中的 trim() 方法和 split() 方法是常用的字符串处理方法,用于去除字符串的空白字符和拆分字符串成为子字符串。以下是它们的先容:

  • trim() 方法

    • trim() 方法用于去除字符串的首尾空白字符(空格、制表符、换行符等),返回一个新的字符串,不修改原始字符串。
    • 示例:
    1. String str = "   Hello, World!    ";
    2. String trimmedStr = str.trim(); // trimmedStr 等于 "Hello, World!"
    复制代码

    • 注意:trim() 方法只去除首尾的空白字符,中间的空白字符不会被删除。

6.用指定的字符分隔字符串

split() 方法

  • split() 方法根据指定的分隔符将字符串拆分成子字符串,返回一个字符串数组。
  • 可以提供一个正则表达式作为分隔符,或者直接提供一个普通字符串作为分隔符。
  • 该方法支持传入一个限制参数,用于限制拆分得到的字符串数组的长度。
  • 示例:
  1. String str = "apple,banana,grape,orange";
  2. String[] fruits = str.split(",");
  3. // fruits 数组包含 ["apple", "banana", "grape", "orange"]
  4. // 使用限制参数,最多拆分出两个子字符串
  5. String[] firstTwoFruits = str.split(",", 2);
  6. // firstTwoFruits 数组包含 ["apple", "banana,grape,orange"]
复制代码

  • 如果分隔符在字符串的开头或结尾,则 split() 方法会在效果数组中产生空字符串。如果不想包含空字符串,可以结合利用正则表达式 \\s*,\\s* 来去除可能存在的空格。
这两个方法是 Java 中经常用到的字符串处理方法,能够资助我们对字符串进行清洗、分割等操作,使得字符串处理更加方便和机动。
7.替换

在 Java 中,String 类中的 replace() 和 replaceAll() 方法都用于替换字符串中的字符或子字符串,但它们有一些区别。以下是它们的先容:

  • replace() 方法

    • replace() 方法用于将指定字符或字符序列替换为新的字符或字符序列。
    • 这个方法有两个重载形式:一种接受两个字符参数,另一种接受两个字符串参数。
    • 示例:
    1. String str1 = "Hello, World!";
    2. String replacedStr1 = str1.replace('o', '*'); // replacedStr1 等于 "Hell*, W*rld!"
    3. String str2 = "apple,banana,orange";
    4. String replacedStr2 = str2.replace(",", ";"); // replacedStr2 等于 "apple;banana;orange"
    复制代码
  • replaceAll() 方法

    • replaceAll() 方法用于利用正则表达式替换字符串中的字符或字符序列。
    • 这个方法接受两个参数:一个正则表达式用于匹配,一个字符串用于替换匹配到的内容。
    • 示例:
    1. String str = "Hello, World!";
    2. String replacedStr = str.replaceAll("o", "*"); // replacedStr 等于 "Hell*, W*rld!"
    复制代码

    • 正则表达式的强盛之处在于可以实现更复杂的匹配和替换逻辑,比方替换所有数字或特定模式的字符。


    • replaceAll的第一个参数是替换规则。
    • 示例:
    1. String str="hello world zhangsan";
    2. String temp=str.replaceAll("world|zhangsan","Java");
    复制代码
关于两者的区别:

  • replace() 方法的参数是普通的字符或字符序列,不支持正则表达式,因此只能替换具体的字符或子字符串。
  • replaceAll() 方法的第一个参数是正则表达式,因此可以进行更机动、复杂的匹配和替换操作。这使得 replaceAll() 可以替换更广泛的模式,而不仅限于具体的字符或子字符串替换。
通过利用 replace() 和 replaceAll() 方法,我们可以轻松地对字符串进行替换操作,从而实现各种处理需求。
8.转换大小写

在 Java 中,toLowerCase() 和 toUpperCase() 方法是用于将字符串转换为小写和大写形式的方法。以下是它们的先容:

  • toLowerCase() 方法

    • toLowerCase() 方法用于将字符串中的所有字符转换为小写形式。
    • 这个方法不会修改原始字符串,而是返回一个新的字符串,其中所有字符都被转换为小写。
    • 示例:
    1. String str = "Hello, World!";
    2. String lowerCaseStr = str.toLowerCase(); // lowerCaseStr 等于 "hello, world!"
    复制代码
  • toUpperCase() 方法

    • toUpperCase() 方法用于将字符串中的所有字符转换为大写形式。
    • 类似于 toLowerCase() 方法,toUpperCase() 也不会修改原始字符串,而是返回一个新的字符串,其中所有字符都被转换为大写。
    • 示例:
    1. String str = "Hello, World!";
    2. String upperCaseStr = str.toUpperCase(); // upperCaseStr 等于 "HELLO, WORLD!"
    复制代码
这两个方法非常实用,可以用于在不改变原始字符串的情况下,将字符串内容统一转换为相应的大小写形式。在许多文本处理的景象中,这些转换操作是很常见的。
一些必要注意的地方:

  • 这两个方法会思量转换为每个字符的对应大小写形式。在某些语言或特殊情况下,这种转换可能会产生一些意想不到的效果,因此必要谨慎利用。
  • 在进行大小写转换时,必要思量差别语言的特殊字符和转换规则,以确保转换的准确性。
9.查询字符串中一个字串出现的起始位置

在 Java 中,indexOf() 和 lastIndexOf() 方法用于在字符串中查找特定子字符串第一次出现的位置和最后一次出现的位置。以下是它们的先容:

  • indexOf() 方法

    • indexOf() 方法用于在字符串中查找指定子字符串第一次出现的位置。
    • 可以选择提供子字符串和(可选)起始搜索位置作为参数。
    • 如果找到子字符串,则返回该子字符串第一次出现的索引;如果未找到,则返回 -1。
    • 示例:
    1. String str = "Hello, World!";
    2. int index = str.indexOf("o"); // 返回 4,因为第一个 "o" 出现在索引位置 4
    复制代码
  • lastIndexOf() 方法

    • lastIndexOf() 方法用于在字符串中查找指定子字符串最后一次出现的位置。
    • 可以选择提供子字符串和(可选)起始搜索位置作为参数。
    • 如果找到子字符串,则返回该子字符串最后一次出现的索引;如果未找到,则返回 -1。
    • 示例:
    1. String str = "Hello, World!";
    2. int index = str.lastIndexOf("o"); // 返回 8,因为最后一个 "o" 出现在索引位置 8
    复制代码
这两个方法对于在字符串中查找特定子字符串的位置非常有用。如果您想要知道子字符串在字符串中的位置或者必要定位特定字符的位置,indexOf() 和 lastIndexOf() 是很方便的工具。记住,索引是从0开始计数的,即第一个字符的索引为0。
10.查询字符串中是否包含另一个子串

在 Java 中,contains() 方法用于查抄一个字符串是否包含另一个指定的子字符串。以下是它的先容:

  • contains() 方法:

    • contains() 方法用于查抄字符串中是否包含指定的子字符串。
    • 如果包含指定的子字符串,则返回 true;如果不包含,则返回 false。
    • 这个方法是区分大小写的,因此在比较时会思量字符的大小写情况。
    • 示例:
      1. String str = "Hello, World!";
      2. boolean contains1 = str.contains("Hello"); // 返回 true,因为字符串中包含子字符串 "Hello"
      3. boolean contains2 = str.contains("world"); // 返回 false,因为字符串中不包含子字符串 "world"(大小写不匹配)
      复制代码

contains() 方法通常用于查抄一个字符串是否包含另一个字符串,以便在逻辑判断或执行某些操作时确定是否存在特定内容。作为字符串类的一部门,这个方法是字符串操作中非常常用的一个函数。
请注意,contains() 方法只查抄是否包含指定的子字符串,而不提供子字符串的位置。如果您必要找到子字符串的位置,应该利用 indexOf() 或 lastIndexOf() 方法。
11.查询字符串是否是以一个子串开头,或是以一个子串结尾

在 Java 中,startsWith() 方法和 endsWith() 方法用于查抄字符串是否以指定的前缀开头或者以指定的后缀结尾。以下是它们的先容:

  • startsWith() 方法:

    • startsWith() 方法用于查抄字符串是否以指定的前缀开头。
    • 接受一个参数,即要查抄的前缀字符串。
    • 如果字符串以指定的前缀开头,则返回 true;否则返回 false。
    • 比较是区分大小写的。
    • 示例:
    1. String str = "Hello, World!";
    2. boolean startsWithHello = str.startsWith("Hello"); // 返回 true,因为字符串以 "Hello" 开头
    3. boolean startsWithHi = str.startsWith("Hi"); // 返回 false,因为字符串不以 "Hi" 开头
    复制代码
  • endsWith() 方法:

    • endsWith() 方法用于查抄字符串是否以指定的后缀结尾。
    • 接受一个参数,即要查抄的后缀字符串。
    • 如果字符串以指定的后缀结尾,则返回 true;否则返回 false。
    • 比较是区分大小写的。
    • 示例:
    1. String str = "Hello, World!";
    2. boolean endsWithWorld = str.endsWith("World!"); // 返回 true,因为字符串以 "World!" 结尾
    3. boolean endsWithJava = str.endsWith("Java"); // 返回 false,因为字符串不以 "Java" 结尾
    复制代码
startsWith() 和 endsWith() 方法常用于查抄字符串的特定前缀和后缀,这对于处理文件扩展名、URL等具有特定格式的字符串时非常有用。这些方法提供了查抄字符串开头和结尾的简单而有效的方式。
12.判断字符串是否为空

在 Java 中,isEmpty() 方法用于查抄一个字符串是否为空,即其长度是否为0。以下是它的先容:

  • isEmpty() 方法:

    • isEmpty() 方法用于查抄字符串是否为空,即字符串的长度是否为0。
    • 如果字符串为空,则返回 true;如果字符串不为空(长度大于0),则返回 false。
    • 示例:
      1. String str1 = ""; // 空字符串
      2. String str2 = "Hello, World!"; // 非空字符串
      3. boolean empty1 = str1.isEmpty(); // 返回 true,因为字符串为空
      4. boolean empty2 = str2.isEmpty(); // 返回 false,因为字符串不为空
      复制代码

isEmpty() 方法通常用于查抄字符串是否包含任何字符。这是一个方便的方法,特别适用于必要确保字符串不包含任何内容时。在一些情况下,避免尝试处理空字符串可以进步代码的健壮性,因此在必要时应该利用这个方法来验证字符串是否为空。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表