Java篇String类的常见方法

目录

一. String类的概念

1.1 String类的特性

二. 字符串的构造方式

三. 常用方法

3.1 字符串查找

3.2 字符串转换

3.3 字符串比较

3.3.1 equals( )方法

3.3.2 compare To( )方法

3.3.3 compare ToIgnoreCase( )方法

3.4 字符串替换

3.4.1 replace( )方法

3.4.2 replaceFrist( )方法

3.4.3 replaceAll( )方法

3.5 字符串拆分

3.5.1 String[] split(String regex)

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

 3.6 字符串截取

3.6.1 String substring(int beginIndex)

 3.6.2 String substring(int beginIndex, int endIndex)

​编辑四.StringBuilder和StringBuffer

4.1 append(String str)

4.2 setCharAt(int index, char ch)

4.3 reverse( ) 

 4.4 capacity( ) 

4.5 ensureCapacity(int mininmumCapacity)

 4.6 insert(int offset, String str)

4.7 deleteCharAt(int index)

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

结语


一. 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)方法可以在字符串的末尾追加新的内容:

注意:追加的不只是字符串,还可以追加:booleancharchar[]doublefloatintlongObjectStringStringBuff类型的变量。 

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:

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

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

结语

以上就是本期的内容啦,希望大家看完本篇能够收获满满 ≧◉◡◉≦,让我们一起进步~在此感谢大家的观看!!!

### 关于Cadence 17.2版本中Pspice的教程 #### 安装指南 对于希望安装Cadence PSpice 17.2版本的用户来说,需注意几个关键步骤。当点击安装Cadence软件时,应指定添加安装包路径以及设定不含空格和汉字字符的安装路径[^1]。完成基础软件部署后,还需通过加入Hotfix文件的方式安装必要的更新补丁。最后,在一切设置妥当之后,务必记得重启计算机以使更改生效。 #### 绘制原理图 一旦上述准备工作就绪,则可以在重新启动后的环境中利用OrCAD Capture CIS工具着手绘制所需的电路原理图。此阶段涉及的具体操作包括但不限于元件的选择、放置及其间的连接构建等动作。 #### 创建自定义电路模块 针对那些想要进一步定制化工作流或者提高效率的技术人员而言,掌握如何基于个人需求创建专属的电路组件显得尤为重要。在Cadence PSpice环境下,这意呸着能够把一系列预设好的子电路打包成独立单元以便重复调用或分享给团队成员。具体实现过程涵盖了从草稿构思到最后成品导出的一系列环节[^2]。 #### 设计流程概览 在整个电子设计自动化领域里,由概念验证直至最终产品成型往往遵循一套既定的工作模式。对于采用Cadence平台开展工作的工程师们来讲,这套方法论通常始于案例研究进而过渡至详尽的设计实施;期间会经历诸如原理图表绘、错误检测修正、性能测试评估等多个重要节点直到所有目标达成为止[^3]。 #### 原理图设计概述 深入探讨一下项目结构的话就会发现,“Design Resources”部分主要负责存储整个项目的配置信息。“Outputs”则用于汇总各中间产物或是终期报告文档。“Referenced Projects”允许设计师轻松关联其他辅助性的外部资料库从而促进跨部门协作交流活动顺利展开。值得注意的是如果当前任务涉及到仿真的话那么这里还会额外显示出专门用来支持此作业的相关条目——即所谓的“PSpice Resources”。 ```python # Python代码示例仅作为装饰用途,并不实际参与解释说明逻辑 def example_function(): pass ```
评论 158
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值