以上示例,清楚地说明了变量声明的位置不同,造成作用域的不同。注意内嵌的一对花括号之间仍是其外部声明的变量x的作用域。
任何位于“//”之后的文本行属于注释,而跨行注释使用斜杠加星号与星号加斜杠这样一对标记中间夹注释文本。
Scope of objects
Java has a garbage collector,which looks at all the objects that were created with "new" and figures out which ones are not being referenced anymore.Then it releases the memory for those objects,so the memory can be used for new objects.
上文说到了垃圾回收器的工作方式,由此不必担心忘记了释放内存。
Creating new data types: class
创建新的数据类型(笔记1曾提到):class(类)
Java用关键字“class”来创建对象的数据类型,它与上文提到的数组均属于引用数据类型。举例如下:
| class ATypeName {//类的主体}
创建上例数据类型的一个对象(实例化):
| ATypeName a = new ATypeName();
Fields and methods
定义一个类后,可在类中放置fields和methods。fields可为任何数据类型的对象,对象的形参要使用关键字“new”来初始化。methods即方法(可看作类的行为属性)。
举例:
| class DataOnly{
int i;
double d;
boolean b;
}
(上例无方法,仅含数据变量),创建此类的对象:
| DataOnly data = new DataOnly();
给对象的数据变量付值:objectReference.member:
| data.i = 47;
| data.d = 1.1;
| data.b = false;
当然,你也有可能想给对象中包含的对象的数据变量付值:
| myPlane.leftTank.capacity = 100;
Default values for primitive members
类中的原始数据类型如没有初始化,将会有一个默认的值:
Primitivetype | Default |
boolean | false |
char | '/u0000'(null) |
byte | (byte)0 |
short | (short)0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
此仅确保类中的数据成员变量原始数据类型总会被初始化。无论如何,这种初始值对于你的程序而言可能不适合甚至非法。最好还是清楚地初始化你的变量。
This doesn't apply to local variables-those that are not fields of a class.Thus,if within a method definition you hava:
| int x;
Then x will get some arbitrary value...
对于非类的变量则会指向任意一个值,在编译时出错。
(待续)