mirror of
https://github.com/LingCoder/OnJava8.git
synced 2026-08-24 23:13:28 +08:00
将field翻译从属性改为字段,相对来说字段更常用。
This commit is contained in:
@@ -219,9 +219,9 @@ ATypeName a = new ATypeName();
|
||||
到现在为止,我们还不能用这个对象来做什么事(即不能向它发送任何有意义的消息),除非我们在这个类里定义一些方法。
|
||||
|
||||
<!-- Fields -->
|
||||
### 属性
|
||||
### 字段
|
||||
|
||||
当我们创建好一个类之后,我们可以往类里存放两种类型的元素:方法(method)和属性(field)。类的属性可以是基本类型,也可以是引用类型。如果类的属性是对某个对象的引用,那么必须要初始化该引用将其关联到一个实际的对象上(通过之前介绍的创建对象的方法)。每个对象都有用来存储其属性的空间。通常,属性不在对象间共享。下面是一个具有某些属性的类的代码示例:
|
||||
当我们创建好一个类之后,我们可以往类里存放两种类型的元素:方法(method)和字段(field)。类的字段可以是基本类型,也可以是引用类型。如果类的字段是对某个对象的引用,那么必须要初始化该引用将其关联到一个实际的对象上(通过之前介绍的创建对象的方法)。每个对象都有用来存储其字段的空间。通常,字段不在对象间共享。下面是一个具有某些字段的类的代码示例:
|
||||
|
||||
```java
|
||||
class DataOnly {
|
||||
@@ -237,7 +237,7 @@ class DataOnly {
|
||||
DataOnly data = new DataOnly();
|
||||
```
|
||||
|
||||
我们必须通过这个对象的引用来指定属性值。格式:对象名称.方法名称或属性名称。代码示例:
|
||||
我们必须通过这个对象的引用来指定字段值。格式:对象名称.方法名称或字段名称。代码示例:
|
||||
|
||||
```java
|
||||
data.i = 47;
|
||||
@@ -256,7 +256,7 @@ class DataOnly {
|
||||
<!-- Default Values for Primitive Members -->
|
||||
### 基本类型默认值
|
||||
|
||||
如果类的成员变量(属性)是基本类型,那么在类初始化时,这些类型将会被赋予一个初始值。
|
||||
如果类的成员变量(字段)是基本类型,那么在类初始化时,这些类型将会被赋予一个初始值。
|
||||
|
||||
| 基本类型 | 初始值 |
|
||||
| :-----: |:-----: |
|
||||
@@ -269,9 +269,9 @@ class DataOnly {
|
||||
| float | 0.0f |
|
||||
| double | 0.0d |
|
||||
|
||||
这些默认值仅在 Java 初始化类的时候才会被赋予。这种方式确保了基本类型的属性始终能被初始化(在 C++ 中不会),从而减少了 bug 的来源。但是,这些初始值对于程序来说并不一定是合法或者正确的。 所以,为了安全,我们最好始终显式地初始化变量。
|
||||
这些默认值仅在 Java 初始化类的时候才会被赋予。这种方式确保了基本类型的字段始终能被初始化(在 C++ 中不会),从而减少了 bug 的来源。但是,这些初始值对于程序来说并不一定是合法或者正确的。 所以,为了安全,我们最好始终显式地初始化变量。
|
||||
|
||||
这种默认值的赋予并不适用于局部变量 —— 那些不属于类的属性的变量。 因此,若在方法中定义的基本类型数据,如下:
|
||||
这种默认值的赋予并不适用于局部变量 —— 那些不属于类的字段的变量。 因此,若在方法中定义的基本类型数据,如下:
|
||||
|
||||
```java
|
||||
int x;
|
||||
@@ -405,7 +405,7 @@ import java.util.*;
|
||||
|
||||
一些面向对象的语言使用类数据(class data)和类方法(class method),表示静态数据和方法只是作为类,而不是类的某个特定对象而存在的。有时 Java 文献也使用这些术语。
|
||||
|
||||
我们可以在类的属性或方法前添加 `static` 关键字来表示这是一个静态属性或静态方法。 代码示例:
|
||||
我们可以在类的字段或方法前添加 `static` 关键字来表示这是一个静态字段或静态方法。 代码示例:
|
||||
|
||||
```java
|
||||
class StaticTest {
|
||||
@@ -428,7 +428,7 @@ StaticTest.i++;
|
||||
|
||||
`++` 运算符将会使变量结果 + 1。此时 `st1.i` 和 `st2.i` 的值都变成了 48。
|
||||
|
||||
使用类名直接引用静态变量是首选方法,因为它强调了变量的静态属性。类似的逻辑也适用于静态方法。我们可以通过对象引用静态方法,就像使用任何方法一样,也可以通过特殊的语法方式 `Classname.method()` 来直接调用静态属性或方法 [^7]。 代码示例:
|
||||
使用类名直接引用静态变量是首选方法,因为它强调了变量的静态属性。类似的逻辑也适用于静态方法。我们可以通过对象引用静态方法,就像使用任何方法一样,也可以通过特殊的语法方式 `Classname.method()` 来直接调用静态字段或方法 [^7]。 代码示例:
|
||||
|
||||
```java
|
||||
class Incrementable {
|
||||
@@ -546,7 +546,7 @@ os.arch=amd64
|
||||
java.io.tmpdir=C:\Users\Bruce\AppData\Local\Temp\
|
||||
```
|
||||
|
||||
`main()` 方法中的第一行会输出所有的系统属性,也就是环境信息。 **list()** 方法将结果发送给它的参数 **System.out**。在本书的后面,我们还会接触到将结果输出到其他地方,例如文件中。另外,我们还可以请求特定的属性。该例中我们使用到了 **user.name** 和 **java.library.path**。
|
||||
`main()` 方法中的第一行会输出所有的系统字段,也就是环境信息。 **list()** 方法将结果发送给它的参数 **System.out**。在本书的后面,我们还会接触到将结果输出到其他地方,例如文件中。另外,我们还可以请求特定的字段。该例中我们使用到了 **user.name** 和 **java.library.path**。
|
||||
|
||||
<!-- Compiling and Running -->
|
||||
### 编译和运行
|
||||
|
||||
Reference in New Issue
Block a user