@@ -121,90 +121,13 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
121
121
122
122
### 字符型常量和字符串常量的区别?
123
123
124
- 1 . ** 形式** : 字符常量是单引号引起的一个字符,字符串常量是双引号引起的 0 个或若干个字符
125
- 2 . ** 含义** : 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)
126
- 3 . ** 占内存大小** : 字符常量只占 2 个字节; 字符串常量占若干个字节 ( ** 注意: ` char ` 在 Java 中占两个字节 ** )
124
+ 1 . ** 形式** : 字符常量是单引号引起的一个字符,字符串常量是双引号引起的 0 个或若干个字符。
125
+ 2 . ** 含义** : 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)。
126
+ 3 . ** 占内存大小** : 字符常量只占 2 个字节; 字符串常量占若干个字节。
127
127
128
- ### 使用过可变长参数吗?
128
+ ( ** 注意: ` char ` 在 Java 中占两个字节 ** )
129
129
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
+ ### 注释有哪几种形式?
208
131
209
132
Java 中的注释有三种:
210
133
@@ -239,23 +162,25 @@ Java 中的注释有三种:
239
162
240
163
### 标识符和关键字的区别是什么?
241
164
242
- 在我们编写程序的时候,需要大量地为程序、类、变量、方法等取名字,于是就有了标识符, 简单来说,标识符就是一个名字。但是有一些标识符, Java 语言已经赋予了其特殊的含义,只能用于特定的地方,这些特殊的标识符就是关键字。因此,关键字是被赋予特殊含义的标识符。比如,在我们的日常生活中,如果我们想要开一家店,则要给这个店起一个名字,起的这个“名字”就叫标识符。但是我们店的名字不能叫“警察局”,因为“警察局”这个名字已经被赋予了特殊的含义,而“警察局”就是我们日常生活中的关键字 。
165
+ 在我们编写程序的时候,需要大量地为程序、类、变量、方法等取名字,于是就有了 ** 标识符 ** 。 简单来说, ** 标识符就是一个名字** 。
243
166
244
- ### Java 中的 `53 ` 个关键字
167
+ 有一些标识符,Java 语言已经赋予了其特殊的含义,只能用于特定的地方,这些特殊的标识符就是 ** 关键字** 。简单来说,** 关键字是被赋予特殊含义的标识** 符 。比如,在我们的日常生活中,如果我们想要开一家店,则要给这个店起一个名字,起的这个“名字”就叫标识符。但是我们店的名字不能叫“警察局”,因为“警察局”这个名字已经被赋予了特殊的含义,而“警察局”就是我们日常生活中的关键字。
168
+
169
+ ### Java 语言关键字有哪些?
245
170
246
171
| 分类 | 关键字 | | | | | | |
247
- | : ------------------ - | -------- | ---------- | -------- | ------------ | ---------- | -------- - | ------ |
248
- | 访问控制 | private | protected | public | | | | |
172
+ | : ------------------ - | -------- | -------- | -------- | -------- | -------- | -------- | -- ------ |
173
+ | 访问控制 | private | protected | public | | | | |
249
174
| 类,方法和变量修饰符 | abstract | class | extends | final | implements | interface | native |
250
175
| | new | static | strictfp | synchronized | transient | volatile | enum |
251
- | 程序控制 | break | continue | return | do | while | if | else |
176
+ | 程序控制 | break | continue | return | do | while | if | else |
252
177
| | 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 | | | | | |
259
184
260
185
> Tips:所有的关键字都是小写的,在 IDE 中会以特殊颜色显示。
261
186
>
@@ -265,6 +190,10 @@ Java 中的注释有三种:
265
190
> - 在类,方法和变量修饰符中,从 JDK8 开始引入了默认方法,可以使用 `default` 关键字来定义一个方法的默认实现。
266
191
> - 在访问控制中,如果一个方法前没有任何修饰符,则默认会有一个修饰符 `default`,但是这个修饰符加上了就会报错。
267
192
193
+ 注意 ⚠️:`true`, `false`, 和`null`看起来像关键字但不是关键字。
194
+
195
+ 官方文档:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html 。
196
+
268
197
### 自增自减运算符
269
198
270
199
在写代码的过程中,常见的一种情况是需要某个整数类型变量增加 1 或减少 1,Java 提供了一种特殊的运算符,用于这种表达式,叫做自增运算符(++)和自减运算符(-- )。
@@ -626,6 +555,85 @@ public native int hashCode();
626
555
627
556
更多关于 `hashCode()` 和 `equals()` 的内容可以查看:[Java hashCode() 和 equals()的若干问题解答](https: // www.cnblogs.com/skywang12345/p/3324958.html)
628
557
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
+
629
637
## 基本数据类型
630
638
631
639
### Java 中的几种基本数据类型了解么?
0 commit comments