A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 金龙 中级黑马   /  2012-6-21 22:09  /  2401 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

比老师视频中有这么说过:
对象的创建过程:Student s =  new Student();
请写出其在内存中的流程:
(1)将Student.class加载到内存中;
(2)在栈内存中开辟一块s变量的空间;
(3)在堆内存中给对象进行分配空间;
(4)给对象进行默认初始化值;
(5)给对象进行显示初始化;
(6)调用构造代码块进行初始化;(如果没有:就不会执行)
(7)调用构造函数进行对象的初始化值;
(8)将堆内存中的首地址值赋给栈空间中的s 变量。
其中,第五步的显示初始化到底是什么意思一直就不懂,默认初始化是一开始的默认值,可显示初始化是什么呢?后面有构造代码块初始化,还有构造函数的赋值,那显示初始化是干什么用的呢?

7 个回复

倒序浏览
显式初始化就是由编写的人员 通过语句进行初始化。比如说你重新写了构造方法  就是显式的
如果你没重写构造方法  那么系统有个默认的构造方法  就是隐式的。
我觉得第六步和第七步都属于显式初始化的过程

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class a
{
int a=2;//这里的2就是显示初始化

}
默认初始化就是a=0;先进行默认初始化a=0,再将2赋值给a就是显示初始化

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上正解!
回复 使用道具 举报
显示初始化就是你给对象的值。就像你盖房子那样,房子就好比你new出来的对象,盖好后墙的表面是毛坯样子,是默认的,如果把这个毛坯样子看作一个值的话,默认初始化就是让它存在,给它分配一个存在的空间,只在存在了你才能去修改它给它粉上别的颜色,你想后来让它显示的样子就是你对它显示初始化
回复 使用道具 举报
你们都搞错了!不是“显示初始化”,而是“显式初始化”,区别于默认初始化。这样从字面上就容易理解了。
回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
吴扬 中级黑马 2012-6-24 01:34:26
8#
比如说有一个学生类
class Student{
    String name;
    int age;
}
当你定义这个学生类的成员变量,没有给变量赋初始值的时候,系统会自动的给它附一个初始值,就是name = null; age = 0;这个就是默认初始化
而当你定义成员变量,自己手动的给它赋值了之后,比如:String name = "abc" ; age = 10;这个就叫做显式初始化。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马