黑马程序员技术交流社区
标题:
关于显示初始化的问题
[打印本页]
作者:
金龙
时间:
2012-6-21 22:09
标题:
关于显示初始化的问题
比老师视频中有这么说过:
对象的创建过程:Student s = new Student();
请写出其在内存中的流程:
(1)将Student.class加载到内存中;
(2)在栈内存中开辟一块s变量的空间;
(3)在堆内存中给对象进行分配空间;
(4)给对象进行默认初始化值;
(5)给对象进行显示初始化;
(6)调用构造代码块进行初始化;(如果没有:就不会执行)
(7)调用构造函数进行对象的初始化值;
(8)将堆内存中的首地址值赋给栈空间中的s 变量。
其中,第五步的显示初始化到底是什么意思一直就不懂,默认初始化是一开始的默认值,可显示初始化是什么呢?后面有构造代码块初始化,还有构造函数的赋值,那显示初始化是干什么用的呢?
作者:
刘笑
时间:
2012-6-21 22:21
显式初始化就是由编写的人员 通过语句进行初始化。比如说你重新写了构造方法 就是显式的
如果你没重写构造方法 那么系统有个默认的构造方法 就是隐式的。
我觉得第六步和第七步都属于显式初始化的过程
作者:
陆强强
时间:
2012-6-21 22:38
class a
{
int a=2;//这里的2就是显示初始化
}
默认初始化就是a=0;先进行默认初始化a=0,再将2赋值给a就是显示初始化
作者:
李元峰
时间:
2012-6-21 22:40
楼上正解!
作者:
孙飞
时间:
2012-6-22 09:54
显示初始化就是你给对象的值。就像你盖房子那样,房子就好比你new出来的对象,盖好后墙的表面是毛坯样子,是默认的,如果把这个毛坯样子看作一个值的话,默认初始化就是让它存在,给它分配一个存在的空间,只在存在了你才能去修改它给它粉上别的颜色,你想后来让它显示的样子就是你对它显示初始化
作者:
朱志辉
时间:
2012-6-22 10:00
你们都搞错了!不是“显示初始化”,而是“显式初始化”,区别于默认初始化。这样从字面上就容易理解了。
作者:
张文强
时间:
2012-6-22 11:02
/*用现实生活举个例子我觉得比较好理解些:
比如张三要上学,但发觉zhangsan名字不好听于是改名叫zhangsi*/
class Person{
int age; //隐式初始化实际上是JVM赋默认值0给变量age的,变量在显示屏上看不到被初始化
String name="zhangsan"; //显式初始化,是我们主观加上去的,变量在显示屏上看得到被初始化了。
public Person(int age,String name){
this.age = age;
this.name = name;
}
}
public class ShangXue
{
public static void main(String [] args){
Person zz = new Person(20,"zhangsi");
System.out.println(zz.name);
}
}
复制代码
作者:
吴扬
时间:
2012-6-24 01:34
比如说有一个学生类
class Student{
String name;
int age;
}
当你定义这个学生类的成员变量,没有给变量赋初始值的时候,系统会自动的给它附一个初始值,就是name = null; age = 0;这个就是默认初始化
而当你定义成员变量,自己手动的给它赋值了之后,比如:String name = "abc" ; age = 10;这个就叫做显式初始化。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2