Skip to content

Commit c637a1d

Browse files
authored
增加 final 关键字的一些总结
1 parent 4e647d5 commit c637a1d

File tree

1 file changed

+50
-44
lines changed

1 file changed

+50
-44
lines changed

Java相关/Java基础知识.md

+50-44
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,52 @@
1+
12
<!-- MarkdownTOC -->
23

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-关键字的一些总结)
4445
- [Java基础学习书籍推荐](#java基础学习书籍推荐)
4546

4647
<!-- /MarkdownTOC -->
4748

4849

49-
50-
# Java 基础知识30问
5150
## 1. 面向对象和面向过程的区别
5251

5352
### 面向过程
@@ -312,7 +311,7 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
312311
5. hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)
313312

314313

315-
### 28. Java中的值传递和引用传递
314+
## 28. Java中的值传递和引用传递
316315

317316
**值传递**是指对象被值传递,意味着传递了对象的一个副本,即使副本被改变,也不会影响源对象。(因为值传递的时候,实际上是将实参的值复制一份给形参。)
318317

@@ -357,6 +356,13 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
357356

358357
到达目的地:Dead
359358

359+
## 31 关于 final 关键字的一些总结
360+
361+
final关键字主要用在三个地方:变量、方法、类。
362+
363+
1. ①对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
364+
2. ②当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。
365+
3. ③使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为fianl。
360366

361367
# Java基础学习书籍推荐
362368

0 commit comments

Comments
 (0)