1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-20 22:17:09 +08:00

增加 final 关键字的一些总结

This commit is contained in:
Snailclimb 2018-09-02 17:50:16 +08:00 committed by GitHub
parent 4e647d5c7d
commit c637a1d958
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,6 @@
<!-- MarkdownTOC --> <!-- MarkdownTOC -->
- [Java 基础知识30问](#java-基础知识30问)
- [1. 面向对象和面向过程的区别](#1-面向对象和面向过程的区别) - [1. 面向对象和面向过程的区别](#1-面向对象和面向过程的区别)
- [面向过程](#面向过程) - [面向过程](#面向过程)
- [面向对象](#面向对象) - [面向对象](#面向对象)
@ -28,7 +28,7 @@
- [18. 成员变量与局部变量的区别有那些?](#18-成员变量与局部变量的区别有那些?) - [18. 成员变量与局部变量的区别有那些?](#18-成员变量与局部变量的区别有那些?)
- [19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?](#19-创建一个对象用什么运算符?对象实体与对象引用有何不同?) - [19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?](#19-创建一个对象用什么运算符?对象实体与对象引用有何不同?)
- [20. 什么是方法的返回值?返回值在类的方法里的作用是什么?](#20-什么是方法的返回值?返回值在类的方法里的作用是什么?) - [20. 什么是方法的返回值?返回值在类的方法里的作用是什么?](#20-什么是方法的返回值?返回值在类的方法里的作用是什么?)
- [21. 一个类的构造方法的作用是什么?若一个类没有声明构造方法,程序能正确执行吗?为什么?](#21-一个类的构造方法的作用是什么?若一个类没有声明构造方法,程序能正确执行吗?为什么?) - [21. 一个类的构造方法的作用是什么?若一个类没有声明构造方法,程序能正确执行吗?为什么?](#21-一个类的构造方法的作用是什么?若一个类没有声明构造方法,程序能正确执行吗?为什么?)
- [22. 构造方法有哪些特性?](#22-构造方法有哪些特性?) - [22. 构造方法有哪些特性?](#22-构造方法有哪些特性?)
- [23. 静态方法和实例方法有何不同?](#23-静态方法和实例方法有何不同?) - [23. 静态方法和实例方法有何不同?](#23-静态方法和实例方法有何不同?)
- [24. 对象的相等与指向他们的引用相等,两者有什么不同?](#24-对象的相等与指向他们的引用相等,两者有什么不同?) - [24. 对象的相等与指向他们的引用相等,两者有什么不同?](#24-对象的相等与指向他们的引用相等,两者有什么不同?)
@ -41,13 +41,12 @@
- [28. Java中的值传递和引用传递](#28-java中的值传递和引用传递) - [28. Java中的值传递和引用传递](#28-java中的值传递和引用传递)
- [29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?](#29-简述线程,程序、进程的基本概念。以及他们之间关系是什么?) - [29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?](#29-简述线程,程序、进程的基本概念。以及他们之间关系是什么?)
- [30. 线程有哪些基本状态?这些状态是如何定义的?](#30-线程有哪些基本状态?这些状态是如何定义的) - [30. 线程有哪些基本状态?这些状态是如何定义的?](#30-线程有哪些基本状态?这些状态是如何定义的)
- [31 关于 final 关键字的一些总结](#31-关于-final-关键字的一些总结)
- [Java基础学习书籍推荐](#java基础学习书籍推荐) - [Java基础学习书籍推荐](#java基础学习书籍推荐)
<!-- /MarkdownTOC --> <!-- /MarkdownTOC -->
# Java 基础知识30问
## 1. 面向对象和面向过程的区别 ## 1. 面向对象和面向过程的区别
### 面向过程 ### 面向过程
@ -312,7 +311,7 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
5. hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据) 5. hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)
### 28. Java中的值传递和引用传递 ## 28. Java中的值传递和引用传递
**值传递**是指对象被值传递,意味着传递了对象的一个副本,即使副本被改变,也不会影响源对象。(因为值传递的时候,实际上是将实参的值复制一份给形参。) **值传递**是指对象被值传递,意味着传递了对象的一个副本,即使副本被改变,也不会影响源对象。(因为值传递的时候,实际上是将实参的值复制一份给形参。)
@ -357,6 +356,13 @@ hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返
到达目的地Dead 到达目的地Dead
## 31 关于 final 关键字的一些总结
final关键字主要用在三个地方变量、方法、类。
1. ①对于一个final变量如果是基本数据类型的变量则其数值一旦在初始化之后便不能更改如果是引用类型的变量则在对其初始化之后便不能再让其指向另一个对象。
2. ②当用final修饰一个类时表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。
3. ③使用final方法的原因有两个。第一个原因是把方法锁定以防任何继承类修改它的含义第二个原因是效率。在早期的Java实现版本中会将final方法转为内嵌调用。但是如果方法过于庞大可能看不到内嵌调用带来的任何性能提升现在的Java版本已经不需要使用final方法进行这些优化了。类中所有的private方法都隐式地指定为fianl。
# Java基础学习书籍推荐 # Java基础学习书籍推荐