1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-20 22:17:09 +08:00

Merge pull request #787 from yazhouasu/JavaGuide-fs

Java guide fs
This commit is contained in:
SnailClimb 2020-05-23 09:17:09 +08:00 committed by GitHub
commit ead40efdcd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 89 additions and 14 deletions

View File

@ -110,7 +110,15 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
所以,实际上 java 和 javax 没有区别。这都是一个名字。 所以,实际上 java 和 javax 没有区别。这都是一个名字。
### 1.2 Java 语法
#### 1.1.8 为什么说Java语言“编译与解释并存”
高级编程语言按照程序的执行方式分为编译型和解释型两种。简单来说,编译型语言是指编译器针对特定的操作系统将源代码一次性翻译成可被该平台执行的机器码;解释型语言是指解释器对源程序逐行解释成特定平台的机器码并立即执行。比如,你想阅读一本英文名著,你可以找一个英文翻译人员帮助你阅读,
有两种选择方式,你可以先等翻译人员将全本的英文名著(也就是源码)都翻译成汉语,再去阅读,也可以让翻译人员翻译一段,你在旁边阅读一段,慢慢把书读完。
Java语言既具有编译型语言的特征也具有解释型语言的特征因为Java程序要经过先编译后解释两个步骤由Java编写的程序需要先经过编译步骤生成字节码*.class文件这种字节码必须由Java解释器来解释执行。因此我们可以认为Java语言编译与解释并存。
### 1.2 Java语法
#### 1.2.1 字符型常量和字符串常量的区别? #### 1.2.1 字符型常量和字符串常量的区别?
@ -121,7 +129,27 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
> java 编程思想第四版2.2.2 节 > java 编程思想第四版2.2.2 节
> ![](http://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-9-15/86735519.jpg) > ![](http://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-9-15/86735519.jpg)
### 1.3 Java 流程控制 #### 1.2.2 为什么要写注释?
Java中的注释有三种单行注释、多行注释和文档注释。在我们编写代码的时候如果代码量比较少我们自己或者团队其他成员还可以很轻易地看懂代码但是当项目结构一旦复杂起来我们就需要用到注释了。注释并不会执行是我们程序员写给自己看的注释是你的代码说明书能够帮助看代码的人快速地理清代码之间的逻辑关系。因此在写程序的时候随手加上注释是一个非常好的习惯。
#### 1.2.3 标识符和关键字的区别是什么?
在我们编写程序的时候需要大量地为程序、类、变量、方法等取名字于是就有了标识符简单来说标识符就是一个名字。但是有一些标识符Java语言已经赋予了其特殊的含义只能用于特定的地方这种特殊的标识符就是关键字。因此关键字是被赋予特殊含义的标识符。比如在我们的日常生活中 ,“警察局”这个名字已经被赋予了特殊的含义,所以如果你开一家店,店的名字不能叫“警察局”,“警察局”就是我们日常生活中的关键字。
#### 1.2.4 自增自减运算符
在写代码的过程中常见的一种情况是需要某个整数类型变量增加1或减少1Java提供了一种特殊的运算符用于这种表达式叫做自增运算符++)和自减运算符(--)。++和--运算符可以放在操作数之前,也可以放在操作数之后,当运算符放在操作数之前时,先自增/减,再赋值;当运算符放在操作数之后时,先赋值,再自增/减。例如当“b=++a”时先自增自己增加1再赋值赋值给b当“b=a++”时,先赋值(赋值给b)再自增自己增加1。也就是++a输出的是a+1的值a++输出的是a值。用一句口诀就是“符号在前就先加/减,符号在后就后加/减”。
### 1.3 Java流程控制
#### 1.3.1 continue、break、和return的区别是什么
在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到跳转语句。
continue跳转语句是指跳出当前的这一次循环继续下一次循环。
break跳转语句是指跳出整个循环体继续执行循环下面的语句。
return跳转语句是指跳出所在方法结束该方法的运行。
### 1.4 数组 ### 1.4 数组
@ -179,6 +207,59 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
![deep and shallow copy](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-7/java-deep-and-shallow-copy.jpg) ![deep and shallow copy](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-7/java-deep-and-shallow-copy.jpg)
#### 1.5.5 方法的四种类型
1、无参数无返回值的方法
```java
// 无参数无返回值的方法(如果方法没有返回值不能不写必须写void表示没有返回值)
public void f1() {
System.out.println("无参数无返回值的方法");
}
```
2、有参数无返回值的方法
```java
/**
* 有参数无返回值的方法
* 参数列表由零组到多组“参数类型+形参名”组合而成,多组参数之间以英文逗号(,)隔开,形参类型和形参名之间以英文空格隔开
*/
public void f2(int a, String b, int c) {
System.out.println(a + "-->" + b + "-->" + c);
}
```
3、有返回值无参数的方法
```java
// 有返回值无参数的方法(返回值可以是任意的类型,在函数里面必须有return关键字返回对应的类型
public int f3() {
System.out.println("有返回值无参数的方法");
return 2;
}
```
4、有返回值有参数的方法
```java
// 有返回值有参数的方法
public int f4(int a, int b) {
return a * b;
}
```
5、return在无返回值方法的特殊使用
```java
// return在无返回值方法的特殊使用
public void f5(int a) {
if (a>10) {
return;//表示结束所在方法 f5方法的执行,下方的输出语句不会执行
}
System.out.println(a);
}
```
## 2. Java面向对象
## 2. Java 面向对象 ## 2. Java 面向对象
### 2.1 类和对象 ### 2.1 类和对象
@ -303,14 +384,6 @@ public class Student {
详见笔主的这篇文章: https://snailclimb.gitee.io/javaguide/#/docs/java/basic/final,static,this,super 详见笔主的这篇文章: https://snailclimb.gitee.io/javaguide/#/docs/java/basic/final,static,this,super
#### 2.3.4 关于 final 关键字的一些总结
final 关键字主要用在三个地方:变量、方法、类。
1. 对于一个 final 变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
2. 当用 final 修饰一个类时表明这个类不能被继承。final 类中的所有成员方法都会被隐式地指定为 final 方法。
3. 使用 final 方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的 Java 实现版本中,会将 final 方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的 Java 版本已经不需要使用 final 方法进行这些优化了)。类中所有的 private 方法都隐式地指定为 final。
### 2.4 接口 ### 2.4 接口
#### 2.4.1 接口和抽象类的区别是什么? #### 2.4.1 接口和抽象类的区别是什么?

View File

@ -23,13 +23,15 @@
## final 关键字 ## final 关键字
**final关键字主要用在三个地方:变量、方法、类。** **final关键字,意思是最终的、不可修改的,最见不得变化 ,用来修饰类、方法和变量,具有以下特点:**
1. **对于一个final变量如果是基本数据类型的变量则其数值一旦在初始化之后便不能更改如果是引用类型的变量则在对其初始化之后便不能再让其指向另一个对象。** 1. **final修饰的类不能被继承final类中的所有成员方法都会被隐式的指定为final方法**
2. **当用final修饰一个类时表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。** 2. **final修饰的方法不能被重写**
3. 使用final方法的原因有两个。第一个原因是把方法锁定以防任何继承类修改它的含义第二个原因是效率。在早期的Java实现版本中会将final方法转为内嵌调用。但是如果方法过于庞大可能看不到内嵌调用带来的任何性能提升现在的Java版本已经不需要使用final方法进行这些优化了。类中所有的private方法都隐式地指定为final。 3. **final修饰的变量是常量如果是基本数据类型的变量则其数值一旦在初始化之后便不能更改如果是引用类型的变量则在对其初始化之后便不能让其指向另一个对象。**
说明使用final方法的原因有两个。第一个原因是把方法锁定以防任何继承类修改它的含义第二个原因是效率。在早期的Java实现版本中会将final方法转为内嵌调用。但是如果方法过于庞大可能看不到内嵌调用带来的任何性能提升现在的Java版本已经不需要使用final方法进行这些优化了。类中所有的private方法都隐式地指定为final。
## static 关键字 ## static 关键字