JavaSE学习值之--String类(二)

简介: JavaSE学习值之--String类(二)

JavaSE学习值之--String类(一)+https://developer.aliyun.com/article/1413503

2.indexOf方法,lastIndexOf 方法--》不止一个,有多个,构成了方法的重载

1.单个字符(从前往后找)
String str1 = "abcdefghcde";
        System.out.println(str1.indexOf('a'));// 0
        System.out.println(str1.indexOf('b'));// 1
        System.out.println(str1.indexOf('c'));// 2
        System.out.println("==================");
        System.out.println("从指定index开始访问");
        System.out.println(str1.indexOf('c', 3));// 8  返回的是第二个c出现的位置
        System.out.println(str1.indexOf('a', 1));// -1  1代表从b开始,后面不含有a
        System.out.println("==================");
        System.out.println("从后往前找");
        System.out.println(str1.lastIndexOf('c'));// 8
        System.out.println(str1.lastIndexOf('e'));// 10
        System.out.println(str1.lastIndexOf('c', 4));// 2

注意:indexOf方法只返回第一次出现的下标(从左往右)

2.查找子字符串(从前往后找)
String str1 = "abcdefghcde";
        // 返回子字符串第一次出现位置的下标
        System.out.println(str1.indexOf("ab"));
        System.out.println(str1.indexOf("cd"));
        System.out.println(str1.indexOf("de"));
        System.out.println("===================");
        System.out.println("从指定索引位置之后返回子字符串出现的位置");
        System.out.println(str1.indexOf("cd", 4));// 8
        System.out.println(str1.indexOf("de",6));// 9
        System.out.println("===================");
        System.out.println("从后往前查找");
        /**
         * 注意返回都是第一个字符的下标
         */
        System.out.println(str1.lastIndexOf("cd"));// 8
        System.out.println(str1.lastIndexOf("de"));// 9
        System.out.println(str1.lastIndexOf("cd", 5));// 2

5.字符串的转化

1.数值和字符串之间的转化

class Student {
    String name;
    int age;
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
public class Test1 {
    public static void main(String[] args) {
        /**
         * 其他类型转字符串(布尔类型和引用类型也能转化)
         * String.valueOf方法
         */
        String s1 = String.valueOf(1234);
        String s2 = String.valueOf(12.34);
        String s3 = String.valueOf(true);
        String s4 = String.valueOf(new Student("Hanmeimei", 18));
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s4);
        System.out.println("=======================");
        /**
         * 字符串转其他类型
         * 通过其他类型的包装类中的parse方法
         */
        int a = Integer.parseInt("12345");
        double b = Double.parseDouble("12.20");
        boolean c = Boolean.parseBoolean("true");
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

2.大小写互换--》toUpperCase  toLowerCase

String str1 = "hello";
        String str2 = "WROLD";
        String str3 = "Hello";
        // 小写转大写
        System.out.println(str1.toUpperCase());
        // 大写转小写
        System.out.println(str2.toLowerCase());
        System.out.println(str3.toLowerCase());

3.. 字符串转数组

String str1 = "hello";
        char[] value = str1.toCharArray();
        for (int i = 0; i < value.length ; i++) {
            System.out.print(value[i] + " ");
        }
        System.out.println();
        System.out.println("====================");
        // 字符数组转字符串(字符串的构造)
        char[] value2 = {'h','e','l','l','o'};
        String str2 = new String(value2);
        System.out.println(str2);

4. 格式化(以特定的格式输出字符串)

String s = String.format("%d-%d-%d", 2019, 9,14);
        System.out.println(s);// 输出2019-9-14

6.字符串替换

 用另一个字符串代替当前字符串中的某些内容

String str1 = "hello world";
        // 单个字符替换
        System.out.println(str1.replace('o', 'x'));// hellx wxrld 两个o都被替换了
        // 字符串替换
        System.out.println(str1.replace("hello", "xxxxxxx"));
        // 替换首个位置
        // replaceFirst的参数只能是字符串
        System.out.println(str1.replaceFirst("o","x"));// hellx world  只替换第一个o
        // replaceAll 用于基于正则表达式的文本替换
        System.out.println(str1.replaceAll("o", "x"));
        // replace的返回值是一个新的字符串,不是对原字符串进行修改
        // java中字符串是常量,无法被修改
        String str2 = str1.replace('e','d');

7.字符串的拆分

1.split方法--》返回值是String[],所以要用字符串数组接收

String str1 = "how are you man?";
        String[] value = str1.split(" ");
        for (String s:value) {
            System.out.println(s);
        }
        System.out.println("===================");
        // 就分两组
        String[] value2 = str1.split(" ",2);
        for (String s:value2) {
            System.out.println(s);
        }

2.特殊字符的拆分

 在使用split方法时,传递的参数是字符,但是有些字符本身就有特定的作用(+-*\等等),需要使用转义字符进行转义

1.拆分IP地址
String str = "192.168.1.1" ;
        String[] result = str.split("\\.") ;
        for(String s: result) {
            System.out.println(s);
        }

1. 字符"|","*","+"都得加上转义字符,前面加上 "\\" .

2. 而如果是 "\" ,那么就得写成 "\\\\" .

3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符

String str = "192\\168\\1\\1" ;// 在字符串中使用\需要先进行转义
        String[] result = str.split("\\\\") ;
        for(String s: result) {
            System.out.println(s);
}
2.多次分割(开发常用)

  在进行分割时,一个字符串内往往含有多个不同的符号,一次split只能以一个符号进行分割,如果想实现多次分割,可以利用嵌套的for循环进行多次分割

public static void main(String[] args) {
        String str = "name=李四&age=17";
        String[] arr1 = str.split("&");
        for (int i = 0; i <arr1.length ; i++) {
            String[] tmp = arr1[i].split("=");
            System.out.println(tmp[0]+" = "+ tmp[1]);
            }
        }

JavaSE学习值之--String类(三)+https://developer.aliyun.com/article/1413507

目录
相关文章
|
4月前
|
存储 编译器 C语言
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
85 0
|
7月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
155 11
|
7月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
164 9
|
7月前
|
存储 JavaScript Java
课时44:String类对象两种实例化方式比较
本次课程的主要讨论了两种处理模式在Java程序中的应用,直接赋值和构造方法实例化。此外,还讨论了字符串池的概念,指出在Java程序的底层,DOM提供了专门的字符串池,用于存储和查找字符串。 1.直接赋值的对象化模式 2.字符串池的概念 3.构造方法实例化
100 1
|
11月前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
312 2
|
12月前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
297 2
|
12月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
95 1
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
146 0
java基础(13)String类
|
12月前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
232 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
String类-知识回顾①
这篇文章回顾了Java中String类的相关知识点,包括`==`操作符和`equals()`方法的区别、String类对象的不可变性及其好处、String常量池的概念,以及String对象的加法操作。文章通过代码示例详细解释了这些概念,并探讨了使用String常量池时的一些行为。
String类-知识回顾①

热门文章

最新文章