• Java(常用类01)


    Java(常用类01)

    参考视频:445. 常用类-每天一考(尚硅谷)

    1. String

    1.1 String的特性

    • String类:代表字符串。
    • String是一个final类,代表不可变的字符序列。(不可变 性)
    • 字符串是常量,用双引号 引起来表示。它们的值在创建后不能更改。
    • String对象的字符内容是存储在一个字符数组value[]中的。
    • String实现了Serializable接口,表示字符串支持序列化。
    • String实现了Comparable接口,表示String可以比较大小。
    • 通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。
    • 字符串常量池中是不会存储相同内容的字符串的。

    1.2 示例

    在这里插入图片描述

    • Test01
    public class Test01 {
        public static void main(String[] args) {
            String s1 = "Java";
            String s2 = "EE";
    
            String s3 = "JavaEE";
            String s4 = "Java" + "EE";
    
            String s5 = s1 + "EE";
            String s6 = "Java" + s2;
    
            System.out.println(s3==s4);//true
            System.out.println(s3==s5);//false
            System.out.println(s5==s6);//false
            
            String s8 = s5.intern();
            System.out.println(s3==s8);//true
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 当两个String字符串字面量(常量)连接时,会在常量池中生成或寻找。
    • 当其中一个常量换成变量进行连接时,就如同new一样,在堆中生成新的字符串。
    • 如果拼接的结果调用intern()方法,返回值就在常量池中。
    • 如果前面加了final,变成了常量,就在常量池中。

    • String与基本数据类型、包装类之间的转换
      在这里插入图片描述

    2. StringBuffer & StringBuilder

    2.1 StringBuffer

    • Since 1.0
    • 可变的字符串序列
    StringBuffer b = new StringBuffer("111");
    b.append("222");
    System.out.println(b);
    
    • 1
    • 2
    • 3
    • StringBuffer 在字符串拼接上面直接使用 synchronized 关键字加锁,从而保证了线程安全性。

    2.2 StringBuilder

    • Since 5.0
    • StringBuilder 其实是和 StringBuffer 几乎一样,只不过 StringBuilder 是非线程安全的。
    • 并且,为什么 + 号操作符使用 StringBuilder 作为拼接条件而不是使用 StringBuffer 呢?我猜测原因是加锁是一个比较耗时的操作,而加锁会影响性能,所以 String 底层使用 StringBuilder 作为字符串拼接。

    2.3 StringBuilder 和 StringBuffer 的扩容问题

    • StringBuilder 的初始容量是 16,当然也可以指定 StringBuilder 的初始容量。
    • 扩容后的字符串长度会是原字符串长度增加一倍 + 2如果扩容后的长度还比拼接后的字符串长度小的话,那就直接扩容到它需要的长度 newCapacity = minCapacity,然后再进行数组的拷贝。

    2.4 String和StringBuffer、StringBuilder之间的转换

    • String → StringBuffer、StringBuilder:
      • 调用StringBuffer、StringBuilder构造器
    • StringBuffer、StringBuilder → String:
      • 调用String构造器
      • 调用StringBuffer、StringBuilder的toString()方法

    3. Date

     
     

    —————— THE END ——————
     
  • 相关阅读:
    资料分析-笔记
    目标检测——Faster RCNN系列算法原理介绍
    消息中间件第八讲:消息队列 RocketMQ 版实战、集群及原理
    前端开发ui设计稿在网页上的实现
    15. 三数之和
    【Hello Algorithm】认识一些简单的递归
    单调栈-84. 柱状图中最大的矩形
    2022年最新青海建筑八大员(标准员)考试试题及答案
    ​力扣解法汇总754. 到达终点数字
    DGIOT数字工厂工单结构介绍
  • 原文地址:https://blog.csdn.net/Zachsj/article/details/126265974