mirror of
https://gitee.com/gaohongy/Java-Book.git
synced 2026-07-16 10:33:49 +00:00
修正全书错别字、术语统一和逻辑错误
This commit is contained in:
+19
-19
@@ -1,4 +1,4 @@
|
||||
danny- [1. How to learn Java?](#1-how-to-learn-java)
|
||||
- [1. How to learn Java?](#1-how-to-learn-java)
|
||||
- [2. 什么是面向对象?](#2-什么是面向对象)
|
||||
- [2.1. 用C来描述一个对象](#21-用c来描述一个对象)
|
||||
- [2.2. C语言描述圆的总结](#22-c语言描述圆的总结)
|
||||
@@ -39,7 +39,7 @@ danny- [1. How to learn Java?](#1-how-to-learn-java)
|
||||
|
||||
## 2. 什么是面向对象?
|
||||
|
||||
对象(Object)这个概念广泛存在于我们的生活当中,一般只一个独立的个体,具备一定的特性(properties),并有一定的动作能力(capability)。例如,一个具体的人,具备属性(性别、年龄、升高...);同时具备一定的能力(说话、跑步、工作...)
|
||||
对象(Object)这个概念广泛存在于我们的生活当中,一般指一个独立的个体,具备一定的特性(properties),并有一定的动作能力(capability)。例如,一个具体的人,具备属性(性别、年龄、升高...);同时具备一定的能力(说话、跑步、工作...)
|
||||
|
||||
面向对象编程是指把相关数据和函数按照对象的方式进行组织和分类,以便达到便于设计、实现、维护和增加代码重用率的目的。面向对象编程中的类(Class)与对象(Object)与我们常用语境中的概念有所不同,我们在学习的过程中注意区分。
|
||||
|
||||
@@ -47,7 +47,7 @@ danny- [1. How to learn Java?](#1-how-to-learn-java)
|
||||
|
||||
### 2.1. 用C来描述一个对象
|
||||
|
||||
我们以一个简单的例子来分析面向对象,这个例子是描述平面中的一个圆。这里我们需要两组参数来描述圆,第一个参数是坐标位置(X、Y);另外一个是圆本生的描述,例如大小(半径r),可能还有颜色等等,简单来说,我们目前只有半径。
|
||||
我们以一个简单的例子来分析面向对象,这个例子是描述平面中的一个圆。这里我们需要两组参数来描述圆,第一个参数是坐标位置(X、Y);另外一个是圆本身的描述,例如大小(半径r),可能还有颜色等等,简单来说,我们目前只有半径。
|
||||
|
||||
如果从C语言出发,需要建立一个结构体来描述圆。
|
||||
|
||||
@@ -94,7 +94,7 @@ void setCircle(struct Circle *c, float x, float y, float r) {
|
||||
}
|
||||
```
|
||||
|
||||
另外我们一次性的打印整个圆的数据,这样我们最好需要一个函数。
|
||||
另外我们需要一次性打印整个圆的数据,因此最好需要一个函数。
|
||||
|
||||
```c
|
||||
/**
|
||||
@@ -157,7 +157,7 @@ int main() {
|
||||
|
||||
1. 圆的结构体描述是一个抽象的描述,因为结构体是类型定义,并没有与其对应的变量;这儿描述和后面的Java类的定义很像。
|
||||
2. 声明一个结构体变量后就有一个真实的内存变量来描述一个特定的圆了,这个变量是圆(抽象描述的)一个实例(实体),也叫做对象;这个概念和Java的对象非常相似;
|
||||
3. 通过点(.)或者(->)可以操作结构体变量(对象)内部的成员,这点和Java对象的操作也非常相识,只不过Java都是用点(.);
|
||||
3. 通过点(.)或者(->)可以操作结构体变量(对象)内部的成员,这点和Java对象的操作也非常相似,只不过Java都是用点(.);
|
||||
|
||||
这里我们发现,操作结构体的函数是独立定义的,并且需要把结构体变量作为参数进行传递。圆这个结构体是死的,需要外部的函数来对其进行操作。如果把圆这个结构体变量和生活中的对象联系起来,会有些有趣的事情。
|
||||
|
||||
@@ -187,7 +187,7 @@ c1.print(); // C语言无法做到
|
||||
|
||||
### 2.3. 使用Java来实现
|
||||
|
||||
接下来我们使用java来实现上述的功能,这里主要是要把相关的函数作为结构体的一个部分。
|
||||
接下来我们使用Java来实现上述的功能,这里主要是要把相关的函数作为结构体的一个部分。
|
||||
|
||||
```c
|
||||
/**
|
||||
@@ -256,7 +256,7 @@ javac Circle_Test.java
|
||||
发现生成了两个文件
|
||||

|
||||
|
||||
这两个class文件是java编译后的文件,类似Windows中的exe文件。但是这个文件不能直接运行,需要在Java虚拟机(VirtualMachine)中运行。
|
||||
这两个class文件是Java编译后的文件,类似Windows中的exe文件。但是这个文件不能直接运行,需要在Java虚拟机(VirtualMachine)中运行。
|
||||
|
||||
接下来使用命令行
|
||||
|
||||
@@ -275,7 +275,7 @@ The position x=1, y=1, radius=3.300000!
|
||||
|
||||
**文件名必须是 Circle_Test.java,这个文件名的主文件名必须和源文件中 public class Circle_Test {...} 的类名保持一致。**
|
||||
|
||||
**javac是编译命令,java是运行命令(使用java虚拟机运行编译后的代码)。关于虚拟机下面会讲到。**
|
||||
**javac是编译命令,java是运行命令(使用Java虚拟机运行编译后的代码)。关于虚拟机下面会讲到。**
|
||||
|
||||
## 3. JAVA的特点和历史
|
||||
|
||||
@@ -293,13 +293,13 @@ The position x=1, y=1, radius=3.300000!
|
||||
|
||||

|
||||
|
||||
这种分层的设计理念我们在很多地方都用到,例如网络的TCP/IP协议层,软件系统当中的分层设计。分层的设计的目的就是为上层提供统一且稳定的服务而隔离下层的不同。从上图知,如果操作系统是Windows,无论硬件是Intel还是AMD,上层的应用都可以不做修改的运行(当然CPU架API: application programming interface JDK: Java Developing Kit IDE: Integrated Development Environment 构需要一致)。而Java的高明之处就在于Java自己有虚拟机,屏蔽了所有下层的不同,只要是Java的应用,在有Java虚拟机的平台上都可以运行。
|
||||
这种分层的设计理念我们在很多地方都用到,例如网络的TCP/IP协议层,软件系统当中的分层设计。分层的设计的目的就是为上层提供统一且稳定的服务而隔离下层的不同。从上图知,如果操作系统是Windows,无论硬件是Intel还是AMD,上层的应用都可以不做修改的运行(当然CPU架构需要一致)。而Java的高明之处就在于Java自己有虚拟机,屏蔽了所有下层的不同,只要是Java的应用,在有Java虚拟机的平台上都可以运行。
|
||||
|
||||
### 3.2. Java的编译和运行
|
||||
|
||||

|
||||
|
||||
**bytecode是java编译后的二进制代码,只能在java虚拟机上运行。**
|
||||
**bytecode是Java编译后的二进制代码,只能在Java虚拟机上运行。**
|
||||
|
||||
### 3.3. 基本概念
|
||||
|
||||
@@ -307,8 +307,8 @@ The position x=1, y=1, radius=3.300000!
|
||||
|
||||
#### 3.3.1. JDK、API、IDE
|
||||
|
||||
1. API: application programming interface,应用编程接口。Java提供了一套最基本的类,包括文件操作、网络操作、数学运算、输出输出、数据结构等,用来简化你的开发。这些其实是最基本的数据结构和操作函数,只不过Java是按照类(class)的方式来组织,的;类比C语言中的标准函数库是按照头文件和C文件来组织的。
|
||||
2. JDK: Java Developing Kit,是Java的开发套件。类比C语言,可以看作是编译器、链接器这些命令行工具。不同的是,Java没有链接,只有编译工具(Javac);另外Java编译后的代码(.class文件,有叫做bytecode)不能直接运行,需要使用java虚拟机(java)运行。
|
||||
1. API: application programming interface,应用编程接口。Java提供了一套最基本的类,包括文件操作、网络操作、数学运算、输出输出、数据结构等,用来简化你的开发。这些其实是最基本的数据结构和操作函数,只不过Java是按照类(class)的方式来组织的;类比C语言中的标准函数库是按照头文件和C文件来组织的。
|
||||
2. JDK: Java Developing Kit,是Java的开发套件。类比C语言,可以看作是编译器、链接器这些命令行工具。不同的是,Java没有链接,只有编译工具(Javac);另外Java编译后的代码(.class文件,又叫做bytecode)不能直接运行,需要使用Java虚拟机(java)运行。
|
||||
3. IDE: Integrated Development Environment,这是集成开发环境。一般人不会用写字板和命令行行(Jdk)来开发Java,因为效率太低了。
|
||||
|
||||
## 4. JAVA开发环境
|
||||
@@ -329,7 +329,7 @@ Eclipse 是一个开放的框架,基于Eclipse框架的有很多不同语言
|
||||
|
||||
### 4.2. 运行
|
||||
|
||||
启动Eclipse,出现一个Workspace(工作空间)的选择。工作空间是一个目录,Eclipse在这个目录中可以建立多个项目(Project),每个项目可以包含多个java源代码文件。Eclipse在每次运行的时候会让你选择Workspace,这样Workspace->Project->Source code 就是Eclipse管理源代码的层级关系。
|
||||
启动Eclipse,出现一个Workspace(工作空间)的选择。工作空间是一个目录,Eclipse在这个目录中可以建立多个项目(Project),每个项目可以包含多个Java源代码文件。Eclipse在每次运行的时候会让你选择Workspace,这样Workspace->Project->Source code 就是Eclipse管理源代码的层级关系。
|
||||
|
||||

|
||||
|
||||
@@ -417,7 +417,7 @@ public class Hello {
|
||||
}
|
||||
```
|
||||
|
||||
保存(ctl+s)后,可以运行看看结果:
|
||||
保存(Ctrl+S)后,可以运行看看结果:
|
||||
|
||||

|
||||
|
||||
@@ -425,7 +425,7 @@ public class Hello {
|
||||
|
||||

|
||||
|
||||
我们看看文件系统中的情况,如上图。包其实对应到的就是文件夹。当然一个包中可以再包含子包,如果一个文件夹中可以包含子文件夹一样。
|
||||
我们看看文件系统中的情况,如上图。包其实对应的就是文件夹。当然一个包中可以再包含子包,如同一个文件夹中可以包含子文件夹一样。
|
||||
|
||||
**类名永远是和文件名对应的,类名是Hello,对应的文件就是Hello.java**
|
||||
|
||||
@@ -452,7 +452,7 @@ public class Hello {
|
||||
}
|
||||
```
|
||||
|
||||
注意,第一行并没有 package 这个申明。在看看文件系统:
|
||||
注意,第一行并没有 package 这个声明。在看看文件系统:
|
||||
|
||||

|
||||
|
||||
@@ -460,7 +460,7 @@ Hello.java 这个文件的确在src文件夹中。
|
||||
|
||||
**src文件夹中的类文件的package可以不用写,代表在缺省包中,也就是src这个文件夹中。**
|
||||
|
||||
**如果需要改变源文件的位置,请在Eclipse中的项目管理中进行(支持文件的复制、移动、删除等操作)。Eclipse始终会保持源代码中的package申明的正确性。这个功能其实在高级的IDE中叫做重构(Refactor),重构还有很多应用,例如批量修改函数名、变量名等功能,可以在菜单 Refactor 中找到更多的功能。**
|
||||
**如果需要改变源文件的位置,请在Eclipse中的项目管理中进行(支持文件的复制、移动、删除等操作)。Eclipse始终会保持源代码中的package声明的正确性。这个功能其实在高级的IDE中叫做重构(Refactor),重构还有很多应用,例如批量修改函数名、变量名等功能,可以在菜单 Refactor 中找到更多的功能。**
|
||||
|
||||
### 4.3. Java代码结构
|
||||
|
||||
@@ -481,7 +481,7 @@ public class Hello {
|
||||
}
|
||||
```
|
||||
|
||||
1. package:包描述,该源代码在那个包,对应src文件夹中的字文件夹。如果有多个层级的包(src子文件夹中的子文件夹),使用点(.)来分割包名。尝试一下在包下面建立子包后package是如何描述的。package不是必须的,如果java文件在src中,package可以省略,这时表示缺省包。
|
||||
1. package:包描述,该源代码在那个包,对应src文件夹中的子文件夹。如果有多个层级的包(src子文件夹中的子文件夹),使用点(.)来分割包名。尝试一下在包下面建立子包后package是如何描述的。package不是必须的,如果Java文件在src中,package可以省略,这时表示缺省包。
|
||||
2. 一般来说,一个Java文件包含一个类(Class)结构,如果有多个并列的Class结构,只能有一个描述成public。关于public的含义后面会讲到。
|
||||
3. 类名(或者描述成public的类名),这个例子是Hello,必须和主文件名一致。
|
||||
4. Java中的变量、常量、函数等结构都属于一个类(Class),在类外面定义非类(Class)的结构都是非法的。
|
||||
@@ -628,7 +628,7 @@ eclipse的调试界面是单独的布局,第一次运行调试会提示进入
|
||||
|
||||
### 6.2. 代码格式化
|
||||
|
||||
菜单 Souorce->Format 或者快捷键 Ctl+Shift+F ,可以使当前代码快速美化。漂亮的代码缩进和编码规则会让代码更容易阅读。
|
||||
菜单 Source->Format 或者快捷键 Ctrl+Shift+F ,可以使当前代码快速美化。漂亮的代码缩进和编码规则会让代码更容易阅读。
|
||||
|
||||
**不同系统下 Eclipse 的快捷键可能并不相同,注意参考你自己Eclipse的快捷键。**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user