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

目录
相关文章
|
1月前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
52 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
28天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
24 2
|
30天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
21 1
|
1月前
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
50 4
|
1月前
|
存储 安全 Java
【一步一步了解Java系列】:认识String类
【一步一步了解Java系列】:认识String类
24 2
|
1月前
|
C语言 C++
C++番外篇——string类的实现
C++番外篇——string类的实现
20 0
|
1月前
|
C++ 容器
C++入门7——string类的使用-2
C++入门7——string类的使用-2
20 0
|
2月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
38 0
java基础(13)String类
|
3月前
|
API 索引
String类下常用API
String类下常用API
43 1
|
2月前
|
安全 Java
String类-知识回顾①
这篇文章回顾了Java中String类的相关知识点,包括`==`操作符和`equals()`方法的区别、String类对象的不可变性及其好处、String常量池的概念,以及String对象的加法操作。文章通过代码示例详细解释了这些概念,并探讨了使用String常量池时的一些行为。
String类-知识回顾①

热门文章

最新文章