Skip to content

Commit

Permalink
Merge pull request lingcoder#5 from nickChenyx/check
Browse files Browse the repository at this point in the history
文字校对
  • Loading branch information
lingcoder authored Jan 29, 2019
2 parents 01654ed + 3ad5d0f commit b2db3d2
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions book/03-Objects-Everywhere.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ class DataOnly {
}
```

除非持有数据,不然这个类不能做任何是。在此之前,我们可以通过下面的代码示例来创建它的对象:
除非持有数据,不然这个类不能做任何事。在此之前,我们可以通过下面的代码示例来创建它的对象:

```JAVA
DataOnly data = new DataOnly();
Expand Down Expand Up @@ -273,9 +273,9 @@ class DataOnly {
| float | 0.0f |
| double | 0.0d |

这些默认值仅在 Java 初始化类的时候才会被赋予。这种方式确保了基本类型的属性始终能被初始化(在C++ 中不会),从而减少了 bug 的来源。但是,这些初始值对于程序来说并不一定是合法或者正确的。 所以,为了安全,我们最好始终显式地初始化变量。
这些默认值仅在 Java 初始化类的时候才会被赋予。这种方式确保了基本类型的属性始终能被初始化(在C++ 中不会),从而减少了 bug 的来源。但是,这些初始值对于程序来说并不一定是合法或者正确的。 所以为了安全,我们最好始终显式地初始化变量。

这种默认值的赋予并不适用于局部变量 ---- 那些不属于类的属性的变量。 因此,若在方法中定义的基本类型数据,如下:
这种默认值的赋予并不适用于局部变量 —— 那些不属于类的属性的变量。 因此,若在方法中定义的基本类型数据,如下:

```JAVA
int x;
Expand All @@ -289,7 +289,7 @@ class DataOnly {

在许多语言(如 C 和 C++)中,术语函数(**function**)用于描述命名子程序。在 Java 中,我们使用术语方法(**method**)来表示“做某事的方式”。

在 JAVA 中,方法决定着对象对象能接收哪些信息。方法的基础部分包含,名称、参数、返回类型、方法体。格式如:
在 JAVA 中,方法决定着对象能接收哪些信息。方法的基础部分包含名称、参数、返回类型、方法体。格式如:

```java
[返回类型][方法名](/*参数列表*/){
Expand Down Expand Up @@ -320,7 +320,7 @@ int x = a.f();
<!-- The Argument List -->
#### 参数列表

方法参数列表指定传递给方法的信息。正如你可能猜到的,这些信息 - 就像 Java 中的其他所有信息 - 采用对象的形式。参数列表必须指定对象类型和每个对象的名称。同样,我们并没有直接处理对象,而是在传递对象引用。但是引用的类型必须是正确的。如果方法需要 String 参数,则必须传入 String,否则编译器将报错。
方法参数列表指定传递给方法的信息。正如你可能猜到的,这些信息 —— 就像 Java 中的其他所有信息 —— 采用对象的形式。参数列表必须指定对象类型和每个对象的名称。同样,我们并没有直接处理对象,而是在传递对象引用。但是引用的类型必须是正确的。如果方法需要 String 参数,则必须传入 String,否则编译器将报错。

```JAVA
int storage(String s) {
Expand All @@ -329,7 +329,7 @@ int storage(String s) {
}
```

此方法计算并返回某个字符串的长度。参数 s 的类型为 String 。将 字符串变量 s 传递给 storage() 后,我们可以将其视为任何其他对象一样 ---- 我们可以想起传递信息。在这里,我们调用 length() 方法,它是一个 String 方法,返回字符串长度。字符串中每个字符的大小为16位或两个字节。您还可以看到 **return** 关键字,它执行两项操作。首先,它意味着“方法执行结束”。其次,如果方法有返回值,那么该值就位于 **return** 语句之后。这里,返回值是通过计算
此方法计算并返回某个字符串的长度。参数 s 的类型为 String 。将 字符串变量 s 传递给 storage() 后,我们可以将其视为任何其他对象一样 —— 我们可以想起传递信息。在这里,我们调用 length() 方法,它是一个 String 方法,返回字符串长度。字符串中每个字符的大小为16位或两个字节。您还可以看到 **return** 关键字,它执行两项操作。首先,它意味着“方法执行结束”。其次,如果方法有返回值,那么该值就位于 **return** 语句之后。这里,返回值是通过计算

```JAVA
s.length() * 2
Expand All @@ -341,15 +341,15 @@ s.length() * 2
```JAVA
boolean flag() {
return true;
}
}

double naturalLogBase() {
return 2.718;
}
}

void nothing() {
return;
}
}

void nothing2() {

Expand Down Expand Up @@ -386,9 +386,9 @@ Java 采取了一种新的方法避免了以上这些问题:为一个库生成
#### 使用其他组件


无论何时在程序中使用预定义的类,编译器都必须找到该类。在一般情况下,该类已存在于被调用的源代码文件中。此时我们使用该类 - 即使该类未在文件中稍后定义(Java 消除了所谓的“前向引用”问题)。而那些存在于其他文件中的类怎么样?你可能认为编译器应该足够智能去找到它,但这样是有问题的。想象一下,假如你要使用某个类,但目录中存在多个同名的类(可能用途不同)。或者更糟糕的是,假设你正在编写程序,并且在构建它时,你将向库中添加一个与现有类名称冲突的新类。
无论何时在程序中使用预定义的类,编译器都必须找到该类。在一般情况下,该类已存在于被调用的源代码文件中。此时我们使用该类 —— 即使该类未在文件中稍后定义(Java 消除了所谓的“前向引用”问题)。而那些存在于其他文件中的类怎么样?你可能认为编译器应该足够智能去找到它,但这样是有问题的。想象一下,假如你要使用某个类,但目录中存在多个同名的类(可能用途不同)。或者更糟糕的是,假设你正在编写程序,并且在构建它时,你将向库中添加一个与现有类名称冲突的新类。

要解决此问题,你必须通过使用 `import` 关键字来告诉 Java 编译器具体要使用的类。import 表示编译器引入一个包,它是一个类库。(在其他语言中,库可以包含函数和数据以及类,但请记住,Java 中的所有活动都在类中进行。)大多数时候,我们都在使用 JAVA 标准库中的组件。有了这些,你不用担心长的反向域名;你只用说,例如:
要解决此问题,你必须通过使用 `import` 关键字来告诉 Java 编译器具体要使用的类。import 表示编译器引入一个包,它是一个类库。(在其他语言中,库可以包含函数和数据以及类,但请记住,Java 中的所有活动都在类中进行。)大多数时候,我们都在使用 JAVA 标准库中的组件。有了这些,你不用担心长的反向域名你只用说,例如:

```JAVA
import java.util.ArrayList;
Expand Down Expand Up @@ -418,7 +418,7 @@ import java.util.*;

```JAVA
class StaticTest {
static int i = 47;
static int i = 47;
}
```

Expand All @@ -444,8 +444,8 @@ StaticTest.i ++;

```JAVA
class Incrementable {
static void increment() {
StaticTest.i++;
static void increment() {
StaticTest.i++;
}
}
```
Expand All @@ -464,8 +464,8 @@ sf.increment();
Incrementable.increment();
```

相比非静态的对`static` 属性改变了创建数据的方式。同样,当 `static` 关键字修饰方法时,它允许我们无需创建对象就可以直接通过类的引用来调用该方法。正如我们所知,`static` 关键字的这些特性对于应用程序入口点的 main() 方法尤为重要。
应用于字段的static肯定会更改创建数据的方式—one(针对每个类)与非static(针对每个对象。当应用于方法时,static允许您在不创建对象的情况下调用该方法。正如您将看到的,在定义作为运行应用程序入口点的main()方法时,这是非常重要的。
相比非静态的对象`static` 属性改变了创建数据的方式。同样,当 `static` 关键字修饰方法时,它允许我们无需创建对象就可以直接通过类的引用来调用该方法。正如我们所知,`static` 关键字的这些特性对于应用程序入口点的 main() 方法尤为重要。
应用于字段的 `static` 肯定会更改创建数据的方式 —— `static` 针对每个类和非 `static` 针对每个对象。当应用于方法时,`static` 允许您在不创建对象的情况下调用该方法。正如您将看到的,在定义作为运行应用程序入口点的main()方法时,这是非常重要的。


<!-- Your First Java Program -->
Expand Down

0 comments on commit b2db3d2

Please sign in to comment.