String常量池

字符串常量池

1. 创建对象的思考

引出例子:

package Test;
public class Test {
    public static void main(String[] args) {
            String s1 = "hello";
            String s2 = "hello";
            String s3 = new String("hello");
            String s4 = new String("hello");
            System.out.println(s1 == s2); // true
            System.out.println(s1 == s3); // false
            System.out.println(s3 == s4); // false

    }
}

通过运行程序 s1和s2引用的是同一个对象,而s3和s4不是。

在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、 更节省内存,Java为8种基本数据类型和String类都提供了常量池

为了节省存储空间以及程序的运行效率,Java中引入了:

1. Class文件常量池:每个.Java源文件编译后生成.Class文件中会保存当前类中的字面常量以及符号信息

2. 运行时常量池:在.Class文件被加载时,.Class文件中的常量池被加载到内存中称为运行时常量池,运行时常 量池每个类都有一份

3. 字符串常量池

2. 字符串常量池(StringTable)

字符串常量池在JVM中是StringTable类,实际是一个固定大小的HashTable

3. String对象创建

例子1:

public static void main(String[] args) {

//1. 直接使用字符串常量进行赋值

String str1 = "hello";
String str2 = "hello";


//2. 通过new创建String类对象

String str3 = new String("hello");
String str4 = new String("hello");
}

例子2:

package Test;

public class Test {
    public static void main(String[] args) {
        char[] ch = new char[]{'a', 'b', 'c'};
        String s1 = new String(ch);
        String s2 = "abc";
        System.out.println(s1 == s2);
    }
}

添加 intern方法

该方法的作用是手动将创建的String对象添加到常量池中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值