第九章 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

相关推荐
懂点Tech8 小时前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
云和数据.ChenGuang8 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠8 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
美狐美颜SDK开放平台9 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
dtq04249 小时前
C++小案例 - 日志实战
开发语言·c++
星夜离尘569 小时前
MATLAB ADC 码流触顶诊断:命中数、缺口分段与削顶不可辨识性
开发语言·matlab
码匠许师傅10 小时前
【C++三方组件】Qt 概览:桌面 C++ 的事实标准与许可证三轨
开发语言·c++·qt
码匠许师傅11 小时前
【C++三方组件】POCO:跨平台系统编程全家桶
开发语言·c++
silvamux_11 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
bkspiderx11 小时前
基于Socket的广播通信及C语言实现详解
c语言·开发语言·socket·广播·socket的广播通信