1. Class文件加载流程
在java中,类装载器把一个类装载到java虚拟机中,经过装载,链接和初始化;链接又包括校验,准备和
解析。必须严格按照顺序执行的。
装载:查找和导入类和接口的二进制数据(.class文件)
链接:执行校验,准备和解析(可选)
校验:检查导入类和接口数据的正确性
准备:给类的静态变量分配内存并将其初始化默认值
解析:将符号引用转换成直接引用
初始化:调用java代码,初始化类的静态变量(把类变量初始化正确初始值)和静态java代码块
2. 变量初始化
变量可以分为局部变量和全局变量,全局变量又分为实例变量和类变量(static静态变量);
局部变量一般是在方法内部的变量,由于其作用域在方法的内部有效,所以线程是安全的; 不能由public,private ,protected,等修饰;也不能由static修饰。
类变量如果用public修饰,则其作用域是全局的,如果用private修饰则其作用域只在类的内部。一般方法和静态方法跟局部变量和静态变量的关系一样。
栈--长度固定,由编译器自动释放;
堆--数据长度不固定,动态分配,垃圾回收器(gc)可以回收;
全局区(也叫静态区)--存放静态变量和全局变量;
类的静态变量在内存中只有一个,在java虚拟机叫做类的过程中位静态变量分配内存,静态变量位于方法去,被类的所有实例共享。器生命周期取决于类的生命周期。
实例变量取决于类的实例,当创建一个实例时,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区,不一定连续的空间。
局部变量在方法内部或者某些循环中,执行到她的时候直接在栈中开辟内存并使用。当局部变量脱离作用域,则释放内存,局部变量必须手工初始化。
局部变量位于栈区,静态变量位于方法区,实例变量位于堆区,方法的字节码位于方法区,对象本身位于堆区,对象的引用位于栈区
一个class文件是由类加载器加载进来的以后.class文件被加载进来以后放在方法区。
方法本身作为指令的操作码部分,保存在stack中,方法内部变量作为指令的操作数部分,跟在指令的操作码后,保存在stack中。
对象实例及其属性值保存在堆中。
分享到:
相关推荐
资源名称:Java编程基础知识变量与数据类型资源目录:【】11957c6aed0bbd30e284837b53bc3a6f【】2.Java编程基础知识变量与数据类型1.数据类型初阶【】2.Java编程基础知识变量与数据类型10.浮点类型【】2.Java编程...
指向JDK安装后的根目录,如“ C:\Program files\Java\jdk1.8.0_20”,Eclipse、NetBeans等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。 Path 环境变量 指向Java命令程序所在目录,设置Path后,操作系统...
掌握Java的变量和常量 标识符是用来给类、变量、方法、参数等命名的。 Java标识符 public class ComputeArea { double radius, area; void add(int a,int b){ int c = a + b; } Java标识符由数字,字母、下划线及...
JAVA中的关键字、标识符、注释 JAVA中的数据类型、变量、运算符、表达式 JAVA类中方法的调用
关于java的变量的习题,有一些基础题还有答案,初学者适合
Java程序基础成员变量和局部变量PPT优秀资料.pptx
北京动力节点-Java编程零基础教程-047-Java基本语法-变量用法的进一步说明.avi 北京动力节点-Java编程零基础教程-048-Java基本语法-什么是字符编码.avi 北京动力节点-Java编程零基础教程-049-Java基本语法-通过...
java 基础教程 初学java者适用 主要描述java有哪些基本变量,及这些变量占的位数,取值范围,最后简单介绍了下这些变量的转换
交你一步步配置java JDK 及环境变量,android SDK 及环境变量 ,赶紧学习安装吧!!!
C、 A和a在java中是同一个变量; D、 不同类型的变量,可以起相同的名字; 3、为一个boolean类型变量赋值时,可以使用( )方式 A、 boolean = 1; B、 boolean a = (9 >= 10); C、 boolean a="真"; D、 ...
黑马程序员 - Java基础教学 - 03 - 变量的作用域、for循环、break、continue、内存结构
陈宝峰视频-Java基础-02.基本类型与变量定义 wmv格式
第02章 Java编程基础 01 变量与标识符
源代码来自http://blog.163.com/scau_09se01/blog/static/1817110742011214599452 本人在其基础上进行了些许修改,添加JAVA_HOME环境变量,解决了jdk安装路径包含空格时不能正确获取信息的bug
很多人在学习java的时候,也许第一课最容易碰到的最头疼的问题就是环境变量的设置了,在此,我为大家准备了足够详细的文档。 从原理到操作设置一应俱全。希望大家收录哈!
02_Java基础_(变量、运算符)_讲义cxf
JAVA第一阶段基础测试题,java变量,运算符,分支,循环测试题.pdf
本文详细介绍了如何配置Java开发环境变量PATH,并提供了相关示例源码。通过阅读本文,您将学习到以下内容: - 配置环境变量PATH的步骤和方法; - 使用示例源码测试Java环境配置是否成功。 阅读建议: - 在配置...
完整版 Java基础教程 Java入门教程 Java语言程序设计 第2章 变量和运算符(共41页).ppt 完整版 Java基础教程 Java入门教程 Java语言程序设计 第3章 流程控制语句(共37页).ppt 完整版 Java基础教程 Java入门教程 ...
java基础大全相信大家会用到的、JVM、JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。 java语言是跨平台,jvm不是跨平台的。 JRE(Java Runtime Environment):java的运行...