学习java程序加载
来源:互联网 发布:淘宝淘金币首页 编辑:程序博客网 时间:2024/05/01 11:59
1.程序加载的含义
程序加载,就是将类文件中的一行行代码放到内存当中,只是放到,并不去执行。
2.什么时候会加载
(1)new一个对象时
(2)使用类中的静态成员
3.加载顺序与在内存中存放位置
举例子来说下。在main函数中有下面语句:Person p=new Person("zhangsan",20);
(1)在栈内存中,开辟main函数空间,建立main函数的变量p
(2)加载Person.class文件到内存,注意不会加载类中的非静态成员变量。
(3)如果Person类中有静态代码块,先执行静态代码块
(4)在堆内存中开辟空间,分配内存地址
(5)在堆内存中建立对象的特有属性,进行默认初始化
(6)对Person类进行显示初始化
(7)执行Person类中的构造代码块
(8)执行Person类中的构造函数
(9)完成所有初始化,将内存地址赋值给栈中的变量p
还有语句:p.setName("lisi")
(1)在栈内存中开辟setName方法的空间,里面有对象的引用this、临时变量name
(2)将p的值赋值给this,this就指向了堆中p的一些东东
(3)将“lisi”赋值给临时变量name
(4)将临时变量的值赋给this.name
代码实例:
person类:
public class Person {
private String name;
private int age = 0;
private static String country = "CN";
Person(String name,int age){
this.name = name;
this.age = age;
}
static{
System.out.println("Person静态代码块被执行");
}
{
System.out.println(name+"^^^"+age);
}
public void setName(String name){
this.name = name;
}
public void speak(){
System.out.println(this.name+"+++++"+this.age);
}
public static void showCountry(){
System.out.println("country="+country);
}
}
main方法调用:
public class StaticCodeDemo {
static {
System.out.println("StaticDemo静态代码块1");
}
public static void main(String[] args){
Person p=new Person("张三",100);
p.setName("李四");
p.speak();
Person.showCountry();
}
static { //静态代码块
System.out.println("StaticDemo 静态代码块2");
}
}
运行结果:
StaticDemo静态代码块1
StaticDemo 静态代码块2
Person静态代码块被执行
null^^^0
李四+++++100
country=CN
可见加载执行顺序是:静态代码块--->构造代码块--->构造函数
- 学习java程序加载
- java程序加载过程
- Java 程序加载过程
- java程序加载过程
- java面板加载图片程序
- java程序加载的知识
- Java程序的加载过程
- java程序的加载过程
- java程序图片加载小结
- java程序的加载过程
- 浅谈Java程序加载机制
- java程序的加载过程
- java程序的加载过程
- JAVA程序加载C++库
- Java--Java程序的加载过程
- java学习Class动态加载
- 学习JAVA类加载器
- Java学习之类加载器
- 输出2.0-1.1的结果
- [转载]IOS开发之----远程推送通知
- 静态成员变量
- Strus2学习笔记-02
- 数组名的含义、指针含义
- 学习java程序加载
- ZOJ 3492 Kagome Kagome
- 路由器与交换机概念还是有区别滴
- 两个hadoop的问题解决
- 2012华为校园招聘机试(武汉)
- Java Date
- JQuery 跟着鼠标走的Div
- struts2全注解配置步骤
- 在VirtualBox下安装Linux的增强功能(鼠标无缝切换等)