当前位置: 代码迷 >> J2SE >> 对于初始化引用的疑问
  详细解决方案

对于初始化引用的疑问

热度:46   发布时间:2016-04-24 12:20:37.0
关于初始化引用的疑问
小弟最近在读think in java 里面复用类的一段代码及说明,我想知道这段代码在哪体现了初始化的这4种方式 请各位帮忙讲解下

编译器并不是简单地为每一个引用都创建默认对象.这一点是很有意义的.因为若真要那样做的话,就会在许多情况下增加不必要的负担。
如果想初始化这些引用,可以在代码中的下列位置进行:

1、在定义对象的地方。这意味着它们总是能够在构造器被调用之前被初始化。
2、在类的构造器中。
3、就在正要使用这些对象之前.这种方式称为惰性初始化。在生成对象不值得及不必每次都生成对象的情况下,这种方式可以减少额外的负担。
4、使用实例初始化。
以下是这四种方式的示例:


Java code
class Soap{    private String s;    Soap(){        System.out.println("Soap");        s = "Constructed";    }    public String toString(){        return s;    }}public class Chushihua {        private String s1 = "happy" ,                    s2 = "happy" ,                   s3,s4;    private Soap castille;    private int i;    private float toy;    public Chushihua(){        System.out.println("Inside bath");        s3 = "Joy";        toy = 3.14f;        castille = new Soap();     }    {        i = 47;    }    public String toString() {        if(s4 == null)            s4 = "Joy";        return            "s1 = " + s1 + "\n" +            "s2 = " + s2 + "\n" +           "s3 = " + s3 + "\n" +           "s4 = " + s1 + "\n" +           "i = " + i + "\n" +           "toy = " + toy + "\n" +           "castille = " + castille ;    }    public static void main(String args[]){                Chushihua b = new Chushihua();        System.out.println(b);    }}



Output: 
  Inside bath
  Soap
  s1 = happy
  s2 = happy
  s3 = Joy
  s4 = happy
  i = 47
  toy = 3.14


------解决方案--------------------
Java对象及其引用

初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路。

为便于说明,我们先定义一个简单的类:

 
Java code
      class Vehicle {int passengers;       int fuelcap;int mpg;}
------解决方案--------------------
楼主看书不仔细。我现在也在看这本书。书中,明明很清楚的注释出了各种初始化方式出现的地方。你再去看下吧。。。
  相关解决方案