diff --git a/01:概述/01.md b/01:概述/01.md index 33841d2..b97c091 100644 --- a/01:概述/01.md +++ b/01:概述/01.md @@ -1,4 +1,43 @@ -## 1. 什么是面向对象? +- [1. How to learn Java?](#1-how-to-learn-java) +- [2. 什么是面向对象?](#2-什么是面向对象) + - [2.1. 用C来描述一个对象](#21-用c来描述一个对象) + - [2.2. C语言描述圆的总结](#22-c语言描述圆的总结) + - [2.3. 使用Java来实现](#23-使用java来实现) + - [2.3.1. 编译和运行Java](#231-编译和运行java) +- [3. JAVA的特点和历史](#3-java的特点和历史) + - [3.1. Java虚拟机](#31-java虚拟机) + - [3.2. Java的编译和运行](#32-java的编译和运行) + - [3.3. 基本概念](#33-基本概念) + - [3.3.1. JDK、API、IDE](#331-jdkapiide) +- [4. JAVA开发环境](#4-java开发环境) + - [4.1. 安装](#41-安装) + - [4.2. 运行](#42-运行) + - [4.2.1. 新建项目](#421-新建项目) + - [4.2.2. Hello world](#422-hello-world) + - [4.2.3. 包和源文件结构](#423-包和源文件结构) + - [4.3. Java代码结构](#43-java代码结构) + - [4.3.1. 关于指针](#431-关于指针) +- [5. 错误类型](#5-错误类型) + - [5.1. Syntax Errors](#51-syntax-errors) + - [5.2. Runtime Errors](#52-runtime-errors) + - [5.3. Logic Errors](#53-logic-errors) + - [5.4. Debug](#54-debug) + - [5.4.1. 设置中断](#541-设置中断) + - [5.4.2. 调试界面](#542-调试界面) +- [6. 小技巧](#6-小技巧) + - [6.1. 让Eclipse任何时候都进行提示(代码补全)](#61-让eclipse任何时候都进行提示代码补全) + - [6.2. 代码格式化](#62-代码格式化) +- [7. 本章节重点](#7-本章节重点) + +## 1. How to learn Java? + +- Java可以用在什么地方? +- Java和其他语言有什么不同? +- 为什么使用英语学习Java? +- 什么是面向对象? +- AI时代如何学好Java? + +## 2. 什么是面向对象? 对象(Object)这个概念广泛存在于我们的生活当中,一般只一个独立的个体,具备一定的特性(properties),并有一定的动作能力(capability)。例如,一个具体的人,具备属性(性别、年龄、升高...);同时具备一定的能力(说话、跑步、工作...) @@ -6,7 +45,7 @@ 下面用一个例子来说明面向对象编程的基本思想。 -### 1.1. 用C来描述一个对象 +### 2.1. 用C来描述一个对象 我们以一个简单的例子来分析面向对象,这个例子是描述平面中的一个圆。这里我们需要两组参数来描述圆,第一个参数是坐标位置(X、Y);另外一个是圆本生的描述,例如大小(半径r),可能还有颜色等等,简单来说,我们目前只有半径。 @@ -114,7 +153,7 @@ int main() { } ``` -### 1.2. C语言描述圆的总结 +### 2.2. C语言描述圆的总结 1. 圆的结构体描述是一个抽象的描述,因为结构体是类型定义,并没有与其对应的变量;这儿描述和后面的Java类的定义很像。 2. 声明一个结构体变量后就有一个真实的内存变量来描述一个特定的圆了,这个变量是圆(抽象描述的)一个实例(实体),也叫做对象;这个概念和Java的对象非常相似; @@ -146,7 +185,7 @@ c1.print(); // C语言无法做到 当然面向对象不止有扩展结构体这样简单的功能,还需要学到相关的继承、多态、接口等高级特性,用来简化代码的编写。 -### 1.3. 使用Java来实现 +### 2.3. 使用Java来实现 接下来我们使用java来实现上述的功能,这里主要是要把相关的函数作为结构体的一个部分。 @@ -204,7 +243,7 @@ public class Circle_Test { 6. Java中类包含了函数,这是C中结构体不具备的能力。 7. C和Java都有主函数Main,他们的写法有什么不一样? -#### 1.3.1. 编译和运行Java +#### 2.3.1. 编译和运行Java 把Java代码保存到Circle_Test.java的文件名中。 @@ -238,9 +277,9 @@ The position x=1, y=1, radius=3.300000! **javac是编译命令,java是运行命令(使用java虚拟机运行编译后的代码)。关于虚拟机下面会讲到。** -## 2. JAVA的特点和历史 +## 3. JAVA的特点和历史 -### 2.1. Java虚拟机 +### 3.1. Java虚拟机 在我们学习Java之前,先来看看程序(应用)是如何运行的。 @@ -256,23 +295,23 @@ 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虚拟机的平台上都可以运行。 -### 2.2. Java的编译和运行 +### 3.2. Java的编译和运行 ![](img/20230302095100.png) **bytecode是java编译后的二进制代码,只能在java虚拟机上运行。** -### 2.3. 基本概念 +### 3.3. 基本概念 **The Java Language Specification, API, JDK, and IDE** -#### 2.3.1. JDK、API、IDE +#### 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)运行。 3. IDE: Integrated Development Environment,这是集成开发环境。一般人不会用写字板和命令行行(Jdk)来开发Java,因为效率太低了。  -## 3. JAVA开发环境 +## 4. JAVA开发环境 使用命令行和文本编辑器也可以编辑和运行Java,但是效率很低,因此我们需要一个集成开发环境(IDE Integrated Development Environment)来编辑、运行和调试Java代码。 @@ -280,7 +319,7 @@ The position x=1, y=1, radius=3.300000! **你可以使用任何IDE来开发Java,但是考试的时候只提供 Eclipse。因此掌握Eclipse是必须的。** -### 3.1. 安装 +### 4.1. 安装 Eclipse 是一个开放的框架,基于Eclipse框架的有很多不同语言的IDE,包括C、PHP、Python等;我们只需要下载Java的IDE就可以了。访问 [Eclipse 官方网站](https://www.eclipse.org/downloads/packages/) ,下载 "Eclipse IDE for Java Developers";你需要根据你的平台来选择。 @@ -288,7 +327,7 @@ Eclipse 是一个开放的框架,基于Eclipse框架的有很多不同语言 解压缩后双击eclipse.exe 就可以运行。 -### 3.2. 运行 +### 4.2. 运行 启动Eclipse,出现一个Workspace(工作空间)的选择。工作空间是一个目录,Eclipse在这个目录中可以建立多个项目(Project),每个项目可以包含多个java源代码文件。Eclipse在每次运行的时候会让你选择Workspace,这样Workspace->Project->Source code 就是Eclipse管理源代码的层级关系。 @@ -302,7 +341,7 @@ Eclipse 是一个开放的框架,基于Eclipse框架的有很多不同语言 除了菜单、工具条,Eclipse大约分为上述4个区间。 -#### 3.2.1. 新建项目 +#### 4.2.1. 新建项目 在左边有"Create a Java project"的快捷方式新建一个项目,也可以在File->New菜单中找到新建项目的功能。 @@ -323,7 +362,7 @@ Eclipse 是一个开放的框架,基于Eclipse框架的有很多不同语言 这个界面中项目名称不用说了;JRE System Library 是虚拟机提供的库,类似C语言中提供的标准库(文件、算术、网络库等),这些库中的类(C语言中是头文件)是可以在我们源代码中引用的;src是一个特殊的文件夹,所有的Java源代码必须在这个文件夹中。 -#### 3.2.2. Hello world +#### 4.2.2. Hello world 我们建立一个简单的Hello world 程序,这里会使用到包的概念。 @@ -382,7 +421,7 @@ public class Hello { ![](img/20230302095908.png) -#### 3.2.3. 包和源文件结构 +#### 4.2.3. 包和源文件结构 ![](img/20230302095923.png) @@ -423,7 +462,7 @@ Hello.java 这个文件的确在src文件夹中。 **如果需要改变源文件的位置,请在Eclipse中的项目管理中进行(支持文件的复制、移动、删除等操作)。Eclipse始终会保持源代码中的package申明的正确性。这个功能其实在高级的IDE中叫做重构(Refactor),重构还有很多应用,例如批量修改函数名、变量名等功能,可以在菜单 Refactor 中找到更多的功能。** -### 3.3. Java代码结构 +### 4.3. Java代码结构 总的来说,Java是一种类C的语言,基本语法和C十分相似。例如函数、变量名命名规则,代码块,判断、选择语句,循环语句,注解等都保持和C一致。 @@ -451,7 +490,7 @@ public class Hello { 后续的学习中会学到更多关于语法方面的内容,这里只做一个初步的了解。 -#### 3.3.1. 关于指针 +#### 4.3.1. 关于指针 这里讨论指针比较早,C中的指针是一个非常重要的概念,在Java中关于类似C指针的概念有区别,这里需要进行说明,请大家先有个印象。 @@ -460,11 +499,11 @@ public class Hello { 关于引用的具体内容我们放在函数和类中进行讲解。 -## 4. 错误类型 +## 5. 错误类型 错误类型包含三种:Syntax Errors、Runtime Errors、Logic Errors。 -### 4.1. Syntax Errors +### 5.1. Syntax Errors 语法错误,编译的时候发现,例如: @@ -476,7 +515,7 @@ public class ShowSyntaxErrors { } ``` -### 4.2. Runtime Errors +### 5.2. Runtime Errors 运行时错误,运行时产生的错误,例如空对象操作、0作为除数、文件不存在等。运行时错误是我们需要特别关注的,因为会导致程序的流程异常,产生意想不到的结果。例如下面这个例子: @@ -490,7 +529,7 @@ public class ShowRuntimeErrors { 运行时错误也叫做异常(Exception),后面会专门讲到异常处理。 -### 4.3. Logic Errors +### 5.3. Logic Errors 逻辑错误,简单说来就是语法没错、也没有运行时错误(异常),但是结果错误了。通常是编程者的算法错了,例如: @@ -505,7 +544,7 @@ public class ShowLogicErrors { 你认为上面代码的结果是什么? -### 4.4. Debug +### 5.4. Debug **debug功能非常重要,虽然考试不会直接考,但是debug会极大的加快编码调试的效率,请同学们一定重视。** @@ -541,13 +580,13 @@ public class Debug { 0,1,2,3,4,5,6,7,8,9, ``` -#### 4.4.1. 设置中断 +#### 5.4.1. 设置中断 ![](img/20230302100434.png) 在需要中断(程序会在进入这一行之前暂停)的源代码行号前面双击,会出现一个蓝色的点,表示中断以及设置成功,接下来点击调试按钮就可以让程序运行,并且在设置中断的地方暂停。 -#### 4.4.2. 调试界面 +#### 5.4.2. 调试界面 eclipse的调试界面是单独的布局,第一次运行调试会提示进入调试界面,单击switch按钮就可以了。运行调试后出现下面的界面: @@ -575,11 +614,11 @@ eclipse的调试界面是单独的布局,第一次运行调试会提示进入 ![](img/20230302100555.png) -## 5. 小技巧 +## 6. 小技巧 为了方便我们的编程,以下两个小技巧是最常用到的。 -### 5.1. 让Eclipse任何时候都进行提示(代码补全) +### 6.1. 让Eclipse任何时候都进行提示(代码补全) 代码补全是一个非常好用的工具,当你输入一个字母的时候,IDE会给你提示,这样可以加快编码,同时减少出错。可是缺省情况下,Eclipse只在键盘输入点(.)的时候进行代码提示。如果需要输入任何字母的情况下提示,可以按照以下方法进行设置。 @@ -587,13 +626,13 @@ eclipse的调试界面是单独的布局,第一次运行调试会提示进入 ![](img/20230302100616.png) -### 5.2. 代码格式化 +### 6.2. 代码格式化 菜单 Souorce->Format 或者快捷键 Ctl+Shift+F ,可以使当前代码快速美化。漂亮的代码缩进和编码规则会让代码更容易阅读。 **不同系统下 Eclipse 的快捷键可能并不相同,注意参考你自己Eclipse的快捷键。** -## 6. 本章节重点 +## 7. 本章节重点 1. JDK、API、IDE: P11-1.6 2. Java语言的基本结构:P12-1.7