创建String的几种方式以及背后的存取规则: 1,String str1 = new String("1900");(后面不带+),这个过程中,实际上有两个对象生成,一是在堆上创建了"1900"这个字符串对象,同时,检查常量池,池中如果有"1900",不管是指向"1900"的引用还是实打实的串,就 ...
分类:
其他好文 时间:
2020-02-07 18:34:45
阅读次数:
54
Constant Pool常量池的概念: 在讲到String的一些特殊情况时,总会提到String Pool或者Constant Pool,但是我想很多人都不太明白Constant Pool到底是个怎么样的东西,运行的时候存储在哪里,所以在这里先说一下Constant Pool的内容.String ...
分类:
其他好文 时间:
2020-02-06 12:41:58
阅读次数:
48
String在Java里面JDK1.8后它属于一个特殊的类,在创建一个String基本对象的时候,String会向“ 字符串常量池(String constant pool)” 进行检索是否有该数据(字符串)存在,如果存在则向该数据进行实例引用,返回到创建的String对象。所以当创建两个不同名字, ...
分类:
其他好文 时间:
2020-02-05 16:34:23
阅读次数:
87
内存中对象的创建、对象的结构以及访问方式。 一、对象的创建 在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢? (一)判断类是否加载。虚拟机遇到一条new指令的时候,首先会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号代表的类是否被 ...
分类:
编程语言 时间:
2020-02-03 18:42:05
阅读次数:
105
OOM 异常 (OutOfMemoryError) OOM 异常 (OutOfMemoryError) Java 堆溢出 Java 虚拟机栈和本地方法栈溢出 方法区和运行时常量池溢出 直接内存溢出 Java 堆溢出 出现标志:java.lang.OutOfMemoryError: Java heap ...
分类:
编程语言 时间:
2020-02-01 19:47:03
阅读次数:
109
字符串 字符串字面量:就是指这个字符串本身,比如"Java","Hello"。 字符串对象:比如new String("abc"),或者直接String s="str",后面的"str"也是一个字符串对象。 字符串引用:引用就是一个变量,指向对应的字符串对象。 常量池 class常量池 Java源文 ...
分类:
编程语言 时间:
2020-01-29 21:41:09
阅读次数:
73
1,String类是final修饰的,不能被继承 2,String类的底层使用数组存储 JDK1.9之前:char[]value JDK1.9之后:byte[]value 3,String类的对象不可变 (1),字符串常量池中存储字符串常量,可以共享 (2),每次修改都会产生新对象,频繁修改的话效率 ...
分类:
其他好文 时间:
2020-01-26 22:26:38
阅读次数:
89
1 字符串的构造方法和直接创建 2 字符串的常量池 在堆内存中有这样一个空间,叫做字符串常量池,双引号直接写上的字符串(str1,str2)在常量池中,字符串常量池中的字符串对象保存的是byte字节数组的地址值。 ...
分类:
编程语言 时间:
2020-01-22 10:46:09
阅读次数:
75
java字符串String的最大长度,要分两个阶段,编译阶段及运行时阶段 编译阶段: 在我们使用字符串字面量直接定义String的时候,会把字符串在常量池中存储一份。常量池中的每一项常量都是一个表,都有自己对应的类型。String类型,有一张固定长度的CONSTANT_String_info表用来存 ...
分类:
编程语言 时间:
2020-01-20 14:37:56
阅读次数:
91
本文导读: 1、前奏,举个生活中的小栗子 2、为何Java类型加载、连接在程序运行期完成? 3、一个类在什么情况下才会被加载到JVM中? 什么是主动使用、被动使用?代码示例助你透彻理解类初始化的时机。 4、类的加载(Loading)内幕透彻剖析 类加载做的那些事儿、双亲委派模型工作过程、ClassL ...
分类:
其他好文 时间:
2020-01-20 12:35:13
阅读次数:
77