您的位置:首页 > 编程语言 > Java开发

《Thinking in JAVA》读书笔记_第二章_2.1

2015-04-28 22:33 176 查看

第二章 一切都是对象

2.1 用引用操纵对象

这部分的重点在于区分引用和对象。

让我们贴上一段简单的代码:

public class Hi {

public Hi(){
System.out.println("Hi~");
}

}
这样我们就有了一个自行创建的类型Hi。我们通过一般的方式来初始化一个对象:

Hi hi = new Hi();

而在实际上,这部分代码应该分成两部分来看。首先是

Hi hi

这部分表示我们创建了一个引用。我们知道我们可以通过这个引用来操控一个类型为Hi的对象。但是呢?他操纵的对象是哪个?我们并不知道,因为我们还没有让他指向任何一个类型为Hi的对象。

new Hi()

这部分则是对对象的创建。我们通过new关键字来表示,我们新创建了一个类型为Hi的对象。而后通过“=”这个符号来将我们所创建的引用hi和刚刚创建的对象进行关联。这里我们需要注意的则是,引用不等于对象。引用只是我们用来操控对象的一个手段。

为了更为直观的体现,我们来写一个简单的例子。我们先创建一个名为Hello类型。我们给他一个属性name,然后创建一个方法,SayHello

public class Hello {

String name;

public Hello(){
name = "小明";
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public void SayHello(){
System.out.println("Hello~" + name);
}
}

然后我们通过一个方法来让我们更好的认识到引用和对象的区别。

public class HelloTest {

public static void main(String[]args){
Hello a, b;
a = b = new Hello();

a.SayHello();

b.SayHello();

a.setName("小刚");

a.SayHello();

b.SayHello();

}

}
我们在IDE里面运行这个程序。来看一下我们得到的结果。



从运行结果我们可以看出来。我们创建了一个对象Hello,并且我们通过引用a和b来调用这个对象。因为我们重写了Hello的构造器,所以在调用SayHello这个方法时,会输出“Hello~小明”。之后我们通过引用a来更改我们创建的对象的属性name。而后我们可以发现无论是通过引用a还是引用b来调用我们创建的这个Hello对象的方法,所输出的都是我们通过引用a改变后的结果。由此可见,a和b只是对对象的引用而已,并不是对象本身。

这两个引用所指向的是同一个对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: