String类的常用方法总结,Cs挽周带你玩转String类(图文总结超详细) !(上)

简介: String类的常用方法总结,Cs挽周带你玩转String类(图文总结超详细) !

String

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

这句话的理解:

Java中字符串类型String是不允许改变其内容的,那么请问简要谈谈下列语句是如何运行的:String s=new String(“ABC”); s=s+“abc”;

确实,Java中的String类型确实是不允许改变其内容的,String类型的对象一旦建立,将在堆内存当中占据一个固定的内存空间,String类型的对象无法改变。但是你在运算的时候又发现,你定义的String类型的s变量又是可以进行连接的,如"abc"+“def"最终得到的s的值是"abcdef”,这似乎看着String类型的对象又是可以改变的,这是自相矛盾吗?其实,String对象不允许改变内容是正确的,但是可以改变定义的String类型的变量指向,你定义的String s其实是一个指向String对象的指针,如果不存在对象就为null。如果你定义了:String s=“abc”;那么将创建一个内容为"abc"的String对象,并且s指向这个对象。一旦s=s+“abc”;这样的操作,那么将创建一个新的String对象来存放新的内容,原先的对象依旧在内存中,但是s不在指向它,那么这个对象就会成为垃圾内存,在某一个特定的时刻有Java虚拟机回收。如果希望存放的String可以调整大小,而不是创建新的内存来存放新的对象,可以使用StringBuffer这个类来存放。这个内存可以调整大小。而不会抛弃。

实例:

public static void main(String[] args) {
    String s=new String("ABC"); s=s+"abc";
    System.out.println(s);
  }


image.png

在此我为大家列出了一个大纲,通过大纲和目录,可以快速定位到想要使用的方法

方法 说明
int length() 返回当前字符串长度
char charAt( int index) 获取字符串中指定位置的字符
char toCharArray() 将字符串转为 char 数组类型。
int indexOf( int ch) 查找ch字符在该字符串中第一次出现的位置
String.lastIndexOf(String str) 得到str最后一次出现的位置
toUpperCase(),toLowerCase() 字符串大小写转换
String[ ] split(String regex ,int limit) 去除字符串中指定的的字符,然后返回一个新的字符串
boolean equals(Object anObject) 字符串比较


String trim() 去除字符串两端空格
String replace(char oldChar,char newChar) 字符串替换
String substring(int beginIndex,int endIndex) 截取字符串
boolean equalsIgnoreCase(String str) 忽略大小写对字符串进行比较
boolean contains(String str) 判断一个字符串里面是否包含指定的内容
boolean startsWith(String str) 是否以指定的前缀开始
boolean endsWith(String str) 是否以指定的后缀结束
String replaceAll(String str1,String str2) 将某个内容全部替换成指定内容
String repalceFirst(String str1,String str2) 将第一次出现的某个内容替换成指定的内容
String concat(String str) 在原有的字符串的基础上加上指定字符串
boolean isEmpty() 非空判断


int length()

  • 语法:字符串变量名.length();
  • 说明: 返回值为 int 类型。得到一个字符串的字符个数(中、英、空格、转义字符皆为字符,计入长度)
  • 示例:
    public static void main(String[] args) {
        String test = "我是Cs挽周,请官方给我个热榜,@@占位符@@谢谢了";
        System.out.print(test.length());
    }

结果:

20210705095138279.png


char charAt( int index)

  • 语法:字符串名.charAt(值);
  • 说明: 返回值为 char 类型。从字符串中取出指定位置的字符
  • 示例:
    public static void main(String[] args) {
        String test = "我是Cs挽周,请官方给我个热榜,@@占位符@@谢谢了";
        System.out.print("指定字符为:"+test.charAt(4));
    }

结果:

20210705100011818.png

char toCharArray()

  • 语法:字符串名.toCharArray();
  • 说明: 返回值为 char 数组类型。将字符串变成一个字符数组
  • 示例:
    public static void main(String[] args) {
        String test = "我是Cs挽周,请官方给我个热榜,@@占位符@@谢谢了";
        char[] chars = test.toCharArray();
        for (int i=0;i<chars.length;i++){
            System.out.println(chars[i]);
        }
    }

结果:

20210705100413722.png

int indexOf( int ch)

  • 语法 :字符串名.indexOf("字符");字符串名.indexOf("字符",值);
  • 1个入参,说明: 查找一个指定的字符串是否存在,返回的是字符串的位置,如果不存在,则返回-1 。
  • 2个入参,说明 : 从指定位置开始查找一个指定的字符串是否存在,返回的是字符串的位置,如果不存在,则返回-1 。
  • 示例:
    // 1
    public static void main(String[] args) {
        String test = "我是Cs挽周,请官方给我个热榜,@@占位符@@谢谢了";
        System.out.println(test.indexOf("位"));
    }
  // 2
  public static void main(String[] args) {
        //查找一个字符是否存在,存在返回下标,不存在返回 -1
        String test = "我是Cs挽周,请官方给我个热榜,@@占位符@@谢谢了";
        System.out.println(test.indexOf("@",19));
    }
  • 结果:

20210705101314664.png

20210705102113219.png

String.lastIndexOf(String str)

  • 语法:字符串名.lastIndexOf("字符")
  • 说明: 得到指定内容最后一次出现的下标。
  • 示例:
    public static void main(String[] args) {
        //查找一个字符是否存在,存在返回下标,不存在返回 -1
        String test = "我是Cs挽周,请官方给我个热榜,@@占位符@@谢谢了";
        System.out.println(test.lastIndexOf("@"));
    } 

结果:

20210705102736166.png

toUpperCase(),toLowerCase()

  • 语法:字符串名.toUpperCase()字符串名.toLowerCase()
  • 说明: 字符串大小写的转换
  • 示例:
    public static void main(String[] args) {
        String str="hello world";
        System.out.println("将字符串转大写为:" + str.toUpperCase());
        System.out.println("将字符串转换成小写为:" + str.toUpperCase().toLowerCase());
    }

结果:

2021070510311432.png

String[ ] split(String regex ,int limit)


语法: String[] split("字符") String[] split(String regex ,int limit)

String[] split("字符") 说明: 根据给定的正则表达式的匹配来拆分此字符串。

String[] split(String regex ,int limit)说明: 若limit参数大于等于这个length或limit参数为非正数,则字符串以regex方式进行最大split;若limit参数处于0和length之间,则字符串以regex方式进行limit - 1次split,split后剩下的字符不会再进行split。

示例:

    // String[] split("字符")
    public static void main(String[] args) {
        String test = "我是Cs挽周,请官方给我个热榜,@@占位符@@谢谢了";
        String[] split = test.split("@");
        for (int i =0;i<split.length;i++){
            System.out.println(split[i]);
        }
    }
  //String[] split(String regex ,int limit)
    public static void main(String[] args) {
        String test = "我是Cs挽周,请官方给我个热榜,@@占位符@@谢谢了";
        String[] split = test.split("@",2);
        for (int i =0;i<split.length;i++){
            System.out.println(split[i]);
        }
    }
  • 结果:

20210705104657179.png

20210705105545913.png

相关文章
|
27天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
48 2
|
2月前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
68 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
2月前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
52 2
|
2月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
29 1
|
2月前
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
64 4
|
1月前
|
JavaScript 前端开发 开发者
|
3月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
46 0
java基础(13)String类
|
3月前
|
安全 Java
String类-知识回顾①
这篇文章回顾了Java中String类的相关知识点,包括`==`操作符和`equals()`方法的区别、String类对象的不可变性及其好处、String常量池的概念,以及String对象的加法操作。文章通过代码示例详细解释了这些概念,并探讨了使用String常量池时的一些行为。
String类-知识回顾①
|
2月前
|
存储 安全 Java
【一步一步了解Java系列】:认识String类
【一步一步了解Java系列】:认识String类
28 2
|
2月前
|
安全 C语言 C++
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
53 4