1. String是什么 Java中字符串是一个比较特殊的对象,可以使用new,也可以不通过new来创建字符串对象。 String s1 = new String("abc"); //在堆中 String str = "abc"; //在常量池中(ps: 常量池为方法区的一部分,字符串在常量池中保存 ...
分类:
其他好文 时间:
2018-09-10 00:55:31
阅读次数:
197
/** * String字符串: * 由多个字符组成的一串数据 * 字符的本质是一个字符数组 * * 两种创建方式的存放地不同 * (方法区的)常量池:String s = "123"; 直接赋值 * 堆:String s = new String("123"); 通过构造方法(先在堆里new St ...
分类:
其他好文 时间:
2018-09-09 23:12:05
阅读次数:
216
一、 运行时数据区域 一、 运行时数据区域 1.1 程序计数器 记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。 1.2 Java 虚拟机栈 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一 ...
分类:
编程语言 时间:
2018-09-09 11:54:58
阅读次数:
132
1.类的生命周期 2.初始化被触发的情况 初始化前自然要完成加载、验证、准备这三个动作。 3.类加载过程 类加载全过程分为:加载、验证、准备、解析、初始化这5个阶段所执行的具体操作。 所以不触发初始化就不会进行类加载,懒加载也由此而来。 如 类文件中有个 a.f() 加载时把a放入方法区的常量池中, ...
分类:
其他好文 时间:
2018-09-08 22:45:28
阅读次数:
205
今天翻看书时遇到了这样一个问题,对于String.intern()方法又有了一些认识和看法。首先我们看它的api 大意就是intern()方法会在常量池中记录首次出现的实例引用,但是在jdk1.6中却不是这样。jdk1.6中会将首次遇到的字符串实例 复制一份放在持久代里,返回的则是永久代中对于这个字 ...
分类:
编程语言 时间:
2018-09-07 22:52:24
阅读次数:
233
public class TestString { public static void main(String[] args) { /** * **** String类型、包装类型、常量池(与堆、栈) * * * 1)== :比较桟区地址 * 2)equals:String/Integer的 eq ...
分类:
其他好文 时间:
2018-08-29 01:01:53
阅读次数:
195
对象的创建大致过程: 虚拟机遇到一条new指令时,首先会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,则必须先执行相应的加载过程。 在类加载检查通过以后,接下来将为新生对象分配内存。对象所需内存的大小在类加载完成后便可 ...
分类:
编程语言 时间:
2018-08-28 14:23:03
阅读次数:
133
?2.1.1 ?如何理解方法内的变量线程安全,实例变量非线程安全? 方法内变量是每个方法内部的局部变量,一定是线程安全的。 实例变量,因为不同的线程可以并发的访问这些个实例变量,所以会存在非线程安全的问题。 ?为什么int类型和string类型属性不能够作为同步监视器呢? 设想创建两个引用同时指向" ...
分类:
编程语言 时间:
2018-08-28 11:30:42
阅读次数:
204
java.lang.String;是字符串类型,关于String类,首先需要注意以下几点: 1.字符串一旦创建不可改变。“abc”字符串对象一旦创建,不可再变成“abcd”; 2.提升字符串的访问效率:在程序中使用了“缓存”技术。所以在Java中所有使用“双引号” 括起来的字符串都会在“字符串常量池 ...
分类:
编程语言 时间:
2018-08-26 14:50:53
阅读次数:
183
When 什么时候需要了解String的intern方法: 面试的时候(蜜汁尴尬)!虽然不想承认,不过面试的时候经常碰到这种高逼格的问题来考察我们是否真正理解了String的不可变性、String常量池的设计以及String.intern方法所做的事情。但其实,我们在实际的编程中也可能碰到可以利用S ...
分类:
编程语言 时间:
2018-08-23 22:13:27
阅读次数:
181