第一讲 类加载器
来源:互联网 发布:淘宝网天猫商城男装 编辑:程序博客网 时间:2024/05/17 04:16
package com.classDownload;class Singleton{ private static Singleton singleton=new Singleton(); public static int count1; public static int count2=0; private Singleton(){ count1++; count2++; } public static Singleton getInstance(){ return singleton; }}public class ClassDownLoad1Test { public static void main(String [] args){ Singleton singleton=Singleton.getInstance(); System.out.println("count1="+singleton.count1); System.out.println("count2="+singleton.count2); }}
count1=1count2=0
再看下面一段代码
package com.classDownload;class Singleton{ public static int count1; public static int count2=0; private static Singleton singleton=new Singleton(); private Singleton(){ count1++; count2++; } public static Singleton getInstance(){ return singleton; }}public class ClassDownLoad1Test { public static void main(String [] args){ Singleton singleton=Singleton.getInstance(); System.out.println("count1="+singleton.count1); System.out.println("count2="+singleton.count2); }}
结果:count1=1
count2=1
说明:当我们运行程序时,代码会调用java虚拟机(JVM)进程,当程序运行结束时,JVM进程也将会停止
导致虚拟机停止运行得条件:
1.执行System.exit();这是我们手动得停止
2.程序执行完
3.程序抛出异常
4.操作系统自身原因
好了,正式开始说类加载器
1.类的加载,连接,初始化
加载:查找并加载二进制数据,从哪里找呢,我们编译.java文件时候,会生成.class文件,虚拟机会从我们生成得.class文件中查找,找到之后并加载到内存里面。
连接:
(1)验证:验证.class文件得正常性
(2)准备:为类得静态变量分配内存,并初始化值默认值,此时我们得实例变量都不会分配内存,只有当我们new一个实例对象才会分配内存,这就是静态变量和实例变量的区别。
(3)解析:把类中的符号引用转化为直接引用
初始化:为类得静态变量赋予正确的初始值,这里得初始化正确值和准备阶段得初始化默认值是有区别的,比如int 默认值是0,我们初始化为3,那么准备阶段的值为0,初始化阶段为3
2.java程序对类的使用方式可分为两种(所有java虚拟机实现必须在每个类或者接口被java程序首次使用时才初始化他们)
主动使用:(一共六种)
(1)创建类的实例,new一个对象
(2)访问类或者接口的静态变量,或者对静态变量赋值
(3)调用类的静态方法
(4)反射,如Class.forName();
( 5 )初始化一个类的子类
(6)java虚拟机启动时被标注为启动类的类
被动使用:其余全部是被动使用
- 第一讲 类加载器
- 第二讲 类加载器
- 第四讲 类加载器的委托
- 类和对象第一讲
- 第一讲
- 第一讲
- 第一讲
- 几篇好的讲 class loader 类加载器的文章
- 第一讲 使用垃圾回收器
- 第一讲 使用垃圾回收器
- 私房菜 第一讲 数据库类封装
- OC 第一讲 类与对象
- 第一讲与第二讲
- spring心得1--spring入门介绍@bean的加载初讲@第一个spring项目helloWord
- HTML基础-第一讲
- NHibernate第一讲
- 第一讲 基本概念
- C++第一讲
- Effect(二十一)—— SM_TransRimShaderIrisator
- Gym 101572 K.Kayaking Trip【二分+贪心】
- 1069. 微博转发抽奖(20)
- 第三篇 elasticsearch的group by+avg+sort等聚合分析
- linux压缩和解压缩命令大全
- 第一讲 类加载器
- LeetCode 78. Subsets (Medium)
- “北京地区禁售 iPhone 6”新闻背后的真相:喷你一脸狗血
- webService快速入门入门系列《1》-----url调用
- 一脸懵逼:京东618手机大战有几个“第一”?
- GeekPwn(极棒)全球寻找未来黑客 上海旧金山同步开赛
- 野心不小!IBM联手一家汽车制造商推出自动驾驶巴士
- VR、基因治疗、硅谷华丽的背后,真实情况是这样的 | 硅谷锋向周刊
- docker简介