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

修改文章排版样式

This commit is contained in:
SnailClimb 2018-09-29 11:21:38 +08:00 committed by GitHub
parent a9f055233d
commit f893ac1268
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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