黑马程序员技术交流社区

标题: 关于显示初始化的问题 [打印本页]

作者: 金龙    时间: 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
  1. /*用现实生活举个例子我觉得比较好理解些:
  2. 比如张三要上学,但发觉zhangsan名字不好听于是改名叫zhangsi*/
  3. class Person{
  4. int age;                                    //隐式初始化实际上是JVM赋默认值0给变量age的,变量在显示屏上看不到被初始化
  5. String name="zhangsan";       //显式初始化,是我们主观加上去的,变量在显示屏上看得到被初始化了。
  6. public Person(int age,String name){
  7. this.age = age;
  8. this.name = name;
  9. }
  10. }

  11. public class ShangXue
  12. {
  13.         public static void main(String [] args){
  14.         Person zz = new Person(20,"zhangsi");
  15.         System.out.println(zz.name);
  16.     }
  17. }
复制代码

作者: 吴扬    时间: 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