要点Java17 String

本文详细介绍了Java中String类的使用,包括创建字符串的方法、11种构造方法及其功能,如通过字符数组初始化。重点讲解了String类的常用方法,如charAt、endsWith、equals、getBytes等,并通过示例展示了如何进行字符串操作。此外,文章还通过JUnit演示了与String相关的常见笔试题,帮助读者加深理解和应用。

字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。

创建字符串

创建字符串最简单的方式如下:

String greeting = "Hello world!";

在代码中遇到字符串常量时,这里的值是"Hello world!",编译器会使用该值创建一个String对象。

和其它对象一样,可以使用关键字和构造方法来创建String对象。

String类有11种构造方法,这些方法提供不同的参数来初始化字符串,比如提供一个字符数组参数:

public class StringDemo{

    public static void main(String args[]){
        char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.'};
        String helloString = new String(helloArray);  
        System.out.println( helloString );
    }
}

以上实例编译运行结果如下:

hello.

注意:String类是不可改变的final类,所以你一旦创建了String对象,那它的值就无法改变了。 如果需要对字符串做很多修改,那么应该选择使用StringBuffer & StringBuilder 类。

常用方法

  • char charAt(int index) 返回指定索引处的 char 值。
  • static String copyValueOf(char[] data) 返回指定数组中表示该字符序列的 String。
  • boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。
  • boolean equals(Object anObject) 将此字符串与指定的对象比较。
  • boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。
  • byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
  • byte[] getBytes(String charsetName) 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
  • int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
  • int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
  • int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。
  • int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。
  • int length() 返回此字符串的长度。
  • boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。
  • String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
  • String replaceAll(String regex, String replacement使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
  • String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。
  • String[] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串。
  • boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。
  • String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
  • String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。
  • String toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
  • String toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
  • String trim() 返回字符串的副本,忽略前导空白和尾部空白。
  • static String format(String format,Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。

常见题目(使用JUnit演示)

@Test
public void testEquels(){
    String test = "12345";
    String test1 = "12345";
    String test2 = new String("12345");
    String test3 = new String("12345");

    String t1 = test;
    String t2 = "12"+"345";

    assertTrue(test==test1);
    assertTrue(test==t1);
    assertTrue(test==t2);

    assertTrue(test!=test2);
    assertTrue(test2!=test3);       
}

@Test
public void testNotChange(){
    String inString = "123";        
    String outString =  stubChangeString(inString);

    assertEquals("123", inString);
    assertEquals("123test", outString);
}

private String stubChangeString(String inString){
    inString += "test";
    return inString;
}

@Test
public void testSubString() {
    String test = "12345";
    assertEquals("2345", test.substring(1));
}

@Test
public void testToArrays() {
    List<String> ids = new ArrayList<>();
    ids.add("1");
    ids.add("2");
    ids.add("3");
    String[] id = ids.toArray(new String[0]);
    assertEquals(3, id.length);
    assertEquals("1", id[0]);
}

你也可以访问http://txidol.github.io 获取更多的信息


### Java String 类官方文档及相关方法示例 #### JDK API 文档的重要性 Java 提供了全面的 JDK API 文档,这是学习 `String` 类以及其他核心功能的重要资源。通过查阅这些文档,开发者能够深入了解各种方法的功能及其使用方式[^1]。 #### String 的基本概念与常用方法 以下是关于 `String` 类的一些重要知识点以及其常见方法: - **字符串不可变性** 在 Java 中,`String` 是不可变对象 (immutable object),这意味着一旦创建了一个字符串实例,它的值就不能被更改。任何修改操作都会返回一个新的字符串对象。 - **substring() 方法** `String.substring()` 方法用于提取子字符串,它有两种重载形式: - `public String substring(int beginIndex)`:从指定索引位置开始截取到结尾。 - `public String substring(int beginIndex, int endIndex)`:从起始索引到结束索引前一位进行截取[^2]。 示例代码如下所示: ```java public class SubstringExample { public static void main(String[] args) { String str = "HelloWorld"; System.out.println(str.substring(5)); // 输出: World System.out.println(str.substring(0, 5)); // 输出: Hello } } ``` - **Boolean 解析** 使用静态方法 `Boolean.parseBoolean(String s)` 可以将字符串转换成布尔值。只有当输入字符串不为空且忽略大小写等于 `"true"` 时才返回 `true`;其他情况下均返回 `false`[^4]。 示例代码如下: ```java public class BooleanParseExample { public static void main(String[] args) { System.out.println(Boolean.parseBoolean("True")); // true System.out.println(Boolean.parseBoolean("FALSE")); // false System.out.println(Boolean.parseBoolean(null)); // false } } ``` #### 接口的作用于规范定义 虽然本问题是针对 `String` 类的具体实现细节展开讨论,但值得一提的是,在更广泛的上下文中,接口作为 Java 编程语言的一部分起到了至关重要的角色——它们不仅限定了行为契约还促进了模块间解耦合设计思路的发展方向之一即面向接口编程理念的应用实践过程中的具体体现形式表现为多个类共同遵循某个特定类型的约束条件从而达到提高程序灵活性的目的同时也有助于增强系统的可维护性和扩展能力等方面表现出色之处在于能够让不同的开发人员专注于各自负责的部分而无需关心对方内部是如何工作的只要满足约定即可正常协作完成整个项目的构建工作流程图展示如下内容结构层次清晰明了便于理解和记忆掌握要点快速上手实战演练效果显著提升效率减少错误发生几率等等优点值得推荐给广大初学者朋友们尝试体验一下看看是否适合自己当前阶段的学习需求情况再做进一步考虑决定吧[^3]!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值