· StringChangLiangChi
1 package com.miaoshaProject.demo; 2 3 /** 4 * @Author wangshuo 5 * @Date 2022/5/9, 17:42 6 * 字符串常量池 7 */ 8 public class StringChangLiangChi { 9 10 /* 11 jvm为了提高性能和减少开销,在实例化字符串常量时进行了一些优化 12 字符串类维护了一个字符串池,当代码创建字符串常量时,jvm会先检查常量池,若已存在,直接返回池中实例的引用 13 */ 14 //使用常量池 15 static class Program_A { 16 public static void main(String[] args) { 17 String a = "hello"; 18 String b = "hello"; 19 //比较值 20 System.out.println(a.equals(b)); 21 //比较内存地址 22 System.out.println((a == b)); 23 } 24 } 25 26 /* 27 new 的 String 不会指向常量池的对象 28 */ 29 //不使用常量池 30 static class Program_B { 31 32 public static void main(String[] args) { 33 String a = "hello"; 34 String b = new String("hello"); 35 //比较值 36 System.out.println(a.equals(b)); 37 //比较内存地址 38 System.out.println((a == b)); 39 } 40 } 41 42 //intern()方法 将字符串指向常量池中的某一个,返回一个保留池字符串 43 static class Program_C{ 44 45 public static void main(String[] args) { 46 String a = "hello"; 47 String b = new StringBuilder("he").append("llo").toString(); 48 String c = b.intern(); 49 50 //比较值 51 System.out.println(a.equals(c) && a.equals(b)); 52 //比较内存地址 53 System.out.println((a == b)); 54 System.out.println((a == c)); 55 } 56 } 57 }
本文来自博客园,作者:荣慕平,转载请注明原文链接:https://www.cnblogs.com/rongmuping/articles/16250985.html
浙公网安备 33010602011771号