栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java核心知识:String类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java核心知识:String类

目录
  • 简介
  • 字符串创建
  • 比较
  • 获取
  • 截取
  • 转换
  • 分割

简介

字符串类。是java里的核心类。

String类被final关键字修饰,表示String类不能被继承,并且它的成员方法都默认为final方法。

String类数据效果上相当于char[] 数组,底层是byte[]字节数组,并且char数组被private和final修饰,字符串一旦创建就不能再修改。

常量池:

JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化,为字符串开辟一个字符串常量池,类似于缓存区。创建字符串常量时,首先坚持字符串常量池是否存在该字符串,存在该字符串,返回引用实例,不存在,实例化该字符串并放入池中。

实现该优化的基础是因为字符串是不可变的,可以不用担心数据冲突进行共享。

程序中直接用双引号创建的字符串,就在字符串常量池中。字符串常量池则存在于堆区。

字符串创建

1.直接创建,如"abc"

2.构造方法:public String(),创建空字符串

3.构造方法:public String(char[] array),根据字符数组创建

4.构造方法:public String(byte[] array),根据字节数组创建

public class Demo07String {
    public static void main(String[] args) {
        // 空字符串
        String s1 = new String();
        System.out.println(s1);

        // 通过字符数组
        String s2 = new String(new char[] {'A', 'B', 'C'});
        System.out.println(s2);

        // 通过字节数组
        String s3 = new String(new byte[] {97, 98, 99});
        System.out.println(s3);

        // 直接创建
        String s4 = "";
        System.out.println(s4);
        String s5 = "ABC";
        System.out.println(s5);

    }
}
比较

使用 == 比较字符串,比较的是地址。要比较字符串的值,使用equals。

还有个方法equalsIgnoreCase,忽略大小写

public class Demo08StringEquals {
    public static void main(String[] args) {
        String s1 = "ABC";
        String s2 = "ABC";
        String s3 = new String(new char[] {'A', 'B', 'C'});
        String s4 = "abc";

        // 比较
        // == 比较地址
        System.out.println(s1 == s2);  // true
        System.out.println(s2 == s3);  // false
        // equals 比较内容
        System.out.println(s2.equals(s3));  // true
        // equalsIgnoreCase 忽略大小写
        System.out.println(s1.equals(s4));  // false
        System.out.println(s1.equalsIgnoreCase(s4));  // true

    }
}
获取

length():获取字符串长度

concat(String str):拼接字符串,返回新的字符串

charAt(int index):获取指定索引位置的单个字符,索引从0开始

indexOf(String str):查找指定字符串在本字符串首次出现的位置,未找到返回-1

public class Demo09StringGet {
    public static void main(String[] args) {
        String str1 = "dasdjafasfnasgaletq nx";

        // 字符串长度
        System.out.println(str1.length());  // 22

        // 拼接
        String str2 = str1.concat("afa");
        System.out.println(str2);  // dasdjafasfnasgaletq nxafa

        // 获取第五个字符
        System.out.println(str1.charAt(4));  // j

        // "dja"在str1首次出现的位置
        System.out.println(str1.indexOf("dja"));  // 3
        System.out.println(str1.indexOf("ggg"));  // -1
    }
}
截取

substring(int index):从参数索引位置到末尾

substring(int begin, int end):截取索引从begin开始到end范围的字符,不包含end

public class Demo10StringSub {
    public static void main(String[] args) {
        String str = "dasdjafasfnasgal";

        String str1 = str.substring(4);
        System.out.println(str1);  // jafasfnasgal
        String str2 = str.substring(2, 6);
        System.out.println(str2);  // sdja

    }
}
转换

toCharArray():将字符串转为字符数组并返回

getBytes():获取字符串底层字节数组

replace(CharSequence oldString, CharSequence newString):字符串替换

import java.nio.charset.StandardCharsets;

public class Demo11StringConvert {
    public static void main(String[] args) {
        String str = "dasdjafasfnasgal";

        // 转为字符数组
        char[] chars = str.toCharArray();
        System.out.println(chars);
        System.out.println(chars[0]);
        System.out.println(chars.length);

        // 转为字节数组
        byte[] bytes = str.getBytes();
        for (int i = 0; i < bytes.length; i++) {
            System.out.println(bytes[i]);
        }

        // 替换
        str.replace("d", "m");
        System.out.println(str);

    }
}
分割

split(String regex)

按照某个正则表达式参数分割原字符串,得到一个字符串数组

package base6_common_api;

public class Demo09StringSplit {
    public static void main(String[] args) {
        String s1 = "aa,bb,cc";

        // 按逗号分割字符串
        String[] arr1 = s1.split(",");
        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i]);
        }

        // 按照英文点分割
        String s2 = "aa.bb.cc";
        String[] arr2 = s2.split("\.");
        for (int i = 0; i < arr2.length; i++) {
            System.out.println(arr2[i]);
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号