强哥说Java--Java String和StringBuilder(一)

简介: 强哥说Java--Java String和StringBuilder(一)

1. String 对象的创建



String对象的创建有两种方式。


第1 种方式就是我们最常见的创建字符串的方式:


String str1 = "8/24";


第 2 种方式是对象实例化的方式,使用new关键字,并将要创建的字符串作为构造参数:


String str2 = new String("8/25");


如果调用 String 类的无参构造方法,则会创建一个空字符串:


String str3 = new String();


这种方式很少使用。


2. 获取字符串长度



可以使用length()方法来获取字符串的长度。例如:


实例演示


package com.caq.oop.demo08;
 public class Test {
     public static void main(String[] args) {
         String str1 = "8/24";
         int a = str1.length();
         System.out.println(a);
     }
 }


运行结果:

4

3. 字符串查找



3.1 获取指定位置字符


可以使用char charAt(int index)方法获取字符串指定位置的字符。它接收一个整型的index参数,指的是索引位置,那什么是索引位置呢?例如,有一字符串I love Java,其每个字符的索引如下图所示:


image.png


可以从图示中看出,索引下标从0开始。假如我们要获取字符C,则为方法传入参数2即可:


实例演示


package com.caq.oop.demo08;
 public class Test {
     public static void main(String[] args) {
         String str1 = "ABCDEFG";
         char a = str1.charAt(4);
         System.out.println(a);
     }
 }


运行结果:

E

 

3.2 查找字符串位置


这里介绍查找字符串位置的两个方法:


indexOf() 获取字符或子串在字符串中第一次出现的位置。


lasIndexOf() 获取字符或子串在字符串中最后一次出现的位置。


这里的子串指的就是字符串中的连续字符组成的子序列。例如,字符串Hello就是字符串Hello Java的子串。


indexOf()


1 获取字符在字符串中第一次出现的位置:


package com.caq.oop.demo08;
 public class Test {
     public static void main(String[] args) {
         String str1 = "ABCDEFG";
         int a = str1.indexOf('G');
         System.out.println("字符A在字符串str1第一次出现的位置为:"+ a);
     }
 }


字符A在字符串str1第一次出现的位置为:6

2 获取子串在字符串中第一次出现的位置:


package com.caq.oop.demo08;
 public class Test {
     public static void main(String[] args) {
         String str1 = "I just poor boy,I needn`t sympathy";
         int a = str1.indexOf('I');
         System.out.println("字串I在字符串str1第一次出现的位置为:"+ a);
     }
 }


字符I在字符串str1第一次出现的位置为:0


lastIndexOf()


1 获取字符在字符串中最后一次出现的位置:


package com.caq.oop.demo08;
public class Test {
    public static void main(String[] args) {
        String str1 = "I just poor boy,I needn`t sympathy";
        int a = str1.lastIndexOf("I");
        System.out.println("字串I在字符串str1最后一次出现的位置为:"+ a);
    }
}


字串I在字符串str1最后一次出现的位置为:16

2 获取子串在字符串中最后一次出现的位置:


package com.caq.oop.demo08;
public class Test {
    public static void main(String[] args) {
        String str1 = "I love LYF and I love PYY";
        int a = str1.lastIndexOf("I love");
        System.out.println("子串I love在字符串str1最后一次出现的位置为:"+ a);
    }
}


运行结果:


子串I love在字符串str1最后一次出现的位置为:15

需要特别注意的是,以上方法的参数都是区分大小写的。如果你找了个不存在的,上述方法都会返回一个整型值:-1。我们来看以下示例:


package com.caq.oop.demo08;
 public class Test {
     public static void main(String[] args) {
         String str1 = "I love LYF and I love PYY";
         int a = str1.lastIndexOf("QQ");
         System.out.println("子串QQ在字符串str1最后一次出现的位置为:"+ a);
     }
 }



子串QQ在字符串str1最后一次出现的位置为:-1

可以看到结果是-1


4. 字符串截取



字符串的截取也称为获取子串


可以使用substring()方法来获取子串


String类中有两个重载的实例方法:


String substring(int beginIndex) 获取从beginIndex位置开始到结束的子串。


String substring(int beginIndex, int endIndex) 获取从beginIndex位置开始到endIndex位置的子串(不包含endIndex位置字符)


image.png


关于这两个方法的使用,我们来看一个实例:


实例演示


package com.caq.oop.demo08;
 public class Test {
     public static void main(String[] args) {
         String str1 = "I just poor boy,I need no sympathy";
         String a = str1.substring(15);
         String b = str1.substring(8,12);
         System.out.println("从15到最后的字符串"+ a);
         System.out.println("从8到12的字符串"+ b);
     }
 }


运行结果:


从15到最后的字符串,I need no sympathy

从8到12的字符串oor

要特别注意,方法签名上有两个参数的substring(int beginIndex, int endIndex)方法


截取的子串不包含endIndex位置的字符。


相关文章
|
29天前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
186 5
|
3月前
|
存储 SQL 缓存
Java字符串处理:String、StringBuilder与StringBuffer
本文深入解析Java中String、StringBuilder和StringBuffer的核心区别与使用场景。涵盖字符串不可变性、常量池、intern方法、可变字符串构建器的扩容机制及线程安全实现。通过性能测试对比三者差异,并提供最佳实践与高频面试问题解析,助你掌握Java字符串处理精髓。
|
4月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
277 14
|
5月前
|
存储 安全 Java
String StringBuffer StringBuilder 区别详解与对比分析
本文详细解析了Java中String、StringBuffer和StringBuilder的区别,从可变性、线程安全性和性能三个方面进行对比,并结合具体应用场景分析了三者的适用范围。通过性能测试示例展示了它们在字符串拼接时的效率差异,同时提供了实际代码案例帮助理解。总结指出,String适合少量操作或线程安全场景,StringBuffer适用于多线程环境,而StringBuilder则在单线程下性能最优。开发者应根据需求选择合适的类以优化程序性能。文末还附有相关面试资料供参考。
879 2
|
8月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
175 11
|
8月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
189 9
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
288 65
|
存储 安全 Java
String、StringBuffer 和 StringBuilder 的区别
【10月更文挑战第21天】String、StringBuffer 和 StringBuilder 都有各自的特点和适用场景。了解它们之间的区别,可以帮助我们在编程中更合理地选择和使用这些类,从而提高程序的性能和质量。还可以结合具体的代码示例和实际应用场景,进一步深入分析它们的性能差异和使用技巧,使对它们的理解更加全面和深入。
486 57
下一篇
开通oss服务