From ec29c699b3b98f66f8b5918b6f4347fdd7e04ff4 Mon Sep 17 00:00:00 2001 From: guide Date: Mon, 26 Oct 2020 21:14:12 +0800 Subject: [PATCH] =?UTF-8?q?Update=20Java=E5=9F=BA=E7=A1=80=E7=9F=A5?= =?UTF-8?q?=E8=AF=86.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/java/basis/Java基础知识.md | 173 +++++++++++++--------------- 1 file changed, 81 insertions(+), 92 deletions(-) diff --git a/docs/java/basis/Java基础知识.md b/docs/java/basis/Java基础知识.md index 7d7568f7..34d110a0 100644 --- a/docs/java/basis/Java基础知识.md +++ b/docs/java/basis/Java基础知识.md @@ -1,95 +1,93 @@ -点击关注[公众号](#公众号)及时获取笔主最新更新文章,并可免费领取本文档配套的《Java 面试突击》以及 Java 工程师必备学习资源。 + - + - [1. Java 基本功](#1-java-基本功) - - [1.1. Java 入门(基础概念与常识)](#11-java-入门基础概念与常识) - - [1.1.1. Java 语言有哪些特点?](#111-java-语言有哪些特点) - - [1.1.2. 关于 JVM JDK 和 JRE 最详细通俗的解答](#112-关于-jvm-jdk-和-jre-最详细通俗的解答) - - [1.1.2.1. JVM](#1121-jvm) - - [1.1.2.2. JDK 和 JRE](#1122-jdk-和-jre) - - [1.1.3. Oracle JDK 和 OpenJDK 的对比](#113-oracle-jdk-和-openjdk-的对比) - - [1.1.4. Java 和 C++的区别?](#114-java-和-c的区别) - - [1.1.5. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同?](#115-什么是-java-程序的主类-应用程序和小程序的主类有何不同) - - [1.1.6. import java 和 javax 有什么区别?](#116-import-java-和-javax-有什么区别) - - [1.1.7. 为什么说 Java 语言“编译与解释并存”?](#117-为什么说-java-语言编译与解释并存) - - [1.2. Java 语法](#12-java-语法) - - [1.2.1. 字符型常量和字符串常量的区别?](#121-字符型常量和字符串常量的区别) - - [1.2.2. 关于注释?](#122-关于注释) - - [1.2.3. 标识符和关键字的区别是什么?](#123-标识符和关键字的区别是什么) - - [1.2.4. Java中有哪些常见的关键字?](#124-java中有哪些常见的关键字) - - [1.2.5. 自增自减运算符](#125-自增自减运算符) - - [1.2.6. continue、break、和return的区别是什么?](#126-continuebreak和return的区别是什么) - - [1.2.7. Java泛型了解么?什么是类型擦除?介绍一下常用的通配符?](#127-java泛型了解么什么是类型擦除介绍一下常用的通配符) - - [1.2.8. ==和equals的区别](#128-和equals的区别) - - [1.2.9. hashCode()与 equals()](#129-hashcode与-equals) - - [1.3. 基本数据类型](#13-基本数据类型) - - [1.3.1. Java中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?](#131-java中的几种基本数据类型是什么对应的包装类型是什么各自占用多少字节呢) - - [1.3.2. 自动装箱与拆箱](#132-自动装箱与拆箱) - - [1.3.3. 8种基本类型的包装类和常量池](#133-8种基本类型的包装类和常量池) - - [1.4. 方法(函数)](#14-方法函数) - - [1.4.1. 什么是方法的返回值?返回值在类的方法里的作用是什么?](#141-什么是方法的返回值返回值在类的方法里的作用是什么) - - [1.4.2. 为什么 Java 中只有值传递?](#142-为什么-java-中只有值传递) - - [1.4.3. 重载和重写的区别](#143-重载和重写的区别) - - [1.4.3.1. 重载](#1431-重载) - - [1.4.3.2. 重写](#1432-重写) - - [1.4.4. 深拷贝 vs 浅拷贝](#144-深拷贝-vs-浅拷贝) - - [1.4.5. 方法的四种类型](#145-方法的四种类型) + - [1.1. Java 入门(基础概念与常识)](#11-java-入门基础概念与常识) + - [1.1.1. Java 语言有哪些特点?](#111-java-语言有哪些特点) + - [1.1.2. 关于 JVM JDK 和 JRE 最详细通俗的解答](#112-关于-jvm-jdk-和-jre-最详细通俗的解答) + - [1.1.2.1. JVM](#1121-jvm) + - [1.1.2.2. JDK 和 JRE](#1122-jdk-和-jre) + - [1.1.3. Oracle JDK 和 OpenJDK 的对比](#113-oracle-jdk-和-openjdk-的对比) + - [1.1.4. Java 和 C++的区别?](#114-java-和-c的区别) + - [1.1.5. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同?](#115-什么是-java-程序的主类-应用程序和小程序的主类有何不同) + - [1.1.6. import java 和 javax 有什么区别?](#116-import-java-和-javax-有什么区别) + - [1.1.7. 为什么说 Java 语言“编译与解释并存”?](#117-为什么说-java-语言编译与解释并存) + - [1.2. Java 语法](#12-java-语法) + - [1.2.1. 字符型常量和字符串常量的区别?](#121-字符型常量和字符串常量的区别) + - [1.2.2. 关于注释?](#122-关于注释) + - [1.2.3. 标识符和关键字的区别是什么?](#123-标识符和关键字的区别是什么) + - [1.2.4. Java中有哪些常见的关键字?](#124-java中有哪些常见的关键字) + - [1.2.5. 自增自减运算符](#125-自增自减运算符) + - [1.2.6. continue、break、和return的区别是什么?](#126-continue-break-和return的区别是什么) + - [1.2.7. Java泛型了解么?什么是类型擦除?介绍一下常用的通配符?](#127-java泛型了解么什么是类型擦除介绍一下常用的通配符) + - [1.2.8. ==和equals的区别](#128-和equals的区别) + - [1.2.9. hashCode()与 equals()](#129-hashcode与-equals) + - [1.3. 基本数据类型](#13-基本数据类型) + - [1.3.1. Java中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?](#131-java中的几种基本数据类型是什么对应的包装类型是什么各自占用多少字节呢) + - [1.3.2. 自动装箱与拆箱](#132-自动装箱与拆箱) + - [1.3.3. 8种基本类型的包装类和常量池](#133-8种基本类型的包装类和常量池) + - [1.4. 方法(函数)](#14-方法函数) + - [1.4.1. 什么是方法的返回值?返回值在类的方法里的作用是什么?](#141-什么是方法的返回值返回值在类的方法里的作用是什么) + - [1.4.2. 为什么 Java 中只有值传递?](#142-为什么-java-中只有值传递) + - [1.4.3. 重载和重写的区别](#143-重载和重写的区别) + - [1.4.4. 深拷贝 vs 浅拷贝](#144-深拷贝-vs-浅拷贝) + - [1.4.5. 方法的四种类型](#145-方法的四种类型) - [2. Java 面向对象](#2-java-面向对象) - - [2.1. 类和对象](#21-类和对象) - - [2.1.1. 面向对象和面向过程的区别](#211-面向对象和面向过程的区别) - - [2.1.2. 构造器 Constructor 是否可被 override?](#212-构造器-constructor-是否可被-override) - - [2.1.3. 在 Java 中定义一个不做事且没有参数的构造方法的作用](#213-在-java-中定义一个不做事且没有参数的构造方法的作用) - - [2.1.4. 成员变量与局部变量的区别有哪些?](#214-成员变量与局部变量的区别有哪些) - - [2.1.5. 创建一个对象用什么运算符?对象实体与对象引用有何不同?](#215-创建一个对象用什么运算符对象实体与对象引用有何不同) - - [2.1.6. 一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么?](#216-一个类的构造方法的作用是什么-若一个类没有声明构造方法该程序能正确执行吗-为什么) - - [2.1.7. 构造方法有哪些特性?](#217-构造方法有哪些特性) - - [2.1.8. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?](#218-在调用子类构造方法之前会先调用父类没有参数的构造方法其目的是) - - [2.1.9. 对象的相等与指向他们的引用相等,两者有什么不同?](#219-对象的相等与指向他们的引用相等两者有什么不同) - - [2.2. 面向对象三大特征](#22-面向对象三大特征) - - [2.2.1. 封装](#221-封装) - - [2.2.2. 继承](#222-继承) - - [2.2.3. 多态](#223-多态) - - [2.3. 修饰符](#23-修饰符) - - [2.3.1. 在一个静态方法内调用一个非静态成员为什么是非法的?](#231-在一个静态方法内调用一个非静态成员为什么是非法的) - - [2.3.2. 静态方法和实例方法有何不同](#232-静态方法和实例方法有何不同) - - [2.3.3. 常见关键字总结:static,final,this,super](#233-常见关键字总结staticfinalthissuper) - - [2.4. 接口和抽象类](#24-接口和抽象类) - - [2.4.1. 接口和抽象类的区别是什么?](#241-接口和抽象类的区别是什么) - - [2.5. 其它重要知识点](#25-其它重要知识点) - - [2.5.1. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?](#251-string-stringbuffer-和-stringbuilder-的区别是什么-string-为什么是不可变的) - - [2.5.2. Object 类的常见方法总结](#252-object-类的常见方法总结) - - [2.5.3. == 与 equals(重要)](#253--与-equals重要) - - [2.5.4. hashCode 与 equals (重要)](#254-hashcode-与-equals-重要) - - [2.5.4.1. hashCode()介绍](#2541-hashcode介绍) - - [2.5.4.2. 为什么要有 hashCode](#2542-为什么要有-hashcode) - - [2.5.4.3. hashCode()与 equals()的相关规定](#2543-hashcode与-equals的相关规定) - - [2.5.5. Java 序列化中如果有些字段不想进行序列化,怎么办?](#255-java-序列化中如果有些字段不想进行序列化怎么办) - - [2.5.6. 获取用键盘输入常用的两种方法](#256-获取用键盘输入常用的两种方法) + - [2.1. 类和对象](#21-类和对象) + - [2.1.1. 面向对象和面向过程的区别](#211-面向对象和面向过程的区别) + - [2.1.2. 构造器 Constructor 是否可被 override?](#212-构造器-constructor-是否可被-override) + - [2.1.3. 在 Java 中定义一个不做事且没有参数的构造方法的作用](#213-在-java-中定义一个不做事且没有参数的构造方法的作用) + - [2.1.4. 成员变量与局部变量的区别有哪些?](#214-成员变量与局部变量的区别有哪些) + - [2.1.5. 创建一个对象用什么运算符?对象实体与对象引用有何不同?](#215-创建一个对象用什么运算符对象实体与对象引用有何不同) + - [2.1.6. 一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么?](#216-一个类的构造方法的作用是什么-若一个类没有声明构造方法该程序能正确执行吗-为什么) + - [2.1.7. 构造方法有哪些特性?](#217-构造方法有哪些特性) + - [2.1.8. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?](#218-在调用子类构造方法之前会先调用父类没有参数的构造方法其目的是) + - [2.1.9. 对象的相等与指向他们的引用相等,两者有什么不同?](#219-对象的相等与指向他们的引用相等两者有什么不同) + - [2.2. 面向对象三大特征](#22-面向对象三大特征) + - [2.2.1. 封装](#221-封装) + - [2.2.2. 继承](#222-继承) + - [2.2.3. 多态](#223-多态) + - [2.3. 修饰符](#23-修饰符) + - [2.3.1. 在一个静态方法内调用一个非静态成员为什么是非法的?](#231-在一个静态方法内调用一个非静态成员为什么是非法的) + - [2.3.2. 静态方法和实例方法有何不同](#232-静态方法和实例方法有何不同) + - [2.3.3. 常见关键字总结:static,final,this,super](#233-常见关键字总结staticfinalthissuper) + - [2.4. 接口和抽象类](#24-接口和抽象类) + - [2.4.1. 接口和抽象类的区别是什么?](#241-接口和抽象类的区别是什么) + - [2.5. 其它重要知识点](#25-其它重要知识点) + - [2.5.1. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?](#251-string-stringbuffer-和-stringbuilder-的区别是什么-string-为什么是不可变的) + - [2.5.2. Object 类的常见方法总结](#252-object-类的常见方法总结) + - [2.5.3. == 与 equals(重要)](#253-与-equals重要) + - [2.5.4. hashCode 与 equals (重要)](#254-hashcode-与-equals-重要) + - [2.5.4.1. hashCode()介绍](#2541-hashcode介绍) + - [2.5.4.2. 为什么要有 hashCode](#2542-为什么要有-hashcode) + - [2.5.4.3. hashCode()与 equals()的相关规定](#2543-hashcode与-equals的相关规定) + - [2.5.5. Java 序列化中如果有些字段不想进行序列化,怎么办?](#255-java-序列化中如果有些字段不想进行序列化怎么办) + - [2.5.6. 获取用键盘输入常用的两种方法](#256-获取用键盘输入常用的两种方法) - [3. Java 核心技术](#3-java-核心技术) - - [3.1. 反射机制](#31-反射机制) - - [3.1.1. 静态编译和动态编译](#311静态编译和动态编译) - - [3.1.2. 反射机制优缺点](#312反射机制优缺点) - - [3.1.3. 反射的应用场景](#313反射的应用场景) - - - [3.2. 异常](#32-异常) - - [3.2.1. Java 异常类层次结构图](#321-java-异常类层次结构图) - - [3.2.2. Throwable 类常用方法](#322-throwable-类常用方法) - - [3.2.3. try-catch-finally](#323-try-catch-finally) - - [3.2.4. 使用 `try-with-resources` 来代替`try-catch-finally`](#324-使用-try-with-resources-来代替try-catch-finally) - - [3.3. 多线程](#33-多线程) - - [3.3.1. 简述线程、程序、进程的基本概念。以及他们之间关系是什么?](#331-简述线程程序进程的基本概念以及他们之间关系是什么) - - [3.3.2. 线程有哪些基本状态?](#332-线程有哪些基本状态) - - [3.4. 文件与 I\O 流](#34-文件与-io-流) - - [3.4.1. Java 中 IO 流分为几种?](#341-java-中-io-流分为几种) - - [3.4.1.1. 既然有了字节流,为什么还要有字符流?](#3411-既然有了字节流为什么还要有字符流) - - [3.4.1.2. BIO,NIO,AIO 有什么区别?](#3412-bionioaio-有什么区别) + - [3.1. 反射机制](#31-反射机制) + - [3.1.1.静态编译和动态编译](#311静态编译和动态编译) + - [3.1.2.反射机制优缺点](#312反射机制优缺点) + - [3.1.3.反射的应用场景](#313反射的应用场景) + - [3.2. 异常](#32-异常) + - [3.2.1. Java 异常类层次结构图](#321-java-异常类层次结构图) + - [3.2.2. Throwable 类常用方法](#322-throwable-类常用方法) + - [3.2.3. try-catch-finally](#323-try-catch-finally) + - [3.2.4. 使用 `try-with-resources` 来代替`try-catch-finally`](#324-使用-try-with-resources-来代替try-catch-finally) + - [3.3. 多线程](#33-多线程) + - [3.3.1. 简述线程、程序、进程的基本概念。以及他们之间关系是什么?](#331-简述线程-程序-进程的基本概念以及他们之间关系是什么) + - [3.3.2. 线程有哪些基本状态?](#332-线程有哪些基本状态) + - [3.4. 文件与 I\O 流](#34-文件与-io-流) + - [3.4.1. Java 中 IO 流分为几种?](#341-java-中-io-流分为几种) + - [3.4.1.1. 既然有了字节流,为什么还要有字符流?](#3411-既然有了字节流为什么还要有字符流) + - [3.4.1.2. BIO,NIO,AIO 有什么区别?](#3412-bionioaio-有什么区别) - [4. 参考](#4-参考) -- [5. 公众号](#5-公众号) - + + + ## 1. Java 基本功 @@ -1394,12 +1392,3 @@ Java Io 流共涉及 40 多个类,这些类看上去很杂乱,但实际上 - https://www.educba.com/oracle-vs-openjdk/ - https://stackoverflow.com/questions/22358071/differences-between-oracle-jdk-and-openjdk?answertab=active#tab-top -## 5. 公众号 - -如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。 - -**《Java 面试突击》:** 由本文档衍生的专为面试而生的《Java 面试突击》V2.0 PDF 版本[公众号](#公众号)后台回复 **"Java 面试突击"** 即可免费领取! - -**Java 工程师必备学习资源:** 一些 Java 工程师常用学习资源公众号后台回复关键字 **“1”** 即可免费无套路获取。 - -![我的公众号](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png)