第二章:一切都是对象
- 2.3 永远不需要销毁对象
在大多数程序设计语言中,变量生命周期的概念,占据了程序设计工作中非常重要的部分。变量需要存活多长时间?如何销毁?何时销毁?
2.3.1 作用域
大多数过程型语言都有作用域(scope)的概念。作用域决定了在其内定义的变量名的可见性和生命周期。在C,C++,Java中,作用域由花括号的位置决定。
{
int x = 12;//只有x有效
{
int q = 96;
x,q都有效
}
//只有x有效
//q在作用域之外了
}
2.3.2 对象的作用域
Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,他可以存活于作用域之外。
{
String s = new String("a");
}
引用s在作用域终点就消失了。但是s所指向的对象会继续占据内存当中。由new创建的对象,只要你需要就会一直保留。那么如何防止这些对象填满内存空间,进而阻塞程序?
在Java中,不必担心这个问题。Java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别哪些不会再被引用,并且释放这些对象的内存空间。
2.4 创建新的数据类型:类
如果一切都是对象,那么是什么确定了对象类型?
大多数面向对象的程序设计语言都习惯用关键字class表示,class后面紧跟的是新类型的名称,例如:
class Name{
}
这就引入了一种新的类型。
2.4.1 字段和方法
字段可以是任何类型的对象,可以通过引用与其进行通信,也可以是基本类型的一种。如果字段是对某个对象的引用,那么必须初始化该引用,以便使其与一个实际的对象相关联。
基本成员默认值
若类的某个成员是基本数据类型,即时没有进行初始化,Java也会确保它获得一个默认值。但是初始值对于你的程序来说可能是不正确的,所以做好明确的对变量进行初始化。
2.5 方法、参数和返回值
方法:可以理解为做某些事情的方式。但是许多程序设计语言用函数来描述命名子程序,Java常用方法来表示。
Java的方法决定了一个对象能够接收什么样的信息。方法的基本组成部分包括:名称,参数,返回值,和方法体。
returnType methodNane(//参数){
//方法体
}
返回类型:指的是调用方法后从方法返回的值。
参数:给出要给放大的信息的类型和名称。
Java中的方法只能作为一个类的部分来创建,方法只有通过对象才能被调用(static后面再说),且这个对象必须能执行这个方法调用。
假设有个方法M(),返回类型是int。可通过一个名为a的对象调用它,那么可以这样写
int x=a.M();
返回值的类型必须与x类型兼容。
这种调用方法的行为通常称为”发消息给对象”,消息是M(),对象是a。
2.5.1 参数列表
方法的参数列表指定要传递给方法什么样的信息。在参数列表中必须指定每个所传递的类型及名字,这里的传递其实也是引用,并且引用的类型必须准确。
你可以定义方法返回任何想要的类型,不过不想返回任何东西, 可以让方法返回void (空),例如:
boolran flag(){return fale;}
void Nothing()
void Noting(return;)
若返回类型是void,return关键字的作用只是用来退出此方法。
Next 构建一个java程序