21
21
- [ 继承] ( #继承 )
22
22
- [ 多态] ( #多态 )
23
23
- [ 12. String StringBuffer 和 StringBuilder 的区别是什么 String 为什么是不可变的] ( #12-string-stringbuffer-和-stringbuilder-的区别是什么-string-为什么是不可变的 )
24
- - [ 13. 自动装箱与拆箱] ( #13-自动装箱与拆箱 )
24
+ - [ 13. 自动装箱与拆箱] ( #13-自动装箱与拆箱 )
25
25
- [ 14. 在一个静态方法内调用一个非静态成员为什么是非法的] ( #14-在一个静态方法内调用一个非静态成员为什么是非法的 )
26
26
- [ 15. 在 Java 中定义一个不做事且没有参数的构造方法的作用] ( #15-在-java-中定义一个不做事且没有参数的构造方法的作用 )
27
27
- [ 16. import java和javax有什么区别] ( #16-import-java和javax有什么区别 )
32
32
- [ 21. 一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗 ?为什么?] ( #21-一个类的构造方法的作用是什么-若一个类没有声明构造方法该程序能正确执行吗-为什么 )
33
33
- [ 22. 构造方法有哪些特性] ( #22-构造方法有哪些特性 )
34
34
- [ 23. 静态方法和实例方法有何不同] ( #23-静态方法和实例方法有何不同 )
35
- - [ 24. 对象的相等与指向他们的引用相等,两者有什么不同?] ( #24-对象的相等与指向他们的引用相等,两者有什么不同? )
36
- - [ 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?] ( #25-在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是 )
35
+ - [ 24. 对象的相等与指向他们的引用相等,两者有什么不同?] ( #24-对象的相等与指向他们的引用相等两者有什么不同 )
36
+ - [ 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?] ( #25-在调用子类构造方法之前会先调用父类没有参数的构造方法其目的是 )
37
37
- [ 26. == 与 equals\( 重要\) ] ( #26--与-equals重要 )
38
- - [ 27. hashCode 与 equals(重要) ] ( #27-hashcode-与-equals(重要) )
38
+ - [ 27. hashCode 与 equals \( 重要 \) ] ( #27-hashcode-与-equals-重要 )
39
39
- [ hashCode()介绍] ( #hashcode()介绍 )
40
40
- [ 为什么要有 hashCode] ( #为什么要有-hashcode )
41
41
- [ hashCode()与equals()的相关规定] ( #hashcode()与equals()的相关规定 )
42
42
- [ 28. 为什么Java中只有值传递] ( #28-为什么java中只有值传递 )
43
- - [ 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么] ( #29-简述线程,程序、进程的基本概念。以及他们之间关系是什么 )
43
+ - [ 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么] ( #29-简述线程程序进程的基本概念以及他们之间关系是什么 )
44
44
- [ 30. 线程有哪些基本状态?] ( #30-线程有哪些基本状态 )
45
45
- [ 31 关于 final 关键字的一些总结] ( #31-关于-final-关键字的一些总结 )
46
46
- [ 32 Java 中的异常处理] ( #32-java-中的异常处理 )
@@ -223,7 +223,7 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全
223
223
2. 单线程操作字符串缓冲区下操作大量数据 = StringBuilder
224
224
3. 多线程操作字符串缓冲区下操作大量数据 = StringBuffer
225
225
226
- ## 13. 自动装箱与拆箱
226
+ ## 13. 自动装箱与拆箱
227
227
** 装箱** :将基本类型用它们对应的引用类型包装起来;
228
228
229
229
** 拆箱** :将包装类型转换为基本数据类型;
@@ -241,15 +241,17 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全
241
241
242
242
所以,实际上java和javax没有区别。这都是一个名字。
243
243
244
- ## 17. 接口和抽象类的区别是什么
244
+ ## 17. 接口和抽象类的区别是什么
245
245
246
246
1. 接口的方法默认是 public ,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以有非抽象的方法
247
247
2. 接口中的实例变量默认是 final 类型的,而抽象类中则不一定
248
248
3. 一个类可以实现多个接口,但最多只能实现一个抽象类
249
249
4. 一个类实现接口的话要实现接口的所有方法,而抽象类不一定
250
250
5. 接口不能用 new 实例化,但可以声明,但是必须引用一个实现该接口的对象 从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。
251
251
252
- ## 18. 成员变量与局部变量的区别有那些
252
+ 备注:在JDK8中,接口也可以定义静态方法,可以直接用接口名调用。实现类和实现是不可以调用的。如果同时实现两个接口,接口中定义了一样的默认方法,必须重写,不然会报错。(详见issue:[https:// github.com/Snailclimb/JavaGuide/issues/146](https://github.com/Snailclimb/JavaGuide/issues/146))
253
+
254
+ ## 18. 成员变量与局部变量的区别有那些
253
255
254
256
1. 从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被 public ,private ,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰;
255
257
2. 从变量在内存中的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存,局部变量存在于栈内存
@@ -280,15 +282,15 @@ new运算符,new创建对象实例(对象实例在堆内存中),对象
280
282
281
283
2. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制.
282
284
283
- ## 24. 对象的相等与指向他们的引用相等, 两者有什么不同?
285
+ ## 24. 对象的相等与指向他们的引用相等, 两者有什么不同?
284
286
285
287
对象的相等,比的是内存中存放的内容是否相等。而引用相等,比较的是他们指向的内存地址是否相等。
286
288
287
- ## 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法, 其目的是?
289
+ ## 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法, 其目的是?
288
290
289
291
帮助子类做初始化工作。
290
292
291
- ## 26. == 与 equals (重要)
293
+ ## 26. == 与 equals (重要)
292
294
293
295
**==** : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)
294
296
@@ -325,7 +327,7 @@ public class test1 {
325
327
326
328
327
329
328
- ## 27. hashCode 与 equals(重要)
330
+ ## 27. hashCode 与 equals (重要)
329
331
330
332
面试官可能会问你:“你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?”
331
333
@@ -357,7 +359,7 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
357
359
[为什么Java中只有值传递?](https:// github.com/Snailclimb/Java-Guide/blob/master/%E9%9D%A2%E8%AF%95%E5%BF%85%E5%A4%87/%E6%9C%80%E6%9C%80%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84Java%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93/%E7%AC%AC%E4%B8%80%E5%91%A8%EF%BC%882018-8-7%EF%BC%89.md)
358
360
359
361
360
- ## 29. 简述线程,程序、 进程的基本概念。 以及他们之间关系是什么
362
+ ## 29. 简述线程,程序, 进程的基本概念. 以及他们之间关系是什么?
361
363
362
364
**线程**与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
363
365
0 commit comments