第九章 JAVA常用类

9 java常用类

9.1 字符串相关的类

9.1.1 String类

9.1.2 String的概述和String的不可变性

String:字符串,使用一对" "引起来表示。

①String声明为final的,不可被继承

②String实现了Serializable接口:表示字符串是支持序列化的。

 实现了Comparable接口:表示String可以比较大小。

③String内部定义了final char\[\] value用于存储字符串数据(JDK 9及以后是 byte\[\] value)

④String:代表不可变的字符串序列。简称:不可变性。

 体现:对字符串重新赋值;对字符串进行连接操作;调用字符串的replace() 等方式修改字符串时,需重新指定内存区域赋值,不会使用原有的value进行赋值。

⑤通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串声明在常量池中。

⑥字符串常量池中不会储存相同内容的字符串。

java 复制代码
public final class String implements Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc {
    // Java 8 及之前(String.java)
    private final char[] value;
    
    // Java 9 及之后(String.java)
    private final byte[] value;

    private int hash;
java 复制代码
public class MyString {
    public static void main(String[] args) {
        String a = "abc";
        String b = "abc";
        // true,a和b都"abc",内存地址指向常量池中的同一个
        System.out.println(a == b);
        // 405662939;405662939 ,a和b的HashCode是一样的
        System.out.println(System.identityHashCode(a) + ";" + (System.identityHashCode(b)));
        
        a = a.replace("a", "b");
        // a = bbc; b = abc,原来指向a的内存地址不变,会重新指定一个内存地址给a
        System.out.println("a = " + a + "; b = " + b);
        // 987405879;405662939 ,a和b的HashCode不一样,b还是原来的HashCode,a换了一个新的HashCode
        System.out.println(System.identityHashCode(a) + ";" + (System.identityHashCode(b)));
    }
}

9.1.3 String不同实例化方式对比

方式一:通过字面量定义的方法(声明在常量池中)

方式二:通过new+构造器的方式(定义在堆空间中)

9.2 JDK 8之前的日期时间API

9.3 JDK 8中新日期时间API

9.4 Java比较器

9.5 System类

9.6 Math类

9.7 BigInteger与BigDecimal

相关推荐
OPEN-F2 分钟前
Python进阶教程:单元测试与代码质量
开发语言·python·单元测试
阿里嘎多学长2 分钟前
2026-08-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
野生技术架构师5 分钟前
Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器
java·spring boot·后端
其实防守也摸鱼11 分钟前
Codex破局:前端组件秒级生成的技术文章大纲
开发语言·前端·人工智能·学习·安全·web安全
AI人工智能+电脑小能手13 分钟前
大白话说Java设计模式-28-模板方法模式(业务实战篇)
java·设计模式·模板方法模式·spring源码·订单系统·代码复用
奥莱维15 分钟前
KNX酒店方案_KNX专用线与高端酒店技术逻辑
java·服务器·前端·数据库
Logintern0922 分钟前
装饰器和洋葱模式的区分
开发语言·python·架构
工业一体机老司机24 分钟前
Linux工业一体机自启动服务配置:systemd服务单元编写与开机优化实战
java·linux·服务器
冻柠檬飞冰走茶37 分钟前
《数据结构实验指导-C++语言版》 在顺序表 list 中查找元素 x
开发语言·数据结构·c++·算法·list
Brilliantwxx38 分钟前
【C++】 高阶数据结构图(1)并查集
开发语言·数据结构·c++