Skip to content

Commit 1c1501a

Browse files
committed
[docs fix]java语言的关键字
`true`, `false`, 和`null`看起来像关键字但不是关键字。
1 parent 618eb20 commit 1c1501a

18 files changed

+101
-93
lines changed
Loading
Loading
Loading
Loading
-3.5 KB
Loading
-142 Bytes
Loading
Loading
Loading
Loading
Loading
-812 Bytes
Loading
Loading
Loading
Loading
Loading
Loading
Loading

docs/java/basis/java-basic-questions-01.md

+101-93
Original file line numberDiff line numberDiff line change
@@ -121,90 +121,13 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
121121

122122
### 字符型常量和字符串常量的区别?
123123

124-
1. **形式** : 字符常量是单引号引起的一个字符,字符串常量是双引号引起的 0 个或若干个字符
125-
2. **含义** : 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)
126-
3. **占内存大小** : 字符常量只占 2 个字节; 字符串常量占若干个字节 (**注意: `char` 在 Java 中占两个字节**)
124+
1. **形式** : 字符常量是单引号引起的一个字符,字符串常量是双引号引起的 0 个或若干个字符
125+
2. **含义** : 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)
126+
3. **占内存大小** : 字符常量只占 2 个字节; 字符串常量占若干个字节
127127

128-
### 使用过可变长参数吗?
128+
(**注意: `char` 在 Java 中占两个字节**)
129129

130-
从 Java5 开始,Java 支持定义可变长参数,所谓可变长参数就是允许在调用方法时传入不定长度的参数。就比如下面的这个 `printVariable` 方法就可以接受 0 个或者多个参数。
131-
132-
```java
133-
public static void method1(String... args) {
134-
//......
135-
}
136-
```
137-
138-
另外,可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数。
139-
140-
```java
141-
public static void method2(String arg1, String... args) {
142-
//......
143-
}
144-
```
145-
146-
**遇到方法重载的情况怎么办呢?会优先匹配固定参数还是可变参数的方法呢?**
147-
148-
答案是会优先匹配固定参数的方法,因为固定参数的方法匹配度更高。
149-
150-
我们通过下面这个例子来证明一下。
151-
152-
```java
153-
/**
154-
* 微信搜 JavaGuide 回复"面试突击"即可免费领取个人原创的 Java 面试手册
155-
*
156-
* @author Guide哥
157-
* @date 2021/12/13 16:52
158-
**/
159-
public class VariableLengthArgument {
160-
161-
public static void printVariable(String... args) {
162-
for (String s : args) {
163-
System.out.println(s);
164-
}
165-
}
166-
167-
public static void printVariable(String arg1, String arg2) {
168-
System.out.println(arg1 + arg2);
169-
}
170-
171-
public static void main(String[] args) {
172-
printVariable("a", "b");
173-
printVariable("a", "b", "c", "d");
174-
}
175-
}
176-
```
177-
178-
输出:
179-
180-
```
181-
ab
182-
a
183-
b
184-
c
185-
d
186-
```
187-
188-
另外,Java 的可变参数编译后实际会被转换成一个数组,我们看编译后生成的 `class`文件就可以看出来了。
189-
190-
```java
191-
public class VariableLengthArgument {
192-
193-
public static void printVariable(String... args) {
194-
String[] var1 = args;
195-
int var2 = args.length;
196-
197-
for(int var3 = 0; var3 < var2; ++var3) {
198-
String s = var1[var3];
199-
System.out.println(s);
200-
}
201-
202-
}
203-
// ......
204-
}
205-
```
206-
207-
### 注释有哪几种?注释越多越好吗?
130+
### 注释有哪几种形式?
208131

209132
Java 中的注释有三种:
210133

@@ -239,23 +162,25 @@ Java 中的注释有三种:
239162
240163
### 标识符和关键字的区别是什么?
241164
242-
在我们编写程序的时候,需要大量地为程序、类、变量、方法等取名字,于是就有了标识符,简单来说,标识符就是一个名字。但是有一些标识符,Java 语言已经赋予了其特殊的含义,只能用于特定的地方,这些特殊的标识符就是关键字。因此,关键字是被赋予特殊含义的标识符。比如,在我们的日常生活中,如果我们想要开一家店,则要给这个店起一个名字,起的这个“名字”就叫标识符。但是我们店的名字不能叫“警察局”,因为“警察局”这个名字已经被赋予了特殊的含义,而“警察局”就是我们日常生活中的关键字
165+
在我们编写程序的时候,需要大量地为程序、类、变量、方法等取名字,于是就有了 **标识符**简单来说, **标识符就是一个名字**
243166
244-
### Java 中的 `53` 个关键字
167+
有一些标识符,Java 语言已经赋予了其特殊的含义,只能用于特定的地方,这些特殊的标识符就是 **关键字** 。简单来说,**关键字是被赋予特殊含义的标识**符 。比如,在我们的日常生活中,如果我们想要开一家店,则要给这个店起一个名字,起的这个“名字”就叫标识符。但是我们店的名字不能叫“警察局”,因为“警察局”这个名字已经被赋予了特殊的含义,而“警察局”就是我们日常生活中的关键字。
168+
169+
### Java 语言关键字有哪些?
245170
246171
| 分类 | 关键字 | | | | | | |
247-
| :------------------- | -------- | ---------- | -------- | ------------ | ---------- | --------- | ------ |
248-
| 访问控制 | private | protected | public | | | | |
172+
| :------------------- | -------- |-------- | -------- | -------- | --------| --------| -------- |
173+
| 访问控制 | private | protected | public | | | | |
249174
| 类,方法和变量修饰符 | abstract | class | extends | final | implements | interface | native |
250175
| | new | static | strictfp | synchronized | transient | volatile | enum |
251-
| 程序控制 | break | continue | return | do | while | if | else |
176+
| 程序控制 | break | continue | return | do | while | if | else |
252177
| | for | instanceof | switch | case | default | assert | |
253-
| 错误处理 | try | catch | throw | throws | finally | | |
254-
| 包相关 | import | package | | | | | |
255-
| 基本类型 | boolean | byte | char | double | float | int | long |
256-
| | short | null | true | false | | | |
257-
| 变量引用 | super | this | void | | | | |
258-
| 保留字 | goto | const | | | | | |
178+
| 错误处理 | try | catch | throw | throws | finally | | |
179+
| 包相关 | import | package | | | | | |
180+
| 基本类型 | boolean | byte | char | double | float | int | long |
181+
| | short | | | | | | |
182+
| 变量引用 | super | this | void | | | | |
183+
| 保留字 | goto | const | | | | | |
259184
260185
> Tips:所有的关键字都是小写的,在 IDE 中会以特殊颜色显示。
261186
>
@@ -265,6 +190,10 @@ Java 中的注释有三种:
265190
> - 在类,方法和变量修饰符中,从 JDK8 开始引入了默认方法,可以使用 `default` 关键字来定义一个方法的默认实现。
266191
> - 在访问控制中,如果一个方法前没有任何修饰符,则默认会有一个修饰符 `default`,但是这个修饰符加上了就会报错。
267192
193+
注意 ⚠️:`true`, `false`, 和`null`看起来像关键字但不是关键字。
194+
195+
官方文档:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html 。
196+
268197
### 自增自减运算符
269198
270199
在写代码的过程中,常见的一种情况是需要某个整数类型变量增加 1 或减少 1,Java 提供了一种特殊的运算符,用于这种表达式,叫做自增运算符(++)和自减运算符(--)。
@@ -626,6 +555,85 @@ public native int hashCode();
626555
627556
更多关于 `hashCode()` 和 `equals()` 的内容可以查看:[Java hashCode() 和 equals()的若干问题解答](https://www.cnblogs.com/skywang12345/p/3324958.html)
628557
558+
### 什么是可变长参数?
559+
560+
Java5 开始,Java 支持定义可变长参数,所谓可变长参数就是允许在调用方法时传入不定长度的参数。就比如下面的这个 `printVariable` 方法就可以接受 0 个或者多个参数。
561+
562+
```java
563+
public static void method1(String... args) {
564+
//......
565+
}
566+
```
567+
568+
另外,可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数。
569+
570+
```java
571+
public static void method2(String arg1, String... args) {
572+
//......
573+
}
574+
```
575+
576+
**遇到方法重载的情况怎么办呢?会优先匹配固定参数还是可变参数的方法呢?**
577+
578+
答案是会优先匹配固定参数的方法,因为固定参数的方法匹配度更高。
579+
580+
我们通过下面这个例子来证明一下。
581+
582+
```java
583+
/**
584+
* 微信搜 JavaGuide 回复"面试突击"即可免费领取个人原创的 Java 面试手册
585+
*
586+
* @author Guide哥
587+
* @date 2021/12/13 16:52
588+
**/
589+
public class VariableLengthArgument {
590+
591+
public static void printVariable(String... args) {
592+
for (String s : args) {
593+
System.out.println(s);
594+
}
595+
}
596+
597+
public static void printVariable(String arg1, String arg2) {
598+
System.out.println(arg1 + arg2);
599+
}
600+
601+
public static void main(String[] args) {
602+
printVariable("a", "b");
603+
printVariable("a", "b", "c", "d");
604+
}
605+
}
606+
```
607+
608+
输出:
609+
610+
```
611+
ab
612+
a
613+
b
614+
c
615+
d
616+
```
617+
618+
另外,Java 的可变参数编译后实际会被转换成一个数组,我们看编译后生成的 `class`文件就可以看出来了。
619+
620+
```java
621+
public class VariableLengthArgument {
622+
623+
public static void printVariable(String... args) {
624+
String[] var1 = args;
625+
int var2 = args.length;
626+
627+
for(int var3 = 0; var3 < var2; ++var3) {
628+
String s = var1[var3];
629+
System.out.println(s);
630+
}
631+
632+
}
633+
// ......
634+
}
635+
```
636+
629637
## 基本数据类型
630638
631639
### Java 中的几种基本数据类型了解么?

0 commit comments

Comments
 (0)