黑马程序员技术交流社区

标题: 关于加载类后静态成员和非静态成员加载的情况? [打印本页]

作者: abc784990536    时间: 2014-12-16 10:20
标题: 关于加载类后静态成员和非静态成员加载的情况?
是这样的,我有点疑惑就是:
内存加载类是在方法区加载的,加载类后,随着类的加载而加载的先是静态代码块然后是静态变量和静态函数,
上面说的没错吧,有错的帮忙纠正。问题是,接下来非静态成员有没有加载到方法区,还是当对象建立后才加载在方法区,还是当对象建立后加载到堆内存呢!!??
作者: 姿_`态    时间: 2014-12-16 10:42
内存加载类的顺序是,首先加载到方法区的是静态代码块-——静态变量,静态函数——代码块——构造函数,当加载构造函数的时候,就创建了对象,这就用到了堆栈区了,创建的对象,放入堆中,对象的引用放入栈中。成员变量都在堆上,只有方法里面定义的基础变量,在方法里面定义的引用其他对象的引用放在栈上(这个时候被引用的对象和它的成员变量还是在堆上)也就是说,线程上下文的东西在栈上,其他统统在堆上。
作者: 后悔药    时间: 2014-12-16 11:05
姿_`态 发表于 2014-12-16 10:42
内存加载类的顺序是,首先加载到方法区的是静态代码块-——静态变量,静态函数——代码块——构造函数,当 ...

这个还真没怎么细心了解过,学习了
作者: 姿_`态    时间: 2014-12-16 11:21
后悔药 发表于 2014-12-16 11:05
这个还真没怎么细心了解过,学习了

嗯嗯,共同学习,
作者: as604049322    时间: 2014-12-16 11:24
姿_`态 发表于 2014-12-16 10:42
内存加载类的顺序是,首先加载到方法区的是静态代码块-——静态变量,静态函数——代码块——构造函数,当 ...

学习了~~~高手准备上哪一期呢?
作者: 姿_`态    时间: 2014-12-16 11:33
as604049322 发表于 2014-12-16 11:24
学习了~~~高手准备上哪一期呢?

没有 ,我菜鸟一只,大三,学校不然走,也不知道那一期。你是哪一期呐。
作者: fatesabering    时间: 2014-12-16 11:58
学习了  都是大神
作者: 南柯一梦境    时间: 2014-12-16 12:07
大神回答的好透彻啊,受教了
作者: as604049322    时间: 2014-12-16 12:11
姿_`态 发表于 2014-12-16 11:33
没有 ,我菜鸟一只,大三,学校不然走,也不知道那一期。你是哪一期呐。 ...

唉,,我是非计算机专业是刚毕业的半年的。在学计算机的人中是菜鸟中的菜鸟,视频才看到面向对象,,,想赶上55期,好困难。你还有足够的时间打好基础啊,,,
作者: 姿_`态    时间: 2014-12-16 13:42
as604049322 发表于 2014-12-16 12:11
唉,,我是非计算机专业是刚毕业的半年的。在学计算机的人中是菜鸟中的菜鸟,视频才看到面向对象,,,想 ...

基础是一定要打好的,我想去可是去不了,郁闷啊 ,大家一起加油
作者: 迷失的小Z    时间: 2014-12-16 14:56
姿_`态 发表于 2014-12-16 10:42
内存加载类的顺序是,首先加载到方法区的是静态代码块-——静态变量,静态函数——代码块——构造函数,当 ...

涨姿势……
作者: abc784990536    时间: 2014-12-16 15:56
姿_`态 发表于 2014-12-16 10:42
内存加载类的顺序是,首先加载到方法区的是静态代码块-——静态变量,静态函数——代码块——构造函数,当 ...

谢谢,那在没建立对象前,方法区里有加载非静态成员变量和成员函数吗
作者: 极光_CDY    时间: 2014-12-16 16:03
没有,这些都是属于某个对象的特有数据,若没有对象就存在,包含的是对象的属性。对象没有,属性无从说起
作者: 姿_`态    时间: 2014-12-16 17:45
abc784990536 发表于 2014-12-16 15:56
谢谢,那在没建立对象前,方法区里有加载非静态成员变量和成员函数吗

应该是没有的,方法区只加载静态东西。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2