黑马程序员技术交流社区

标题: 对象初始化过程 [打印本页]

作者: 满兴旺    时间: 2014-4-7 19:06
标题: 对象初始化过程
Person p=new Person();
1,        因为new用到了Person.class文件,所以会先找到Person.class文件并加载到内存中。
2,        执行静态代码块Static{}(前提是如果有的话)给Person.class进行初始化。
3,        在堆内存中开辟空间,分配内存地址。
4,        在堆内存中建立对象的特有属性并进行默认初始化
5,        对属性进行显示初始化(嘛意思?)
6,        对对象进行构造代码块初始化,
7,        对对象进行与之对应的构造函数初始化
8,        将内存地址赋值给栈内存中的P变量。

请问第5步对属性进行显示初始化是什么意思??
作者: osully    时间: 2014-4-7 19:16
就是成员变量的初始化

比如说 int num = 1;

作者: linweiwen    时间: 2014-4-7 19:30
楼上说得对,
就是对成员属性进行显式初始化,
就是“写出来了,写得很明白”了,

int age;
这样……

不知道你明白不?
作者: 为你而去    时间: 2014-4-7 20:27
执行顺序是静态代码块,一般代码块,构造代码块,所以第五步应该是在一般代码块中对成员变量进行赋值操作,int num=3;
作者: adamjy    时间: 2014-4-7 20:27
对属性进行显示初始化(嘛意思?)
即对你显示初始化了的属性进行初始化,显示初始化的意思为给属性赋了值,如
int i = 0;
String string = new String("John");
作者: zhangbingyuan    时间: 2014-4-7 22:18
首先,定义一个类来说明:
class Person
{
  int age = 0;
  Person( int age)
  {
     this.age = age;
  }
}

如果new一个Person对象:Person p = new Person( 30 );
4,在堆内存中建立对象的特有属性并进行默认初始化----->将p对象的age属性默认初始化为0
5,对属性进行显示初始化(嘛意思?)----> 将通过构造函数传进来的age值(30)赋给p对象的age属性.

我的理解就是这样,希望可以帮到你哟。
作者: 黑马-幻灭    时间: 2014-4-7 22:46
简单点就是给你声明的变量 弄一个值! 比如int a  这样声明了  !a =  1  给他一个1的值 也可以在声明的同时赋值初始化  int a = 1
作者: 锋少    时间: 2014-4-7 22:51
Person p=new Person();
问题:5. 对属性进行显示初始化(嘛意思?)
解析:对p对象中的成员变量进行赋值。




作者: jingdou56    时间: 2014-4-8 00:08

//未对类的构造方法复写,建立对象时,会自动给成员变量初始化,name未空,int为0,这种叫隐式初始化
class   Person
{
                        private String name;
                        private int age;
                       
                        //Person(){}    默认的构造方法,不写会自动不上,隐式
}

//如果你对构造方法复写,建立对象时,就会按照你的要求出示化,这就是显示初始化
class Person
{
                        private String name;
                        private int age;
                       
                        Person(String name,int age)  //自己复写构造方法,这叫显示,按照你的要求初始化name和age的值
                        {
                                        this.name = name;
                                        this.age = age;
                        }
}
作者: 杨殿生    时间: 2014-4-8 17:32
对对象进行显示初始化就是你为类里的非静态成员变量赋值,
作者: 为梦想而活着    时间: 2014-4-8 19:56
第五步我的理解就是由抽象到具体的过程,给对象进行初始化
作者: 满兴旺    时间: 2014-4-8 21:36
谢谢各位的细心指导,鉴于的的分也少的可怜,所以。。。。。不过很感谢啊。。
作者: 帽子    时间: 2014-4-8 22:34
其实输出语句也是一个方法,括号里你填得东西,就相当于实际参数一样,接受到实际参数的输出方法,才会将你输入的东西打印出来。这个过程中会有一个数据传递的过程,我想应该是这个意思吧。
作者: 四川男人    时间: 2014-4-9 00:13
成员的初始化根据初始化的顺序分三个方面:
1:类中成员变量在类定义的时候进行初始化,就是所谓显式初始化;
2:构造代码块儿中定义的成员初始化代码;
3:构造函数中定义成员初始化;
显式初始化就是在类定义的时候给成员变量初始化,就是显式初始化




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