String和常量池
jdk1.6之前常量池属于永久代,jdk1.7以后移到堆中。
String s1 = "abc";// 放在常量池中String s2 = "abc";// 从常量池中查找String s3 = new String("abc");//new放在堆中String s4 = new String("abc");String s5 = s1.intern();String s6 = s3.intern();System.out.println(s1 == s2);System.out.println(s1 == s3);System.out.println(s1 == s5);System.out.println(s1 == s6);System.out.println(s3 == s4);System.out.println("==================");System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));System.out.println(s1.equals(s5));System.out.println(s3.equals(s4));
==:比较引用地址一样
equals:比较的是两个对象的内容是否一样
当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。
String.intern()方法获得在常量池中的字符串引用,如果常量池中没有则会将字符串加入,然后将该引用放入list持有
确保不会被回收,jdk报错permgem space发生在永久代 jdk7报错 java heap space发生在堆
List<String> list = new ArrayList<>();int i = 0;while (true) {list.add(String.valueOf(i++).intern());}
String和常量池相关推荐
- JavaDay16-P104-P142—二分法查找—String类—常量池—包装—装箱、拆箱—NumberFormatException
1.二分法查找--建立在数组排序之上 案例程序: class BinarySearch{public static void binarySearch(int[] arr,int des) {Arra ...
- 百无聊赖之JavaEE从入门到放弃(十一)string类 常量池原理 内部类
目录 一.String类和常量池 1.String基础知识 2.常量池 二.内部类 1.概念 2.内部类的作用 3.注意 4.非静态内部类 5.静态内部类 6.匿名内部类 7.局部内部类 一.Stri ...
- String 字符串常量池
java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String实现了Seria ...
- JDK1.8+的String(字符串)常量池理解
在工作中使用String的地方很多,但是有时候会产生一点疑问,那就是项目中用到了这么多String,会不会对内存造成一定的压力,会不会降低程序的性能,字符串的值都存放到哪里去了?所以就深入了解了一下. ...
- 3.内存分配、逃逸分析与栈上分配、直接内存和运行时常量池、基本类型的包装类和常量池、TLAB、可达性分析算法(学习笔记)
3.JVM内存分配 3.1.内存分配概述 3.2.内存分配–Eden区域 3.3.内存分配–大对象直接进老年代 3.3.1.背景 3.3.2.解析 3.4.内存分配–长期存活的对象进去老年代 3.5. ...
- Error,java对常量池来说字符串xxx的UTF8表示过长
客户端这里自己模拟json数据时,一时没忍住搞得json字符串太长了(idea上大概有600多行吧),这个问题就蹦出来了.老方法直接google.百度然后看到一堆有关String 字符串常量池字符最大 ...
- (全网最详细最有深度)超过1W字深度剖析JVM常量池
字符串常量池存储在堆内存空间中,创建形式如下图所示. 当使用String a="Hello"这种方式创建字符串对象时,JVM首先会先检查该字符串对象是否存在与字符串常量池中,如果存 ...
- Java常量池的一点理解
关于网上的一个面试题,求输出结果: /** * * @author DreamSea 2011-11-19 */ public class IntegerTest { public static vo ...
- 第四篇:由浅入深,虚拟机常量池底层解析
文章目录 一.前言 二.常量池的引入:从常量到常量池 2.1 常量 2.2 Class文件中的常量池 2.3 方法区中的运行时常量池 2.4 常量池的好处 三.常量池的介绍:JVM三种常量池 3.1 ...
最新文章
- Java查询大文本文件的处理方法
- HDU 2084 数塔 DP
- 谁来护航储能电池安全?
- 第27章:MongoDB-索引--唯一索引
- SEC SOC Test Board 在WIN 7下的安装
- DM368 Uboot
- 一分钟教你用Excel从统计局抓数据!
- Python抓取单个网页中所有的PDF文档
- docker-compose的一些理解
- 检测分割算法改进(篇二) Residual Feature Augmentation(RFA模块)及Adaptive Spatial Fusion(ASF模块)
- jquery 表单验证插件
- LaTeX调整页眉宽度适应文本
- 关于java web开发中的很多小问题集锦
- Educational Codeforces Round 121 (Rated for Div. 2) unr场 A B C
- KEYSIGHT示波器 MSO-X 3024A 简单操作说明
- centos 中英文输入法切换
- IDEA自动导包设置
- 电子邮件怎么注册,电子邮件地址怎么写你知道吗?
- C语言 求众数 程序
- 第二篇:java调用公共数据接口:上海市车辆基本信息查询(java调用soap接口)
热门文章
- 和12岁小同志搞创客开发:手撕代码,做一款火焰报警器
- 【TensorFlow2.0】(1) tensor数据类型,类型转换
- Windows下配置Maven环境变量
- ROS Melodic安装、配置和使用turtlebot2(集成众多源代码直接下载)
- UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid start byte
- SpringBoot上传文件大小限制
- 忠告初学者学习Linux系统的8点建议
- UML中的六种关系的比较与学习
- 触控(Touch) 、 布局(Layout)
- 《需求分析与系统设计》读书笔记1