|
| 1 | + |
1 | 2 | <!-- MarkdownTOC -->
|
2 | 3 |
|
3 |
| -- [Java 基础知识30问](#java-基础知识30问) |
4 |
| - - [1. 面向对象和面向过程的区别](#1-面向对象和面向过程的区别) |
5 |
| - - [面向过程](#面向过程) |
6 |
| - - [面向对象](#面向对象) |
7 |
| - - [2. Java 语言有哪些特点?](#2-java-语言有哪些特点?) |
8 |
| - - [3. 什么是 JDK?什么是 JRE?什么是 JVM?三者之间的联系与区别](#3-什么是-jdk?什么是-jre?什么是-jvm?三者之间的联系与区别) |
9 |
| - - [4. 什么是字节码?采用字节码的最大好处是什么?](#4-什么是字节码?采用字节码的最大好处是什么?) |
10 |
| - - [先看下 java 中的编译器和解释器:](#先看下-java-中的编译器和解释器:) |
11 |
| - - [采用字节码的好处:](#采用字节码的好处:) |
12 |
| - - [5. Java和C++的区别](#5-java和c的区别) |
13 |
| - - [6. 什么是 Java 程序的主类?应用程序和小程序的主类有何不同?](#6-什么是-java-程序的主类?应用程序和小程序的主类有何不同?) |
14 |
| - - [7. Java 应用程序与小程序之间有那些差别?](#7-java-应用程序与小程序之间有那些差别?) |
15 |
| - - [8. 字符型常量和字符串常量的区别](#8-字符型常量和字符串常量的区别) |
16 |
| - - [9. 构造器 Constructor 是否可被 override](#9-构造器-constructor-是否可被-override) |
17 |
| - - [10. 重载和重写的区别](#10-重载和重写的区别) |
18 |
| - - [11. Java 面向对象编程三大特性:封装、继承、多态](#11-java-面向对象编程三大特性封装、继承、多态) |
19 |
| - - [封装](#封装) |
20 |
| - - [继承](#继承) |
21 |
| - - [多态](#多态) |
22 |
| - - [12. String 和 StringBuffer、StringBuilder 的区别是什么?String 为什么是不可变的?](#12-string-和-stringbuffer、stringbuilder-的区别是什么?string-为什么是不可变的?) |
23 |
| - - [13. 自动装箱与拆箱](#13-自动装箱与拆箱) |
24 |
| - - [14. 在一个静态方法内调用一个非静态成员为什么是非法的?](#14-在一个静态方法内调用一个非静态成员为什么是非法的?) |
25 |
| - - [15. 在 Java 中定义一个不做事且没有参数的构造方法的作用](#15-在-java-中定义一个不做事且没有参数的构造方法的作用) |
26 |
| - - [16. import java和javax有什么区别](#16-import-java和javax有什么区别) |
27 |
| - - [17. 接口和抽象类的区别是什么?](#17-接口和抽象类的区别是什么?) |
28 |
| - - [18. 成员变量与局部变量的区别有那些?](#18-成员变量与局部变量的区别有那些?) |
29 |
| - - [19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?](#19-创建一个对象用什么运算符?对象实体与对象引用有何不同?) |
30 |
| - - [20. 什么是方法的返回值?返回值在类的方法里的作用是什么?](#20-什么是方法的返回值?返回值在类的方法里的作用是什么?) |
31 |
| - - [21. 一个类的构造方法的作用是什么?若一个类没有声明构造方法,改程序能正确执行吗?为什么?](#21-一个类的构造方法的作用是什么?若一个类没有声明构造方法,改程序能正确执行吗?为什么?) |
32 |
| - - [22. 构造方法有哪些特性?](#22-构造方法有哪些特性?) |
33 |
| - - [23. 静态方法和实例方法有何不同?](#23-静态方法和实例方法有何不同?) |
34 |
| - - [24. 对象的相等与指向他们的引用相等,两者有什么不同?](#24-对象的相等与指向他们的引用相等,两者有什么不同?) |
35 |
| - - [25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?](#25-在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?) |
36 |
| - - [26. == 与 equals\(重要\)](#26--与-equals重要) |
37 |
| - - [27. hashCode 与 equals(重要)](#27-hashcode-与-equals(重要)) |
38 |
| - - [hashCode()介绍](#hashcode()介绍) |
39 |
| - - [为什么要有 hashCode](#为什么要有-hashcode) |
40 |
| - - [hashCode()与equals()的相关规定](#hashcode()与equals()的相关规定) |
41 |
| - - [28. Java中的值传递和引用传递](#28-java中的值传递和引用传递) |
42 |
| - - [29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?](#29-简述线程,程序、进程的基本概念。以及他们之间关系是什么?) |
43 |
| - - [30. 线程有哪些基本状态?这些状态是如何定义的?](#30-线程有哪些基本状态?这些状态是如何定义的) |
| 4 | +- [1. 面向对象和面向过程的区别](#1-面向对象和面向过程的区别) |
| 5 | + - [面向过程](#面向过程) |
| 6 | + - [面向对象](#面向对象) |
| 7 | +- [2. Java 语言有哪些特点?](#2-java-语言有哪些特点?) |
| 8 | +- [3. 什么是 JDK?什么是 JRE?什么是 JVM?三者之间的联系与区别](#3-什么是-jdk?什么是-jre?什么是-jvm?三者之间的联系与区别) |
| 9 | +- [4. 什么是字节码?采用字节码的最大好处是什么?](#4-什么是字节码?采用字节码的最大好处是什么?) |
| 10 | + - [先看下 java 中的编译器和解释器:](#先看下-java-中的编译器和解释器:) |
| 11 | + - [采用字节码的好处:](#采用字节码的好处:) |
| 12 | +- [5. Java和C++的区别](#5-java和c的区别) |
| 13 | +- [6. 什么是 Java 程序的主类?应用程序和小程序的主类有何不同?](#6-什么是-java-程序的主类?应用程序和小程序的主类有何不同?) |
| 14 | +- [7. Java 应用程序与小程序之间有那些差别?](#7-java-应用程序与小程序之间有那些差别?) |
| 15 | +- [8. 字符型常量和字符串常量的区别](#8-字符型常量和字符串常量的区别) |
| 16 | +- [9. 构造器 Constructor 是否可被 override](#9-构造器-constructor-是否可被-override) |
| 17 | +- [10. 重载和重写的区别](#10-重载和重写的区别) |
| 18 | +- [11. Java 面向对象编程三大特性:封装、继承、多态](#11-java-面向对象编程三大特性封装、继承、多态) |
| 19 | + - [封装](#封装) |
| 20 | + - [继承](#继承) |
| 21 | + - [多态](#多态) |
| 22 | +- [12. String 和 StringBuffer、StringBuilder 的区别是什么?String 为什么是不可变的?](#12-string-和-stringbuffer、stringbuilder-的区别是什么?string-为什么是不可变的?) |
| 23 | +- [13. 自动装箱与拆箱](#13-自动装箱与拆箱) |
| 24 | +- [14. 在一个静态方法内调用一个非静态成员为什么是非法的?](#14-在一个静态方法内调用一个非静态成员为什么是非法的?) |
| 25 | +- [15. 在 Java 中定义一个不做事且没有参数的构造方法的作用](#15-在-java-中定义一个不做事且没有参数的构造方法的作用) |
| 26 | +- [16. import java和javax有什么区别](#16-import-java和javax有什么区别) |
| 27 | +- [17. 接口和抽象类的区别是什么?](#17-接口和抽象类的区别是什么?) |
| 28 | +- [18. 成员变量与局部变量的区别有那些?](#18-成员变量与局部变量的区别有那些?) |
| 29 | +- [19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?](#19-创建一个对象用什么运算符?对象实体与对象引用有何不同?) |
| 30 | +- [20. 什么是方法的返回值?返回值在类的方法里的作用是什么?](#20-什么是方法的返回值?返回值在类的方法里的作用是什么?) |
| 31 | +- [21. 一个类的构造方法的作用是什么?若一个类没有声明构造方法,该程序能正确执行吗?为什么?](#21-一个类的构造方法的作用是什么?若一个类没有声明构造方法,该程序能正确执行吗?为什么?) |
| 32 | +- [22. 构造方法有哪些特性?](#22-构造方法有哪些特性?) |
| 33 | +- [23. 静态方法和实例方法有何不同?](#23-静态方法和实例方法有何不同?) |
| 34 | +- [24. 对象的相等与指向他们的引用相等,两者有什么不同?](#24-对象的相等与指向他们的引用相等,两者有什么不同?) |
| 35 | +- [25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?](#25-在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?) |
| 36 | +- [26. == 与 equals\(重要\)](#26--与-equals重要) |
| 37 | +- [27. hashCode 与 equals(重要)](#27-hashcode-与-equals(重要)) |
| 38 | + - [hashCode()介绍](#hashcode()介绍) |
| 39 | + - [为什么要有 hashCode](#为什么要有-hashcode) |
| 40 | + - [hashCode()与equals()的相关规定](#hashcode()与equals()的相关规定) |
| 41 | +- [28. Java中的值传递和引用传递](#28-java中的值传递和引用传递) |
| 42 | +- [29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?](#29-简述线程,程序、进程的基本概念。以及他们之间关系是什么?) |
| 43 | +- [30. 线程有哪些基本状态?这些状态是如何定义的?](#30-线程有哪些基本状态?这些状态是如何定义的) |
| 44 | +- [31 关于 final 关键字的一些总结](#31-关于-final-关键字的一些总结) |
44 | 45 | - [Java基础学习书籍推荐](#java基础学习书籍推荐)
|
45 | 46 |
|
46 | 47 | <!-- /MarkdownTOC -->
|
47 | 48 |
|
48 | 49 |
|
49 |
| - |
50 |
| -# Java 基础知识30问 |
51 | 50 | ## 1. 面向对象和面向过程的区别
|
52 | 51 |
|
53 | 52 | ### 面向过程
|
@@ -312,7 +311,7 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
|
312 | 311 | 5. hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)
|
313 | 312 |
|
314 | 313 |
|
315 |
| -### 28. Java中的值传递和引用传递 |
| 314 | +## 28. Java中的值传递和引用传递 |
316 | 315 |
|
317 | 316 | **值传递**是指对象被值传递,意味着传递了对象的一个副本,即使副本被改变,也不会影响源对象。(因为值传递的时候,实际上是将实参的值复制一份给形参。)
|
318 | 317 |
|
@@ -357,6 +356,13 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
|
357 | 356 |
|
358 | 357 | 到达目的地:Dead
|
359 | 358 |
|
| 359 | +## 31 关于 final 关键字的一些总结 |
| 360 | + |
| 361 | +final关键字主要用在三个地方:变量、方法、类。 |
| 362 | + |
| 363 | +1. ①对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 |
| 364 | +2. ②当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。 |
| 365 | +3. ③使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为fianl。 |
360 | 366 |
|
361 | 367 | # Java基础学习书籍推荐
|
362 | 368 |
|
|
0 commit comments