String类两种不同的创建方式 String s1 = "zheng"; //第一种创建方式 String s2 = new String("junxiang"); //第二种创建方式 第一种创建方式是编译期在常量池中创建对象,如果常量池中已经存在"zheng"这个String对象,就将地址赋给s
分类:
编程语言 时间:
2016-02-13 19:30:37
阅读次数:
241
Atitit .jvm 虚拟机指令详细解释 1. 一、未归类系列A1 2. 数据mov系列2 2.1. 二、const系列2 2.2. 三、push系列2 2.3. ldc系列 该系列命令负责把数值常量或String常量值从常量池中推送至栈顶。3 2.4. 5.1、load系列A 该系列命令负责把本
分类:
其他好文 时间:
2016-02-09 01:13:34
阅读次数:
383
在jvm规范中,每个类型都有自己的常量池。常量池是某类型所用常量的一个有序集合,包括直接常量(基本类型,String)和对其他类型、字段、方法的符号引用。之所以是符号引用而不是像c语言那样,编译时直接指定其他类型,是因为java是动态绑定的,只有在运行时根据某些规则才能确定具体依赖的类型实例,这正是
分类:
编程语言 时间:
2016-02-07 17:30:45
阅读次数:
177
博客分类: Java综合 一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register)。 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。
分类:
编程语言 时间:
2016-02-07 09:44:21
阅读次数:
252
这一节我们来讨论一下JVM对象建立过程。JVM对象探秘 对象的建立 对象的内存布局 对象的访问定位JVM对象探秘对象的建立对象的建立过程 图一:对象建立过程1、类加载检查。当JVM检测到有一条new指令时,首先先检查该指令的参数是否在常量池中定位到一个类的符号引用,并...
分类:
其他好文 时间:
2016-01-26 23:16:45
阅读次数:
210
test1:package StringTest;public class test1 { /** * @param args */ public static void main(String[] args){ String a = "a1"; ...
分类:
编程语言 时间:
2016-01-24 00:25:00
阅读次数:
201
关键在于。。。你要理解s1=new String("we are students"); s2="We are students";这两个是不一样的。。。。new是用新建一个对象的方法。。。。而后一种是放在常量池中的。。。你一下次再用这种方法去创建的时候。。。就会去常量池里面找,所以s2="We a...
分类:
其他好文 时间:
2016-01-21 23:52:58
阅读次数:
166
Stringa="a"+"b"+"c"创建了几个对象这个问题涉及到了字符串常量池和字符串拼接Stringa="a"+"b"+"c"通过编译器优化后,得到的效果是Stringa="abc"Java中字符串对象创建有两种形式,一种为字面量形式,如Stringstr="droid";另一种就是使用new这种标准的构造对象的方法,如Strings..
分类:
其他好文 时间:
2016-01-09 18:45:38
阅读次数:
138
运行时常量池概述Java运行时常量池中主要存放两大类常量:字面量和符号引用。字面量比较接近于Java语言层面的常量概念,如文本字符串、声明为final的常量值等。
而符号引用则属于编译原理方面的概念,包括了下面三类常量:
- 类和接口的全限定名(包名+类名)
- 字段的名称和描述符
- 方法的名称和描述符运行时常量池位置运行时常量池在JDK1.6及之前版本的JVM中是方法区的一部分...
分类:
其他好文 时间:
2016-01-05 12:46:50
阅读次数:
220
java中字符串的概述1,字符串可以看作是字符数组2,同时也是常量,一旦定义就不能被改变.存储在字符串常量池中。原型:publicfinalcalssStringextendsObjectimplementsSerializable,Compareable,CharSequenceStrings="abc";等同于char[]data={‘a‘,‘b‘,‘c‘};Strings=newString("..
分类:
编程语言 时间:
2015-12-30 00:40:48
阅读次数:
195