33- [ 1. 面向对象和面向过程的区别] ( #1-面向对象和面向过程的区别 )
44 - [ 面向过程] ( #面向过程 )
55 - [ 面向对象] ( #面向对象 )
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-什么是字节码- 采用字节码的最大好处是什么 )
99 - [ 先看下 java 中的编译器和解释器:] ( #先看下-java-中的编译器和解释器: )
1010 - [ 采用字节码的好处:] ( #采用字节码的好处: )
1111- [ 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-应用程序与小程序之间有那些差别 )
1414- [ 8. 字符型常量和字符串常量的区别] ( #8-字符型常量和字符串常量的区别 )
1515- [ 9. 构造器 Constructor 是否可被 override] ( #9-构造器-constructor-是否可被-override )
1616- [ 10. 重载和重写的区别] ( #10-重载和重写的区别 )
1717- [ 11. Java 面向对象编程三大特性:封装、继承、多态] ( #11-java-面向对象编程三大特性封装、继承、多态 )
1818 - [ 封装] ( #封装 )
1919 - [ 继承] ( #继承 )
2020 - [ 多态] ( #多态 )
21- - [ 12. String 和 StringBuffer、StringBuilder 的区别是什么? String 为什么是不可变的? ] ( #12-string-和-stringbuffer、stringbuilder-的区别是什么? string-为什么是不可变的? )
21+ - [ 12. String 和 StringBuffer、StringBuilder 的区别是什么 String 为什么是不可变的] ( #12-string-和-stringbuffer、stringbuilder-的区别是什么- string-为什么是不可变的 )
2222- [ 13. 自动装箱与拆箱] ( #13-自动装箱与拆箱 )
23- - [ 14. 在一个静态方法内调用一个非静态成员为什么是非法的? ] ( #14-在一个静态方法内调用一个非静态成员为什么是非法的? )
23+ - [ 14. 在一个静态方法内调用一个非静态成员为什么是非法的] ( #14-在一个静态方法内调用一个非静态成员为什么是非法的 )
2424- [ 15. 在 Java 中定义一个不做事且没有参数的构造方法的作用] ( #15-在-java-中定义一个不做事且没有参数的构造方法的作用 )
2525- [ 16. import java和javax有什么区别] ( #16-import-java和javax有什么区别 )
26- - [ 17. 接口和抽象类的区别是什么? ] ( #17-接口和抽象类的区别是什么? )
27- - [ 18. 成员变量与局部变量的区别有那些? ] ( #18-成员变量与局部变量的区别有那些? )
26+ - [ 17. 接口和抽象类的区别是什么] ( #17-接口和抽象类的区别是什么 )
27+ - [ 18. 成员变量与局部变量的区别有那些] ( #18-成员变量与局部变量的区别有那些 )
2828- [ 19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?] ( #19-创建一个对象用什么运算符?对象实体与对象引用有何不同? )
2929- [ 20. 什么是方法的返回值?返回值在类的方法里的作用是什么?] ( #20-什么是方法的返回值?返回值在类的方法里的作用是什么? )
30- - [ 21. 一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么? ] ( #21-一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么? )
31- - [ 22. 构造方法有哪些特性? ] ( #22-构造方法有哪些特性? )
32- - [ 23. 静态方法和实例方法有何不同? ] ( #23-静态方法和实例方法有何不同? )
30+ - [ 21. 一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗 为什么] ( #21-一个类的构造方法的作用是什么- 若一个类没有声明构造方法,该程序能正确执行吗- 为什么 )
31+ - [ 22. 构造方法有哪些特性] ( #22-构造方法有哪些特性 )
32+ - [ 23. 静态方法和实例方法有何不同] ( #23-静态方法和实例方法有何不同 )
3333- [ 24. 对象的相等与指向他们的引用相等,两者有什么不同?] ( #24-对象的相等与指向他们的引用相等,两者有什么不同? )
3434- [ 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?] ( #25-在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是? )
3535- [ 26. == 与 equals\( 重要\) ] ( #26--与-equals重要 )
3636- [ 27. hashCode 与 equals(重要)] ( #27-hashcode-与-equals(重要) )
3737 - [ hashCode()介绍] ( #hashcode()介绍 )
3838 - [ 为什么要有 hashCode] ( #为什么要有-hashcode )
3939 - [ hashCode()与equals()的相关规定] ( #hashcode()与equals()的相关规定 )
40- - [ 28. Java中的值传递和引用传递 ] ( #28-java中的值传递和引用传递 )
41- - [ 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么? ] ( #29-简述线程,程序、进程的基本概念。以及他们之间关系是什么? )
40+ - [ 28. 为什么Java中只有值传递 ] ( #28-为什么java中只有值传递 )
41+ - [ 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么] ( #29-简述线程,程序、进程的基本概念。以及他们之间关系是什么 )
4242- [ 30. 线程有哪些基本状态?这些状态是如何定义的?] ( #30-线程有哪些基本状态?这些状态是如何定义的 )
4343- [ 31 关于 final 关键字的一些总结] ( #31-关于-final-关键字的一些总结 )
4444- [ Java基础学习书籍推荐] ( #java基础学习书籍推荐 )
4545
4646<!-- /MarkdownTOC -->
4747
48-
4948## 1. 面向对象和面向过程的区别
5049
5150### 面向过程
6059
6160** 缺点:** 性能比面向过程低
6261
63- ## 2. Java 语言有哪些特点?
62+ ## 2. Java 语言有哪些特点
6463
65641 . 简单易学;
66652 . 面向对象(封装,继承,多态);
71707 . 支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便);
72718 . 编译与解释并存;
7372
74- ## 3. 什么是 JDK? 什么是 JRE? 什么是 JVM? 三者之间的联系与区别
73+ ## 3. 什么是 JDK 什么是 JRE 什么是 JVM 三者之间的联系与区别
7574
7675这几个是Java中很基本很基本的东西,但是我相信一定还有很多人搞不清楚!为什么呢?因为我们大多数时候在使用现成的编译工具以及环境的时候,并没有去考虑这些东西。
7776
8786 2 . JDK 和 JRE 中都包含 JVM ;
8887 3 . JVM 是 java 编程语言的核心并且具有平台独立性。
8988
90- ## 4. 什么是字节码? 采用字节码的最大好处是什么?
89+ ## 4. 什么是字节码 采用字节码的最大好处是什么
9190
9291### 先看下 java 中的编译器和解释器:
9392
@@ -115,11 +114,11 @@ Java 中引入了虚拟机的概念,即在机器和编译程序之间加入了
115114- Java 有自动内存管理机制,不需要程序员手动释放无用内存
116115
117116
118- ## 6. 什么是 Java 程序的主类? 应用程序和小程序的主类有何不同?
117+ ## 6. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同
119118
120119一个程序中可以有多个类,但只能有一个类是主类。在 Java 应用程序中,这个主类是指包含 main()方法的类。而在 Java 小程序中,这个主类是一个继承自系统类 JApplet 或 Applet 的子类。应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。主类是 Java 程序执行的入口点。
121120
122- ## 7. Java 应用程序与小程序之间有那些差别?
121+ ## 7. Java 应用程序与小程序之间有那些差别
123122
124123简单说应用程序是从主线程启动(也就是 main() 方法)。applet 小程序没有main方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌入浏览器这点跟 flash 的小游戏类似。
125124
@@ -164,7 +163,7 @@ Java 中引入了虚拟机的概念,即在机器和编译程序之间加入了
164163
165164在Java中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。
166165
167- ## 12. String 和 StringBuffer、StringBuilder 的区别是什么? String 为什么是不可变的?
166+ ## 12. String 和 StringBuffer、StringBuilder 的区别是什么 String 为什么是不可变的
168167
169168** 可变性**
170169
@@ -206,7 +205,7 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全
206205
207206** 拆箱** :将包装类型转换为基本数据类型;
208207
209- ## 14. 在一个静态方法内调用一个非静态成员为什么是非法的?
208+ ## 14. 在一个静态方法内调用一个非静态成员为什么是非法的
210209
211210由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员。
212211
@@ -219,15 +218,15 @@ String 中的对象是不可变的,也就可以理解为常量,线程安全
219218
220219所以,实际上java和javax没有区别。这都是一个名字。
221220
222- ## 17. 接口和抽象类的区别是什么?
221+ ## 17. 接口和抽象类的区别是什么
223222
2242231. 接口的方法默认是 public ,所有方法在接口中不能有实现,抽象类可以有非抽象的方法
2252242. 接口中的实例变量默认是 final 类型的,而抽象类中则不一定
2262253. 一个类可以实现多个接口,但最多只能实现一个抽象类
2272264. 一个类实现接口的话要实现接口的所有方法,而抽象类不一定
2282275. 接口不能用 new 实例化,但可以声明,但是必须引用一个实现该接口的对象 从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。
229228
230- ## 18. 成员变量与局部变量的区别有那些?
229+ ## 18. 成员变量与局部变量的区别有那些
231230
2322311. 从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被 public ,private ,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰;
2332322. 从变量在内存中的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存,局部变量存在于栈内存
@@ -242,17 +241,17 @@ new运算符,new创建对象实例(对象实例在堆内存中),对象
242241
243242方法的返回值是指我们获取到的某个方法体中的代码执行后产生的结果!(前提是该方法可能产生结果)。返回值的作用: 接收出结果,使得它可以用于其他的操作!
244243
245- ## 21. 一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么?
244+ ## 21. 一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗 为什么
246245
247246主要作用是完成对类对象的初始化工作。可以执行。因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。
248247
249- ## 22. 构造方法有哪些特性?
248+ ## 22. 构造方法有哪些特性
250249
2512501. 名字与类名相同;
2522512. 没有返回值,但不能用void 声明构造函数;
2532523. 生成类的对象时自动执行,无需调用。
254253
255- ## 23. 静态方法和实例方法有何不同?
254+ ## 23. 静态方法和实例方法有何不同
256255
2572561. 在外部调用静态方法时,可以使用" 类名.方法名" 的方式,也可以使用" 对象名.方法名" 的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
258257
@@ -330,14 +329,12 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
3303295. hashCode () 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode (),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)
331330
332331
333- ## 28. Java中的值传递和引用传递
334-
335- **值传递**是指对象被值传递,意味着传递了对象的一个副本,即使副本被改变,也不会影响源对象。(因为值传递的时候,实际上是将实参的值复制一份给形参。)
332+ ## 28. 为什么Java中只有值传递
336333
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)
338335
339336
340- ## 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?
337+ ## 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么
341338
342339**线程**与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
343340
0 commit comments