一次编译好的class文件是如何到处运行的 5.1 JVM指令集简介 5.1.1 与类相关的指令 5.1.2 方法的定义 5.1.3 属性的定义 5.1.4 其他指令集 5.2 class文件头的表示形式 5.3 常量池 5.3.1 UTF8常量类型 5.3.2 Fieldref,Methodref ...
分类:
其他好文 时间:
2017-08-19 12:44:02
阅读次数:
105
Java没有内置的字符串类型,而是在标准的Java类库中提供了一个预定义类,叫做String。它允许使用+号对字符串进行拼接,当将一个字符串与一个非字符串进行拼接时,后者会被转换成字符串。对于修改字符串String类并没有提供用于修改字符串的方法,并不能对实际字符串进行修改,字符串被声明为常量对象, ...
分类:
其他好文 时间:
2017-08-13 23:27:40
阅读次数:
191
1.名词解释 栈:由JVM分配区域,用于保存线程执行的动作和数据引用。栈是一个运行的单位,Java中一个线程就会相应有一个线程栈与之对应。 堆:由JVM分配的,用于存储对象等数据的区域。 常量池:在编译的阶段,在堆中分配出来的一块存储区域,用于存储显式的String,float或者integer.例 ...
分类:
编程语言 时间:
2017-08-13 20:54:33
阅读次数:
188
JAVA内存模型: 堆区中 保存呢以new关键字创建出的对象 jdk1.7版本之后 字符串常量池也存放在堆区中 栈区中 保存临时变量和参数,每个线程都有自己的栈,每调用一个方法创建一个栈针 方法区 静态成员 类 方法等信息 调用方法的时候 如果参数是基本数据类型,那么传递的是数值 如果参数是引用类型 ...
分类:
编程语言 时间:
2017-08-11 23:49:13
阅读次数:
232
虚拟机执行子系统 一、类文件结构 1.魔数和class版本 1.magic-魔数:0xCAFEBABE;4字节 2.minor_version:次版本,丶之后的数字;2字节 3.major_version:主版本,丶之前的数字;2字节 2.常量池 1.constant_pool_count:常量池常 ...
分类:
编程语言 时间:
2017-08-11 22:04:33
阅读次数:
272
#java值和地址值传递的理解: - 基本数据类型和基本数据类型的封装类都是:值传递 * 形式参数的改变不会影响实际参数的改变(相当于将值复制一份传递给形参,自身没做任何改变) - 引用数据类型都是 地址值传递 * 形式参数的改变会影响实际参数的改变(将地址值赋值给形参,形参就可以指向实参所指向的地 ...
分类:
编程语言 时间:
2017-08-10 23:41:13
阅读次数:
240
参考内容地址:http://www.importnew.com/16433.html 参考内容地址:http://www.cnblogs.com/start1225/p/6690282.html 参考内容地址:http://www.cnblogs.com/ydpvictor/archive/2012 ...
分类:
编程语言 时间:
2017-08-07 12:02:23
阅读次数:
195
1、java会使用常量池来管理曾用过的字符串直接量,例如执行String a = “java”;语句之后,常量池就会缓存一个字符串“java”;如果程序再次执行String b=“java”;系统将会让b直接指向常量池中的“java”字符串,因此a==b将会返回true 2、 对于一个private ...
分类:
其他好文 时间:
2017-08-06 12:29:55
阅读次数:
95
当类被编译为.class文件后,如何在jvm中被加载的呢 总共七个步骤:加载,验证,准备,解析,初始化,使用,卸载。其中加载,验证,准备,初始化,卸载都必须按照顺序来。解析可以在初始化后再开始。使用就可有可无了 先看初始化阶段。有且只有5种情况必须对类进行初始化 (1) 遇到new、getstati ...
分类:
编程语言 时间:
2017-08-05 23:34:22
阅读次数:
235
java创建对象通常的方式是使用new指令,虚拟机会首先检查new指令的参数(也就是new关键字后面跟着的类名)是否能够在常量池中找到一个类的符号引用,并根据这个符号引用检查其代表的类是否已经加载、解析和初始化,如果没有就先执行类的加载过程。类加载检查后,就会给对象分配内存。新生的对象一般会存在于j ...
分类:
编程语言 时间:
2017-08-03 15:08:03
阅读次数:
143