修正全书错别字、术语统一和逻辑错误

This commit is contained in:
2026-06-10 12:59:03 +08:00
parent ca56eedfda
commit fa6dbeb74e
18 changed files with 198 additions and 87 deletions
+6 -5
View File
@@ -28,7 +28,7 @@ public class ComputeArea {
}
```
2-10行的语法结构和C完全一致,这里我门只关心13行的代码。从第13行代码看出什么?首先是 System.out.pringln 这显然是一个函数,表示要打印一个字符串。
2-10行的语法结构和C完全一致,这里我门只关心13行的代码。从第13行代码看出什么?首先是 System.out.println 这显然是一个函数,表示要打印一个字符串。
**按住ctl键盘,然后鼠标左键点击第13行的println,Eclipse会打开一个新的文件(PrintStream.class),并定位到println这个函数的位置。Eclipse这种特性叫做代码跳转,可以方便的浏览代码。**
@@ -51,7 +51,7 @@ public class ComputeArea {
再总结一下我们学的的:
1. main函数的固定写法;
2. main函数必须在一public类中定义;
2. main函数必须在一public类中定义;
3. 字符串的表示和连接;
4. 如何使用打印函数。
@@ -99,11 +99,11 @@ public class ComputeAreaWithConsoleInput {
因此第6行的Scanner是一个类,使用 new 关键字生成一个对象并把引用地址(指针)赋值给 input 这个变量。
**注意:Scanner即是一个类型,也是一个函数;不过这个函数必须和 new 关键字配合使用,这个函数叫做构造函数,当一个类实例化的时候用作进行一些初始化操作;构造函数是可以带参数的;例如这里的System.in。关于构造函数,后面有专门的内容进行讨论,这里需要进行初步的了解。**
**注意:Scanner即是一个类型,也是一个函数;不过这个函数必须和 new 关键字配合使用,这个函数叫做构造函数,当一个类实例化的时候用作进行一些初始化操作;构造函数是可以带参数的;例如这里的System.in。关于构造函数,后面有专门的内容进行讨论,这里需要进行初步的了解。**
为Scanner类的构造函数传递一个叫做 System.in 的参数,表示Scanner从系统标准输入(一般是键盘)中读取数据。类似C的输入/输出重定向一样,Java也可以从文件读取数据,这个以后再讲。
当生成类型为Scanner的对象input后,就可以直接在input上使用相应的函数读取不同类型的数据了。例如netDouble()函数是从键盘读取一个double类型的值,直到遇到空格或者是回车(空格并不能使nextDouble函数返回,只有回车可以让nextDouble函数返回)。程序在运行到nextDouble这个函数的时候,会等待,直到输入回车后把值读取到radius变量。
当生成类型为Scanner的对象input后,就可以直接在input上使用相应的函数读取不同类型的数据了。例如nextDouble()函数是从键盘读取一个double类型的值,直到遇到空格或者是回车(空格并不能使nextDouble函数返回,只有回车可以让nextDouble函数返回)。程序在运行到nextDouble这个函数的时候,会等待,直到输入回车后把值读取到radius变量。
其他代码比较简单,就不解释了。
@@ -221,4 +221,5 @@ float e = 33.3F;
3. 如何读取键盘输入,以及赋值。注意不同的类型使用不同的函数;
4. 如何判断是否还有没有读取的数据(hasNext函数XXX);
5. 基本数据类型:全部都是小写,以后会学习对应大写的包装类型;都是有符号的;
6. 如何声明常量(final);7. 类型转换以及规则。
6. 如何声明常量(final);
7. 类型转换以及规则。
+2 -2
View File
@@ -4,7 +4,7 @@
Java的布尔类型和C保持一致,基本的运算符也和C保持一致。
**注意,布尔类型是 boolean有大写的布尔类型Boolean。这两个类型是不同的,小写的是基本类型(与C一致);大写的表示封装类型(类)是面向对象的类型。**
**注意,布尔类型是 boolean有大写的布尔类型Boolean。这两个类型是不同的,小写的是基本类型(与C一致);大写的表示封装类型(类)是面向对象的类型。**
### 1.1. 关系运算
@@ -90,7 +90,7 @@ public class LoopRead {
## 2. 重点
本章的内容中的大部分技术要点都与C保持一致,因此需要掌握几个例子就可以了:
本章的内容中的大部分技术要点都与C保持一致,因此需要掌握几个例子就可以了:
1. 以下几个例子都比较简单,需要掌握:
1. AdditionQuiz
+2 -2
View File
@@ -10,7 +10,7 @@
2. 常量
3. 函数
这一章暂时不设计基数据结构,数据结构在另外的章节专门讲解。这里的重点是:
这一章暂时不涉及基础数据结构,数据结构在另外的章节专门讲解。这里的重点是:
1. 常量 PI
2. 取整函数
@@ -245,7 +245,7 @@ public class Main {
}
```
这里 Interger 或者是 Float 是一个类,而非对象。我们把在类上面可以直接调用的方法(不需要实例化成对象),叫做静态方法。关于静态方法,后面学到类的时候还会讲解。
这里 Integer 或者是 Float 是一个类,而非对象。我们把在类上面可以直接调用的方法(不需要实例化成对象),叫做静态方法。关于静态方法,后面学到类的时候还会讲解。
**parseXXX 方法和 valueOf 方法都可以返回相应字符串对应的数值类型(看你是在哪个类型上调用的),区别是 valueOf 返回的是包装类型,parseXXX返回的是基本类型。**
+4 -4
View File
@@ -13,7 +13,7 @@ Java的函数和 C 类似,但因为Java是面向对象的语言,所以又有
空函数在语法上将是存在的,例如下面一个Java的空函数:
```java
void nullFunxtion(){
void nullFunction(){
// 没有算法,不返回,没有任何功能
}
```
@@ -43,7 +43,7 @@ public class Test {
}
```
上面的函数 `static void add(int i)` 这个函数就是没有返回值的,但是函数中的算法有效果:对变量sum进行累加。当然,其他的一些没有返回值的函数可能产其他的效果:例如打印、文件输出、网络连接... 这些都是函数产生的影响,也是函数存在的意义。
上面的函数 `static void add(int i)` 这个函数就是没有返回值的,但是函数中的算法有效果:对变量sum进行累加。当然,其他的一些没有返回值的函数可能产其他的效果:例如打印、文件输出、网络连接... 这些都是函数产生的影响,也是函数存在的意义。
### 1.3. 有返回值的函数
@@ -190,7 +190,7 @@ public class Test {
## 3. 函数签名与函数重载
java中,一个函数能看起来很复杂,不仅有返回值,还有前面的public和static等修饰(这些修饰是可选的)。函数签名的概念是一个函数的函数名连同其形式参数列表叫做函数签名。
Java中,一个函数能看起来很复杂,不仅有返回值,还有前面的public和static等修饰(这些修饰是可选的)。函数签名的概念是一个函数的函数名连同其形式参数列表叫做函数签名。
在一个类中,可能出现两个同名的函数,只要他们的参数列表不同就可以,这种方式叫做函数重载,对比C语言,是没有函数重载的。函数重载避免了C语言中,因为功能相似,而参数名不同需要用多个不同的函数名的问题。大家可以看到C语言的函数名大多很长,其实是因为C的所有函数都是全局存储的(Java是把函数放在盒子Class里,不同的Class中可以存在同名且同参数的函数),另外就是C没有函数重载的机制。
@@ -268,7 +268,7 @@ public class Test {
> You can declare a local variable with the same name multiple times in different non-nesting blocks in a method, but you cannot declare a local variable twice in nested blocks.
上面说明了什么叫做局部变量(就是函数中的变量,这个和C的定义是一致的),以及局部变量的访问范围(作用域)。一句话,局部变量的作用域在其定义的时候开始,一到该语法块结束。
上面说明了什么叫做局部变量(就是函数中的变量,这个和C的定义是一致的),以及局部变量的访问范围(作用域)。一句话,局部变量的作用域在其定义的时候开始,一到该语法块结束。
```java
public class Test {
+6 -6
View File
@@ -26,7 +26,7 @@ public class ArrayTest {
}
```
Java中数组的声明与使用与C类似,`int[] myList` 定义了一个可以存放int数据类型的数组,但是此时还没有为这个数组分配内存。这一点和C的指针类,其实myList这个变量叫做引用变量,也和指针类似。
Java中数组的声明与使用与C类似,`int[] myList` 定义了一个可以存放int数据类型的数组,但是此时还没有为这个数组分配内存。这一点和C的指针类,其实myList这个变量叫做引用变量,也和指针类似。
要为myList这个数组分配内存,使用 `new int[2]` 这种类似的语法。该语法返回一个数组对象的引用地址,数组的容量是2,并赋值给引用变量 myList,然后就可以通过引用变量 myList对数组进行操作了。
@@ -250,7 +250,7 @@ public class Test {
}
```
排序后,数组中的元素按照从小到排列。
排序后,数组中的元素按照从小到排列。
### 2.8. 数组元素的查找
@@ -269,7 +269,7 @@ public class Test {
}
```
这个函数就是binarySearch这个函数指使用注意这个函数的使用,前面的一`java.util.Arrays` 不是都指类的名字;最有最后的 `Arrays` 是类名,而 `java.util` 是命名空间。通常情况下,可以简单的理解命名空间就是目录的层级关系。
这个函数就是binarySearch,注意这个函数的使用,前面的一`java.util.Arrays` 不是都指类的名字;最有最后的 `Arrays` 是类名,而 `java.util` 是命名空间。通常情况下,可以简单的理解命名空间就是目录的层级关系。
关于`java.util.Arrays`这个类还有很多其他函数,可以在IDE中通过输入点(.)查看:
@@ -334,11 +334,11 @@ public class Calculator {
}
```
主函数`void main(String[] args)` 中有有一个args 的字符串数组。编译这个程序,然后在命令行下执行,如果不记得命令行中如何编译和运行java,请参考第一章中的内容。
主函数`void main(String[] args)` 中有有一个args 的字符串数组。编译这个程序,然后在命令行下执行,如果不记得命令行中如何编译和运行Java,请参考第一章中的内容。
![](img/2023-03-04-15-41-18-image.png)
在命令行中运行编译好的代码 `java Calculator 1 + 21` 其中 java是指虚拟机,后面的 `Calculator` 是Java编译后的可执行代码;`1 + 21` 是命令行参数。这个参数会传递给Calculator的主程序,通过main函数的args这个字符串数组解析出来。如同Scanner 对象一样,解析这个数组是按照空格区分的,因此,这个例子中我们得到的args数组是:
在命令行中运行编译好的代码 `java Calculator 1 + 21` 其中java是运行Java程序的命令,后面的 `Calculator` 是Java编译后的可执行代码;`1 + 21` 是命令行参数。这个参数会传递给Calculator的主程序,通过main函数的args这个字符串数组解析出来。如同Scanner 对象一样,解析这个数组是按照空格区分的,因此,这个例子中我们得到的args数组是:
| 数组元素 | 值 | 说明 |
| ------- | --- | --- |
@@ -351,7 +351,7 @@ public class Calculator {
  
## 4. 本章重点
1. 掌握数组的明和使用;
1. 掌握数组的明和使用;
2. 掌握增强for循环的使用;
3. 理解数组作为函数参数的使用;
4. 其他内容均为了解。