1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Update java-basic-questions-01.md

This commit is contained in:
guide 2022-02-16 15:45:35 +08:00
parent 60d1300ade
commit 47e441df9d

View File

@ -256,15 +256,12 @@ Java 中的注释有三种:
| 变量引用 | super | this | void | | | | |
| 保留字 | goto | const | | | | | |
> Tips所有的关键字都是小写的`IDE` 中表现为<font color=blue>蓝色</font>
> `default` 这个关键字很特殊,既属于`程序控制`,也属于`类,方法和变量修饰符`,还属于`访问控制`
> Tips所有的关键字都是小写的在 IDE 中会以特殊颜色显示。
>
> `程序控制`中,当在 `switch` 中匹配不到任何情况时,可以使用 `default` 来编写默认匹配的情况
> `default` 这个关键字很特殊,既属于程序控制,也属于类,方法和变量修饰符,还属于访问控制。
>
> 在`类,方法和变量修饰符`中,从 `JDK8` 开始引入了默认方法,可以使用 `default` 关键字来定义一个方法的默认实现。
>
> 在`访问控制`中,如果一个方法前没有任何修饰符,则默认会有一个修饰符 `default`,但是这个修饰符加上了就会报错。
> - 在程序控制中,当在 `switch` 中匹配不到任何情况时,可以使用 `default` 来编写默认匹配的情况。在类,方法和变量修饰符中,从 JDK8 开始引入了默认方法,可以使用 `default` 关键字来定义一个方法的默认实现。
> - 在访问控制中,如果一个方法前没有任何修饰符,则默认会有一个修饰符 `default`,但是这个修饰符加上了就会报错。
### 自增自减运算符
@ -315,6 +312,7 @@ Java 中的注释有三种:
```
运行结果:
```
0
xixi
@ -435,7 +433,7 @@ public class Person {
>
> 编译器必须挑选出具体执行哪个方法,它通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来挑选出相应的方法。 如果编译器找不到匹配的参数, 就会产生编译时错误, 因为根本不存在匹配, 或者没有一个比其他的更好(这个过程被称为重载解析(overloading resolution))。
>
> Java 允许重载任何方法, 而不只是构造器方法。
> Java 允许重载任何方法, 而不只是构造器方法。
综上:重载就是同一个类中多个同名方法根据不同的传参来执行不同的逻辑处理。
@ -449,14 +447,14 @@ public class Person {
综上:**重写就是子类对父类方法的重新改造,外部样子不能改变,内部逻辑可以改变。**
| 区别点 | 重载方法 | 重写方法 |
| :--------- | :------- | :----------------------------------------------------------- |
| 发生范围 | 同一个类 | 子类 |
| 参数列表 | 必须修改 | 一定不能修改 |
| 返回类型 | 可修改 | 子类方法返回值类型应比父类方法返回值类型更小或相等 |
| 区别点 | 重载方法 | 重写方法 |
| :--------- | :------- | :--------------------------------------------------------------- |
| 发生范围 | 同一个类 | 子类 |
| 参数列表 | 必须修改 | 一定不能修改 |
| 返回类型 | 可修改 | 子类方法返回值类型应比父类方法返回值类型更小或相等 |
| 异常 | 可修改 | 子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等; |
| 访问修饰符 | 可修改 | 一定不能做更严格的限制(可以降低限制) |
| 发生阶段 | 编译期 | 运行期 |
| 访问修饰符 | 可修改 | 一定不能做更严格的限制(可以降低限制) |
| 发生阶段 | 编译期 | 运行期 |
**方法的重写要遵循“两同两小一大”**(以下内容摘录自《疯狂 Java 讲义》,[issue#892](https://github.com/Snailclimb/JavaGuide/issues/892)