3
3
- [ 1. 面向对象和面向过程的区别] ( #1-面向对象和面向过程的区别 )
4
4
- [ 面向过程] ( #面向过程 )
5
5
- [ 面向对象] ( #面向对象 )
6
- - [ 2. Java 语言有哪些特点? ] ( #2-java-语言有哪些特点? )
7
- - [ 3. 什么是 JDK? 什么是 JRE? 什么是 JVM? 三者之间的联系与区别] ( #3-什么是-jdk? 什么是-jre? 什么是-jvm? 三者之间的联系与区别 )
8
- - [ 4. 什么是字节码? 采用字节码的最大好处是什么? ] ( #4-什么是字节码? 采用字节码的最大好处是什么? )
6
+ - [ 2. Java 语言有哪些特点] ( #2-java-语言有哪些特点 )
7
+ - [ 3. 什么是 JDK 什么是 JRE 什么是 JVM 三者之间的联系与区别] ( #3-什么是-jdk- 什么是-jre- 什么是-jvm- 三者之间的联系与区别 )
8
+ - [ 4. 什么是字节码 采用字节码的最大好处是什么] ( #4-什么是字节码- 采用字节码的最大好处是什么 )
9
9
- [ 先看下 java 中的编译器和解释器:] ( #先看下-java-中的编译器和解释器: )
10
10
- [ 采用字节码的好处:] ( #采用字节码的好处: )
11
11
- [ 5. Java和C++的区别] ( #5-java和c的区别 )
12
- - [ 6. 什么是 Java 程序的主类? 应用程序和小程序的主类有何不同? ] ( #6-什么是-java-程序的主类? 应用程序和小程序的主类有何不同? )
13
- - [ 7. Java 应用程序与小程序之间有那些差别? ] ( #7-java-应用程序与小程序之间有那些差别? )
12
+ - [ 6. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同] ( #6-什么是-java-程序的主类- 应用程序和小程序的主类有何不同 )
13
+ - [ 7. Java 应用程序与小程序之间有那些差别] ( #7-java-应用程序与小程序之间有那些差别 )
14
14
- [ 8. 字符型常量和字符串常量的区别] ( #8-字符型常量和字符串常量的区别 )
15
15
- [ 9. 构造器 Constructor 是否可被 override] ( #9-构造器-constructor-是否可被-override )
16
16
- [ 10. 重载和重写的区别] ( #10-重载和重写的区别 )
17
17
- [ 11. Java 面向对象编程三大特性:封装、继承、多态] ( #11-java-面向对象编程三大特性封装、继承、多态 )
18
18
- [ 封装] ( #封装 )
19
19
- [ 继承] ( #继承 )
20
20
- [ 多态] ( #多态 )
21
- - [ 12. String 和 StringBuffer、StringBuilder 的区别是什么? String 为什么是不可变的? ] ( #12-string-和-stringbuffer、stringbuilder-的区别是什么? string-为什么是不可变的? )
21
+ - [ 12. String 和 StringBuffer、StringBuilder 的区别是什么 String 为什么是不可变的] ( #12-string-和-stringbuffer、stringbuilder-的区别是什么- string-为什么是不可变的 )
22
22
- [ 13. 自动装箱与拆箱] ( #13-自动装箱与拆箱 )
23
- - [ 14. 在一个静态方法内调用一个非静态成员为什么是非法的? ] ( #14-在一个静态方法内调用一个非静态成员为什么是非法的? )
23
+ - [ 14. 在一个静态方法内调用一个非静态成员为什么是非法的] ( #14-在一个静态方法内调用一个非静态成员为什么是非法的 )
24
24
- [ 15. 在 Java 中定义一个不做事且没有参数的构造方法的作用] ( #15-在-java-中定义一个不做事且没有参数的构造方法的作用 )
25
25
- [ 16. import java和javax有什么区别] ( #16-import-java和javax有什么区别 )
26
- - [ 17. 接口和抽象类的区别是什么? ] ( #17-接口和抽象类的区别是什么? )
27
- - [ 18. 成员变量与局部变量的区别有那些? ] ( #18-成员变量与局部变量的区别有那些? )
26
+ - [ 17. 接口和抽象类的区别是什么] ( #17-接口和抽象类的区别是什么 )
27
+ - [ 18. 成员变量与局部变量的区别有那些] ( #18-成员变量与局部变量的区别有那些 )
28
28
- [ 19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?] ( #19-创建一个对象用什么运算符?对象实体与对象引用有何不同? )
29
29
- [ 20. 什么是方法的返回值?返回值在类的方法里的作用是什么?] ( #20-什么是方法的返回值?返回值在类的方法里的作用是什么? )
30
- - [ 21. 一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么? ] ( #21-一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么? )
31
- - [ 22. 构造方法有哪些特性? ] ( #22-构造方法有哪些特性? )
32
- - [ 23. 静态方法和实例方法有何不同? ] ( #23-静态方法和实例方法有何不同? )
30
+ - [ 21. 一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗 为什么] ( #21-一个类的构造方法的作用是什么- 若一个类没有声明构造方法,该程序能正确执行吗- 为什么 )
31
+ - [ 22. 构造方法有哪些特性] ( #22-构造方法有哪些特性 )
32
+ - [ 23. 静态方法和实例方法有何不同] ( #23-静态方法和实例方法有何不同 )
33
33
- [ 24. 对象的相等与指向他们的引用相等,两者有什么不同?] ( #24-对象的相等与指向他们的引用相等,两者有什么不同? )
34
34
- [ 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?] ( #25-在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是? )
35
35
- [ 26. == 与 equals\( 重要\) ] ( #26--与-equals重要 )
36
36
- [ 27. hashCode 与 equals(重要)] ( #27-hashcode-与-equals(重要) )
37
37
- [ hashCode()介绍] ( #hashcode()介绍 )
38
38
- [ 为什么要有 hashCode] ( #为什么要有-hashcode )
39
39
- [ hashCode()与equals()的相关规定] ( #hashcode()与equals()的相关规定 )
40
- - [ 28. Java中的值传递和引用传递 ] ( #28-java中的值传递和引用传递 )
41
- - [ 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么? ] ( #29-简述线程,程序、进程的基本概念。以及他们之间关系是什么? )
40
+ - [ 28. 为什么Java中只有值传递 ] ( #28-为什么java中只有值传递 )
41
+ - [ 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么] ( #29-简述线程,程序、进程的基本概念。以及他们之间关系是什么 )
42
42
- [ 30. 线程有哪些基本状态?这些状态是如何定义的?] ( #30-线程有哪些基本状态?这些状态是如何定义的 )
43
43
- [ 31 关于 final 关键字的一些总结] ( #31-关于-final-关键字的一些总结 )
44
44
- [ Java基础学习书籍推荐] ( #java基础学习书籍推荐 )
45
45
46
46
<!-- /MarkdownTOC -->
47
47
48
-
49
48
## 1. 面向对象和面向过程的区别
50
49
51
50
### 面向过程
60
59
61
60
** 缺点:** 性能比面向过程低
62
61
63
- ## 2. Java 语言有哪些特点?
62
+ ## 2. Java 语言有哪些特点
64
63
65
64
1 . 简单易学;
66
65
2 . 面向对象(封装,继承,多态);
71
70
7 . 支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便);
72
71
8 . 编译与解释并存;
73
72
74
- ## 3. 什么是 JDK? 什么是 JRE? 什么是 JVM? 三者之间的联系与区别
73
+ ## 3. 什么是 JDK 什么是 JRE 什么是 JVM 三者之间的联系与区别
75
74
76
75
这几个是Java中很基本很基本的东西,但是我相信一定还有很多人搞不清楚!为什么呢?因为我们大多数时候在使用现成的编译工具以及环境的时候,并没有去考虑这些东西。
77
76
87
86
2 . JDK 和 JRE 中都包含 JVM ;
88
87
3 . JVM 是 java 编程语言的核心并且具有平台独立性。
89
88
90
- ## 4. 什么是字节码? 采用字节码的最大好处是什么?
89
+ ## 4. 什么是字节码 采用字节码的最大好处是什么
91
90
92
91
### 先看下 java 中的编译器和解释器:
93
92
@@ -115,11 +114,11 @@ Java 中引入了虚拟机的概念,即在机器和编译程序之间加入了
115
114
- Java 有自动内存管理机制,不需要程序员手动释放无用内存
116
115
117
116
118
- ## 6. 什么是 Java 程序的主类? 应用程序和小程序的主类有何不同?
117
+ ## 6. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同
119
118
120
119
一个程序中可以有多个类,但只能有一个类是主类。在 Java 应用程序中,这个主类是指包含 main()方法的类。而在 Java 小程序中,这个主类是一个继承自系统类 JApplet 或 Applet 的子类。应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。主类是 Java 程序执行的入口点。
121
120
122
- ## 7. Java 应用程序与小程序之间有那些差别?
121
+ ## 7. Java 应用程序与小程序之间有那些差别
123
122
124
123
简单说应用程序是从主线程启动(也就是 main() 方法)。applet 小程序没有main方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌入浏览器这点跟 flash 的小游戏类似。
125
124
@@ -164,7 +163,7 @@ Java 中引入了虚拟机的概念,即在机器和编译程序之间加入了
164
163
165
164
在Java中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。
166
165
167
- ## 12. String 和 StringBuffer、StringBuilder 的区别是什么? String 为什么是不可变的?
166
+ ## 12. String 和 StringBuffer、StringBuilder 的区别是什么 String 为什么是不可变的
168
167
169
168
** 可变性**
170
169
@@ -206,7 +205,7 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全
206
205
207
206
** 拆箱** :将包装类型转换为基本数据类型;
208
207
209
- ## 14. 在一个静态方法内调用一个非静态成员为什么是非法的?
208
+ ## 14. 在一个静态方法内调用一个非静态成员为什么是非法的
210
209
211
210
由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员。
212
211
@@ -219,15 +218,15 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全
219
218
220
219
所以,实际上java和javax没有区别。这都是一个名字。
221
220
222
- ## 17. 接口和抽象类的区别是什么?
221
+ ## 17. 接口和抽象类的区别是什么
223
222
224
223
1. 接口的方法默认是 public ,所有方法在接口中不能有实现,抽象类可以有非抽象的方法
225
224
2. 接口中的实例变量默认是 final 类型的,而抽象类中则不一定
226
225
3. 一个类可以实现多个接口,但最多只能实现一个抽象类
227
226
4. 一个类实现接口的话要实现接口的所有方法,而抽象类不一定
228
227
5. 接口不能用 new 实例化,但可以声明,但是必须引用一个实现该接口的对象 从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。
229
228
230
- ## 18. 成员变量与局部变量的区别有那些?
229
+ ## 18. 成员变量与局部变量的区别有那些
231
230
232
231
1. 从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被 public ,private ,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰;
233
232
2. 从变量在内存中的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存,局部变量存在于栈内存
@@ -242,17 +241,17 @@ new运算符,new创建对象实例(对象实例在堆内存中),对象
242
241
243
242
方法的返回值是指我们获取到的某个方法体中的代码执行后产生的结果!(前提是该方法可能产生结果)。返回值的作用: 接收出结果,使得它可以用于其他的操作!
244
243
245
- ## 21. 一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么?
244
+ ## 21. 一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗 为什么
246
245
247
246
主要作用是完成对类对象的初始化工作。可以执行。因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。
248
247
249
- ## 22. 构造方法有哪些特性?
248
+ ## 22. 构造方法有哪些特性
250
249
251
250
1. 名字与类名相同;
252
251
2. 没有返回值,但不能用void 声明构造函数;
253
252
3. 生成类的对象时自动执行,无需调用。
254
253
255
- ## 23. 静态方法和实例方法有何不同?
254
+ ## 23. 静态方法和实例方法有何不同
256
255
257
256
1. 在外部调用静态方法时,可以使用" 类名.方法名" 的方式,也可以使用" 对象名.方法名" 的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
258
257
@@ -330,14 +329,12 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
330
329
5. hashCode () 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode (),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)
331
330
332
331
333
- ## 28. Java中的值传递和引用传递
334
-
335
- **值传递**是指对象被值传递,意味着传递了对象的一个副本,即使副本被改变,也不会影响源对象。(因为值传递的时候,实际上是将实参的值复制一份给形参。)
332
+ ## 28. 为什么Java中只有值传递
336
333
337
- **引用传递**是指对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象的改变会反映到所有的对象上。(因为引用传递的时候,实际上是将实参的地址值复制一份给形参。)
334
+ [为什么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)
338
335
339
336
340
- ## 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?
337
+ ## 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么
341
338
342
339
**线程**与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
343
340
0 commit comments