Java学习——类的加载、连接和初始化
-
JVM和类
当调用java命令运行某个java程序时,该命令将会启动一个java虚拟机进程,同一个JVM里的所有线程、所有变量都处于同一个进程里,他们都使用该JVM进程的内存区。
当系统出现以下几种情况时,JVM进程将被终止。
->程序运行到最后正常结束。
->程序运行到使用System.exit()或Runtime.getRuntime().exit()处结束程序。
->程序运行过程中遇到未捕获的异常或错误而结束。
->程序所在平台强制结束了JVM进程。当java程序运行结束时,JVM进程结束,该进程在内存中的状态将丢失。
定义一个包含类变量的类
public class Test{ //定义一个类变量 public static int a = 6; }
定义一个类创建Test类的实例,并访问类变量a
public class Test1{ public static void main(String [] args){ Test a = new Test(); a.a++; System.out.println(a.a); } }
下面也创建Test对象,并访问其类变量a的值
public class Test2{ public static void main(String [] args){ Test b = new Test(); System.out.println(b.a); } }
运行结果:
Text类里的a成员变量是静态变量,同一个类的所有实例的静态变量共享同一块内存区,运行Test1时改变了第一个Test实例的成员变量a,那么第二个Test实例的成员变量a也将搜狐都爱影响,其实并不是这样,因为两次运行java程序处于两个不同的JVM进程中,两个JVM之间不会共享数据。
-
类的加载
类的加载指的是通过类加载器将类的class文件读入内存,并为之创建一个java.lang.Class对象。 -
类的连接
类被加载后,接着将会进入连接阶段,连接阶段负责把类的二进制数据合并到jre中。类连接飞卫如下三个阶段。
(1)验证:检验被加载的类是否有正确的内部结构,并和其他类协调一致。
(2)准备:负责为类的类变量分配内存,并设置默认初始值。
(3)解析:将类的二进制数据中的符号引用替换成直接引用。 -
类的初始化
主要对类变量进行初始化。对类变量指定初始值有两种方式:
(1)声明类变量时指定初始值;
(2)使用静态初始化块为类变量指定初始值。
- java深入学习四之类的加载,连接和初始化
- 深入Java虚拟机JVM类加载初始化学习笔记
- 深入Java虚拟机JVM类加载初始化学习笔记
- Java学习之加载类、扫描注解与字段类型初始化 (改良版)
- java类加载、连接和初始化
- java 类的加载、连接和初始化
- 深入Java虚拟机JVM类加载初始化学习笔记
- 加载web-inf下的xml文件,java连接oracle的几种情况,telnet,tnsping,sqlplus的一点学习
- 深入Java虚拟机JVM类加载初始化学习
- Java中类的加载、连接和初始化
- Java学习之加载类、扫描注解与字段类型初始化
- JVM虚拟机学习笔记01:类的加载、连接、初始化
- 深入Java虚拟机JVM类加载初始化学习笔记
- Java学习总结6——类加载1(类初始化顺序)
- 跟王老师学反射(二):Java类的加载、连接和初始化
- Java 学习笔记01:使用JDBC连接MYSQL数据库
- Class类的加载以及类的产生原理java学习 第十天
- java学习:jdbc连接示例
- java基础-类加载学习笔记
- java学习笔记struts----action初始化时间和次数