Java中String类的一些常见方法总结

 更新时间:2024年11月19日 10:47:22   作者:爱编程的小新☆  
这篇文章主要给大家介绍了关于Java中String类的一些常见方法,文中包括了Java中String类的基本概念、构造方式、常用方法以及StringBuilder和StringBuffer的使用,涵盖了字符串操作的各个方面,包括查找、转换、比较、替换、拆分、截取等,需要的朋友可以参考下

一. String类的概念

在Java中 String类是用于表示和操作字符串的类,字符串是Java中常用的数据类型,用于存储文本信息,并且String类中提供了许多方法用来执各种字符串操作,那么我们随着下文来学习一下常见的方法。

1.1 String类的特性

1. 不可变性:

String 对象是不可变的,一旦创建了 String 对象,其里面的内容就不能被修改,对 String的任何操作实际上都是创建了一个新的 String 对象。

注意:不能修改指的是:String对象的内容不能修改,而指向String对象的引用是可以修改的

2. 常量池的概念

字符串常量池是Java中用于存储字符串字面量的内存区域,为了节省内存,Java使用字符常量池来存储字符串字面量,当创建相同的字符串字面量时,它们会引用常量池中的同一个对象,从而降低程序内存的开销。

二. 字符串的构造方式

1. 使用字符串字面量构造

public class Test {
    public static void main(String[] args) {
        String s1 = "hello world"; //直接使用字符串字面量进行构造
        System.out.println(s1);
    }
}

2. 通过new关键字创建一个String对象

public class Test {
    public static void main(String[] args) {
        String s2 = new String("hello world");//通过new关键字创建对象
        System.out.println(s2);
    }
}

3.使用字符数组进行构造

public class Test {
    public static void main(String[] args) {
        char[] str = {'h','e','l','l','o','w','o','r','l','d'};
        String s3 = new String(str); //使用字符数组进行构造
        System.out.println(s3);
    }
}

以上就是最常见的最常见的字符串构造方式。

三. 常用方法

3.1 字符串查找

(1)char charAt( int index)

public class Test {
    public static void main(String[] args) {
        String str="hello world";
        char ch=str.charAt(1);
        System.out.println(ch);//e
    }
}

如果输入一个不合法的下标位置,就会发生报错:

(2)int indexOf( int ch)

public class Test {
    public static void main(String[] args) {
        String str="hello world";
        int n=str.indexOf('l');
        System.out.println(n); //2
    }
}

(3)int indexOf(int ch, int fromIndex)

public class Test {
    public static void main(String[] args) {
        String str="hello world";
        int n=str.indexOf('o',6);
        //从下标为6的位置(w)开始往后查找o的位置,7
        System.out.println(n);
    }
}

(4)int indexOf(String str)

public class Test {
    public static void main(String[] args) {
        String str="hello worldwor";
        int n=str.indexOf("wor");
        // 返回wor第一次出现的位置,没有返回-1,所以返回值为6
        System.out.println(n);
    }
}

(5)int indexOf(String str, int fromIndex) 

public class Test {
    public static void main(String[] args) {
        String str="hello worldwor";
        int n=str.indexOf("wor",8);
        //从下标为8的位置开始找wor第一次出现的位置,没有返回-1,所以这里返回值为11
        System.out.println(n);
    }
}

(6)int lastIndexOf(int ch)

public class Test {
    public static void main(String[] args) {
        String str="hello worldwor";
        int n=str.lastIndexOf('w');
        //从后往前找,返回w第一次出现的位置,没有返回-1,所以返回值为11
        System.out.println(n);
    }
}

(7)int lastIndexOf(int ch, int fromIndex)

public class Test {
    public static void main(String[] args) {
        String str="hello worldwor";
        int n=str.lastIndexOf('w',10);
        //从下标10的位置开始找,从后往前找w第一次出现的位置,没有返回-1,所以返回值为6
        System.out.println(n);
    }
}

(8)int lastIndexOf(String str)

public class Test {
    public static void main(String[] args) {
        String str="hello worldwor";
        int n=str.lastIndexOf("wor");
        //从后往前找,返回wor第一次出现的位置,没有返回-1,返回值为11
        System.out.println(n);
    }
}

(9)int lastIndexOf(String str, int fromIndex)

public class Test {
    public static void main(String[] args) {
        String str="hello worldwor";
        int n=str.lastIndexOf("wor",10);
        //从下标为10的位置开始找,从后往前找wor第一次出现的位置,没有则返回-1,这里返回值为6
        System.out.println(n);
    }
}

3.2 字符串转换

(1) 数值和字符串转化

数值转换成字符串,用String.valueOf( )进行转换:

public class Test {
    public static void main(String[] args) {
        // 数字转字符串
        String s1 = String.valueOf(123456);
        String s2 = String.valueOf(13.14521);
        System.out.println(s1);
        System.out.println(s2);
    }
}

数字字符串转换成数字,用 Interger.valueOf( )进行转换:

public class Test {
    public static void main(String[] args) {
        // 字符串转数字
        int n= Integer.valueOf("1234");
       double m= Double.valueOf("12.13");
        System.out.println(n);
        System.out.println(m);
    }
}

并且我们也可以传数字字符串,所需要转换的进制数:

public class Test {
    public static void main(String[] args) {
        // 字符串转数字
       int n=Integer.valueOf("1111",2);
       //后面的2表示,前面的数字字符串中的数字是2进制的形式,我们转换成10进制形式
        //就是15
        System.out.println(n);
    }
}

(2)字母的大小写转换

字母大小写转换我们使用String.toUpperCase----小写转大写 和 String.toLowerCase----大写转小写

public class Test {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "HELLO";
    // 小写转大写
        System.out.println(s1.toUpperCase());//HELLO
    // 大写转小写
        System.out.println(s2.toLowerCase());//hello
    }
}

(3)字符串转数组

我们还可以将一个字符串转换成一个数组,使用String.toCharArray( )方法进行转换:

public class Test {
    public static void main(String[] args) {
        String s = "hello";
        // 字符串转数组
        char[] ch = s.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            System.out.print(ch[i]);
        }
    }
}

(4)格式化字符串

我们可以使用String.format( )方法进行字符串的格式化:

public class Test {
    public static void main(String[] args) {
        String s = String.format("%d-%d-%d", 2024, 10,30);
        System.out.println(s);
        //打印2024-10-30
    }
}

3.3 字符串比较

当我们比较基本数据类型的对象的时候,使用 == 可以进行比较,但是对于我们的String类型(引用类型)来说,使用 == 进行比较,比较的是引用中的地址:

从上图就可以发现 str1和str2中存放的的字符串是一样的,但是运行结果显示并不相等,那么当我们需要进行字符串比较的时候该怎么办呢?

3.3.1 equals( )方法

equals( )方法的比较方式:按照字典序比较--->比较的是字符大小的顺序

3.3.2 compare To( )方法

compare To( )方法的比较方法:按照字典序进行比较 ----> compare To( )方法与equals( )方法的区别:equals( )方法的返回值是 boolean 类型的值,而 compare To( )方法返回的是 int 类型的值。

1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值。

2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值。

3.3.3 compare ToIgnoreCase( )方法

该方法与compare To( )方法没有很大差别,但是compare ToIgnoreCase( )方法在进行比较的时候能够忽略字符的大小写:

3.4 字符串替换

3.4.1 replace( )方法

replace( )方法能够将一个字符串中指定的字符替换成一个新指定的字符:

3.4.2 replaceFrist( )方法

 replaceFrist( )方法能够将字符串中指定的第一个字符串替换成新指定的字符串:

3.4.3 replaceAll( )方法

 replaceAll( )方法 与 replaceFrist( )方法不同的是: replaceAll( )方法能将字符串中所有指定的字符串全部替换成一个新指定的字符串:

3.5 字符串拆分

3.5.1 String[] split(String regex)

String[] split( )方法能够将一个字符串按照指定的字符为分割线,分割成若干个子字符串:

3.5.2 String[] split(String regex, int limit)

String[] split(String regex, int limit)方法能够将字符串按照指定的格式,分割成 limit 个子字符串:

 3.6 字符串截取

3.6.1 String substring(int beginIndex)

将字符串从下标为 beginIndex 的位置开始截取到字符串结尾:

 3.6.2 String substring(int beginIndex, int endIndex)

将字符串从下标为 beginIndex 的位置开始截取到 endIndex 位置的前一个字符为止:

四.StringBuilderStringBuffer

在开头的String类的特征中,我们就说明了String类的不可变性,对 String 对象的任何修改操作都会创建一个新的对象,在程序运行的过程中,效率是很低的,那么这个时候如果要对字符串进行修改尽量使用StringBuffer或者StringBuilder

由于 String 的不可更改特性,为了方便字符串的修改, Java 中又提供 StringBuilder 和 StringBuffer 类。这两个类大部分功能是相同的

在这里介绍一下Stringbuilder一些常用的方法。

4.1 append(String str)

append(String str)方法可以在字符串的末尾追加新的内容:

注意:追加的不只是字符串,还可以追加:boolean、char、char[]、double、float、int、long、Object、String、StringBuff类型的变量。 

4.2 setCharAt(int index, char ch)

setChatAt(int index, char ch)方法能够将 index位置的字符替换成ch:

4.3 reverse( ) 

将字符串进行反转:

 4.4 capacity( ) 

capacity( ) 方法可以获取底层保存字符串空间总的大小:

4.5 ensureCapacity(int mininmumCapacity)

将该字符串的内存空间扩展到指定的空间大小:

 4.6 insert(int offset, String str)

在指定的下标位置插入一个字符串:

4.7 deleteCharAt(int index)

删除指定下标的字符:

 补充:delete(int start, int end)能够删除[start, end)区间内的字符:

 4.8 replace(int start, int end, String str)

将[start, end)位置的字符替换为str:

注意:String和StringBuilder类不能直接转换。如果要想互相转换,可以采用如下原则

1. String变为StringBuilder: 利用StringBuilder的构造方法或append()方法

2. StringBuilder变为String: 调用toString()方法

结语

到此这篇关于Java中String类的一些常见方法总结的文章就介绍到这了,更多相关Java String类常见方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Java事件监听编写一个中秋猜灯谜小游戏

    基于Java事件监听编写一个中秋猜灯谜小游戏

    众所周知,JavaSwing是Java中关于窗口开发的一个工具包,可以开发一些窗口程序,然后由于工具包的一些限制,导致Java在窗口开发商并没有太多优势,不过,在JavaSwing中关于事件的监听机制是我们需要重点掌握的内容,本文将基于Java事件监听编写一个中秋猜灯谜小游戏
    2023-09-09
  • 解读System.getProperty("ENM_HOME")中的值从哪获取的

    解读System.getProperty("ENM_HOME")中的值从哪获取的

    这篇文章主要介绍了解读System.getProperty("ENM_HOME")中的值从哪获取的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • SpringBoot使用不同环境动态加载不同配置文件

    SpringBoot使用不同环境动态加载不同配置文件

    通过在resource目录下创建不同环境的配置文件,并在Spring Boot启动类中使用环境变量来加载相应的配置文件,从而实现不同环境下的配置自动加载
    2024-11-11
  • java mybatis框架配置详解

    java mybatis框架配置详解

    在本篇文章里小编给大家整理的是一篇关于java mybatis框架配置详解内容,对此有兴趣的朋友们可以参考下。
    2021-02-02
  • 两种Eclipse部署动态web项目方法

    两种Eclipse部署动态web项目方法

    这篇文章主要介绍了两种Eclipse部署动态web项目方法,需要的朋友可以参考下
    2015-11-11
  • Java自定义类加载器实现类隔离详解

    Java自定义类加载器实现类隔离详解

    由于每种组件的不同版本所依赖的jar包不同,我们可以借鉴tomcat的实现方式,通过自定义类加载器打破双亲委派机制来实现类隔离,从而达到操作多组件多版本的目的。本文就来和大家详细聊聊实现方法
    2023-03-03
  • Java中获取Class对象的3种方式代码示例

    Java中获取Class对象的3种方式代码示例

    Class对象是反射的核心,通过他可以调用类的任意方法,下面这篇文章主要给大家介绍了关于Java中获取Class对象的3种方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • java实现大文本文件拆分

    java实现大文本文件拆分

    这篇文章主要为大家详细介绍了java实现大文本文件拆分,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 浅谈SpringCloud之zuul源码解析

    浅谈SpringCloud之zuul源码解析

    这篇文章主要介绍了浅谈SpringCloud之zuul源码解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Java SpringBoot在RequestBody中高效的使用枚举参数原理案例详解

    Java SpringBoot在RequestBody中高效的使用枚举参数原理案例详解

    这篇文章主要介绍了Java SpringBoot在RequestBody中高效的使用枚举参数原理案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09

最新评论