public class TestCase
{ static String ab = "ab"; static String getA() { return "a"; } static String getAB() { return "ab"; } public static void main(S...
分类:
编程语言 时间:
2015-01-22 00:12:52
阅读次数:
256
/* java.lang.String 是字符串类型 注意:只要采用双引号赋值字符串,那么在编译期将会放到方法区中的字符串的常量池里, 如果是运行时对字符串.加或相减会放到堆中(放之前会先验证方法区中是否含有 相同的字符串常量,如果存...
分类:
编程语言 时间:
2015-01-18 22:41:01
阅读次数:
319
本文介绍Java中String对象的理解,以及试图探讨常量池的知识
分类:
编程语言 时间:
2015-01-17 22:09:41
阅读次数:
276
本文将详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域:◆寄存器:我们在程序中无法控制◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中◆堆:存放用new产生的数据◆静态域:存放在对象中用static定义的静态成员◆常量池:存放常量◆非RA...
分类:
编程语言 时间:
2015-01-06 11:40:36
阅读次数:
195
本文主要通过分析Java内存分配的栈、堆以以及常量池详细的讲解了其的工作原理。一、java虚拟机内存原型寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆:存放用new产生的数据静态域:存放在对象中用static定义的静态成员常量池:存放常量非R...
分类:
编程语言 时间:
2014-12-30 09:16:17
阅读次数:
156
一、性质不同(1)final为关键字;(2)finalize()为方法;(3)finally为为区块标志,用于try语句中;二、作用(1)final为用于标识常量的关键字,final标识的关键字存储在常量池中(在这里final常量的具体用法将在下面进行介绍);(2)finalize()方法在Obje...
分类:
编程语言 时间:
2014-12-28 22:10:53
阅读次数:
239
在JDK7之前方法调用的字节码指令共有四条,invokeinterface、invokespecial、invokestatic、invokevirtual。由这四条指令完成Java中所有类型方法的调用。
invokeinterface(调用接口方法)
无符号数indexbyte1和indexbyte2共同组件一个当前类常量池索引(index),该索引值为(indexby...
分类:
其他好文 时间:
2014-12-18 22:19:37
阅读次数:
350
String类的特点: 字符串对象一旦被初始化就不会被改变,字符串存储在字符串常量池中(字符串缓冲区)。如果池中没有就创建,如果有就直接拿过来用。代码验证如下: String s = "abc";//在常量池中创建了一个字符串对象 String s1 = "abc";//true//s与s1内容相....
分类:
其他好文 时间:
2014-12-18 13:25:09
阅读次数:
151
[last updated:2014/11/27] NO1.常量池在class文件的什么位置? ??????????我的上一篇文章《Java虚拟机原理图解》 1、class文件基本组织结构中已经提到了class的文件结构,在class文件中的魔数、副版本...
分类:
编程语言 时间:
2014-12-17 13:12:10
阅读次数:
477
魔数
每个class文件的头4个字节称为魔数(Magic Number),其值为:0xCAFEBASE,它的唯一作用是用于确定这个文件是否为一个能被虚拟机接受的class文件。使用魔数而不是扩展名来进行识别主要是基于安全的考虑,因为文件的扩展名可以随意地被改动。
版本号
紧接着魔的4个字节存储的是class文件的版本号:第5和第6个字节是次版本号(Minor Version)...
分类:
编程语言 时间:
2014-12-11 17:31:34
阅读次数:
194