java中一个对象的初始化过程

标签: java 中一 对象 | 发表时间:2014-03-04 22:35 | 作者:u011171998
出处:http://blog.csdn.net
/*
该类演示了一个对象的初始化过程
*/

class Person
{
	private String name;    //堆内存默认初始化为null
	private int age;        //堆内存默认初始化为0  
	private static String country="中国"; //静态属性,存在于方法区,随着类的加载而加载

	static      //静态代码块          
	{
		System.out.println("静态代码块执行");
	}

                    //构造代码块
	{
		System.out.println("构造代码块执行");
	}

                   
	Person(String name,int age)   //构造函数 
	{
		this.name=name;
		this.age=age;
	}


	public void setName(String name)
	{
		this.name=name;
	}
	public String getName()
	{
		return name;
	}
	public void setAge(int age)
	{
		this.age=age;
	}
	public int getAge()
	{
		return age;
	}


	public void speak()
	{
		System.out.println(name+"...."+age);
	}


	public static void showCountry()
	{
		System.out.println(country);
	}
}

class PersonDemo 
{
	public static void main(String[] args) 
	{
		Person p=new Person("张三",20);
		/*
		Person p=new Person("张三",20);
		这句话的执行,内存中到底做了什么事情呢?
		1.首先JVM以main函数为入口,把PersonDemo类加载进内存
		2.在栈内存中建立引用变量变量p
		3.因为new用到了Person.class,所以会先找到Person.class文件并加载到内存中
                4.执行该类中的static代码块,给Person.class类进行初始化
                5.在堆内存中开辟空间,分配内存地址
                6.对堆内存中建立对象的特有属性,并进行默认初始化
		7.对属性进行显示初始化
		8.对对象进行构造代码块初始化
		9.对对象进行与之对应的构造函数初始化
		10.将内存地址赋给栈内存中的p变量
        

		关于Person类中的静态属性和静态方法
         静态属性和静态方法随着类的加载而加载,并存在于方法区中,方法区中存储的是静态变量和静态方法,
		 还有类的其他非静态函数,所以可以说方法区分为静态区和非静态区.当调用方法时,他们会被加载进
		 栈内存进行执行
		*/
	}
}

作者:u011171998 发表于2014-3-4 14:35:56 原文链接
阅读:67 评论:0 查看评论

相关 [java 中一 对象] 推荐:

java中一个对象的初始化过程

- - CSDN博客编程语言推荐文章
/* 该类演示了一个对象的初始化过程 */ class Person {. //堆内存默认初始化为null. private static String country="中国"; //静态属性,存在于方法区,随着类的加载而加载. System.out.println("静态代码块执行");. System.out.println("构造代码块执行");.

Java的对象驻留

- - Java译站
Java会将源代码中的字符串常量存储到常量池中. 这不只是说它俩的值是一样的,而是说就是同一个字符串对象. 用Java的话来说就是a==b的结果是true. 然而这个只对字符串以及小的整型或者长整型有效. 其它的对象是不会被驻留的,也就是说如果你创建了两个对象而他们的值是相等的,但他们并不是同一个对象.

理解Java对象序列化

- - 博客 - 伯乐在线
来源: jiangshapub 的博客( @jiangshapub). 关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结. 此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制. 在撰写本文时,既参考了 Thinking in Java, Effective Java,JavaWorld,developerWorks中的相关文章和其它网络资料,也加入了自己的实践经验与理解,文、码并茂,希望对大家有所帮助.

java bean对象之间复制属性

- - Java - 编程语言 - ITeye博客
在现在的企业级Java应用程序中, Java Bean被广泛的应用. 一堆的相关的划分也应运而生, 如DTO, DAO, BO, POJO, VO等. 这里不去管这些概念的细节, 如果你感兴趣,可以google之, 比如 这篇文章. 这里要讨论的问题是如何在不同的Java Bean对象之间复制它们的属性.

java 类和对象的初始化

- - Web前端 - ITeye博客
  在Java中,类装载器把java类装载到虚拟机中,经过装载,链接和初始化三个步骤来完成. 其中链接中包括 校验、准备和解析. 下面对这些概念进行解析:. 装载:查找和导入类或接口的二进制数据,常用的是根据类的路径加载,还有根据网络的地址加载. 链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的;.

[Json]json-lib简单处理java对象变为json对象

- - CSDN博客编程语言推荐文章
由于js对json的原生支持,所以现在很多项目的数据传输都喜欢用json. 怎么样把数据从java对象转化为json对象,有怎么把前台的json对象转化成java对象去处理. json-lib是sourceforge的一个开源项目,常用来解决java json数据转换的问题. 下载地址是 http://sourceforge.net/projects/json-lib/.

JAVA内存使用--如何计算一个Java对象占用的字节数

- - Java - 编程语言 - ITeye博客
转自(http://blog.csdn.net/kp034/article/details/7077757). 通常,我们谈论的堆内存使用的前提是以“一般情况”为背景的. 1.某些情况下,JVM根本就没有把Object放入堆中. 例如:原则上讲,一个小的thread-local对象存在于栈中,而不是在堆中.

判断字符串是否是有效json对象(java + gson )

- - 改善
已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

获得Java对象内存占用大小

- - BlogJava-首页技术区
懒惰,直接上代码,用法见JAVA DOC. stone2083 2013-06-08 17:32 发表评论.

深入分析Java对象的建构顺序

- - 博客园_首页
对于下面的代码,许多有经验的程序员都没能给出正确的答案. 如果你能只看代码给出的答案和文章末尾出给出大答案一致,那么你已经掌握了Java对象的建构顺序,中间的分析可以不用看了. 2 * 父类Foo,实现控制台输出. 33 * 子类Bar,实现控制台输出. 为确保其正确性,以下事件一定会以固定顺序发生:.