黑马程序员技术交流社区

标题: 讲讲对象和累的初始化是什么意思,简单易懂的,实例说明的 [打印本页]

作者: 石欣欣    时间: 2011-9-13 18:16
标题: 讲讲对象和累的初始化是什么意思,简单易懂的,实例说明的
讲讲对象和累的初始化是什么意思,简单易懂的,实例说明的
作者: 匿名    时间: 2011-9-13 18:46
看起来好像是赚威望的样子.
初始化就是为正常工作准备的过程,通常就是给变量赋值.而对于对象来说就是设置属性.通常这个由构造函数来完成.[code]class InitTest{
       public int x;
       InitTest(x){
           this.x= x;
      }
}[/code]这个就是最简单的初始化吧.new InitTest(0);
作者: 匿名    时间: 2011-9-13 18:54
1:类"初始化"
它是一个类或接口被首次使用的前阶段中的最后一项工作,本阶段负责为类变量赋予正确的初始值。

Java 编译器把所有的类变量初始化语句和类型的静态初始化器通通收集到 <clinit> 方法内,该方法只能被 Jvm 调用,专门承担初始化工作。

除接口以外,初始化一个类之前必须保证其直接超类已被初始化,并且该初始化过程是由 Jvm 保证线程安全的。另外,并非所有的类都会拥有一个 <clinit>() 方法,在以下条件中该类不会拥有 <clinit>() 方法:

该类既没有声明任何类变量,也没有静态初始化语句;
该类声明了类变量,但没有明确使用类变量初始化语句或静态初始化语句初始化;
该类仅包含静态 final 变量的类变量初始化语句,并且类变量初始化语句是编译时常量表达式。
2:对象初始化

在类被装载、连接和初始化,这个类就随时都可能使用了。对象实例化和初始化是就是对象生命的起始阶段的活动,在这里我们主要讨论对象的初始化工作的相关特点。

Java 编译器在编译每个类时都会为该类至少生成一个实例初始化方法--即 "<init>()" 方法。此方法与源代码中的每个构造方法相对应,如果类没有明确地声明任何构造方法,编译器则为该类生成一个默认的无参构造方法,这个默认的构造器仅仅调用父类的无参构造器,与此同时也会生成一个与默认构造方法对应的 "<init>()" 方法.

通常来说,<init>() 方法内包括的代码内容大概为:调用另一个 <init>() 方法;对实例变量初始化;与其对应的构造方法内的代码。

如果构造方法是明确地从调用同一个类中的另一个构造方法开始,那它对应的 <init>() 方法体内包括的内容为:一个对本类的 <init>() 方法的调用;对应用构造方法内的所有字节码。

如果构造方法不是通过调用自身类的其它构造方法开始,并且该对象不是 Object 对象,那 <init>() 法内则包括的内容为:一个对父类 <init>() 方法的调用;对实例变量初始化方法的字节码;最后是对应构造子的方法体字节码。

如果这个类是 Object,那么它的 <init>() 方法则不包括对父类 <init>() 方法的调用。
作者: 匿名    时间: 2011-9-13 19:20
说个简单点的
好比你要去杀人
先前制定了详细的计划,并写成一张纸
然后你提着大刀把人砍了

那张写满详细计划的纸 我们吧他看做对象
按照那张纸把事情做了 就叫对象的实例化
作者: 匿名    时间: 2011-9-13 19:46
对于面向对象来说,你要操作的都是一个对象,所以要操作需要先实例化这个类,得到一个对象:
很多情况下,初始化都是在实例化的时候一起完成,就像下面的代码一样:[code]class Test{
        int x;
        public void Test(int x){
                this.x=x;
        }
      Test t=new Test(1);
}[/code]这样就实例化了一个对象t,而t里面的属性x也同时被初始化,也就是被赋值为1;
当然,我们也可以将属性设成static,静态成员会在类加载的时候就初始化。
作者: 匿名    时间: 2011-9-14 11:08
标题: 回复 沙发 的帖子
这个我也懂   能不能来点深奥的
作者: 匿名    时间: 2011-9-16 09:29
我用我的理解来回答吧
对象   人
类  具体到我  或者你  例如 张三
初始化就相当于 你要给 我 或者你  定义一些东西
比如 人有什么? 名字name  年龄age 等等
我或者你会什么? 多大?那要具体到 叫什么  张三?  年龄 23?
不知道这样是否简单理解




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