共计 3566 个字符,预计需要花费 9 分钟才能阅读完成。
前言
这是 举荐学 java
系列的第三篇,这节的内容很多,对于小白来说,都是新概念,要熟练掌握的话,须要大量的练习。本节内容的导图会很大,小编会在解说每个知识点之前独自提供导图,当然全图也有,除此之外,这节内容会波及很多零碎的 API,而咱们要学会看 jdk 文档,所以也会给大家提供 jdk1.8 的帮忙文档,下载见文末。
有图有假相就不多说了,知识点根本是上一篇的两倍。
设计模式
Java 中的 23 种设计模式在开发中利用很多,不仅仅是咱们平时的利用开发,还包含一些框架和零碎源码中都有利用,具体的内容不能生吞活剥,而是在教训中去领会这个过程,思考利用设计模式的机会和场景。
其中单例设计模式最罕用,也最简略,简直能够说凡是用 Java 语言开发的程序,都会用到单例设计模式。没有必要死磕概念,重要的是了解其思维,随着开发教训的累积,就会缓缓体悟到其中的奥秘!
/**
* 懒汉式
*/
public class SingletonLazy {
private static SingletonLazy singletonHungry;
private SingletonLazy() {}
public static SingletonLazy getInstance() {if (singletonHungry == null) {singletonHungry = new SingletonLazy();
}
return singletonHungry;
}
}
/**
* 饿汉式
*/
public class SingletonHungry {private static SingletonHungry singletonHungry = new SingletonHungry();
private SingletonHungry() {}
public static SingletonHungry getInstance() {return singletonHungry;}
}
多态
多态
是 Java 面向对象中的三大特点之一,上一篇中讲了 封装
和 继承
,多态是本节的第一重点内容。其要表白的意思简而言之:一种事务的多种状态展示模式就叫多态。
形象起来不好了解,举例理论场景比拟好了解:
比方咱们软件开发者自身就是形象一类,因为其余行业的人了解起来就不容易,而且还分不清楚,你到底是开发啥的?(是前端开发还是后端开发?是 Java 开发还是 PHP 开发?是零碎层开发还是游戏开发?等等),这个概念总体给人是一种形象的,但还大略晓得这个词具备哪些 共性 ,而这里的
共性
就是形象进去的具体能力,Java 中叫形象办法,因为每个具体的开发者所具备的同一个办法外部能力体现不同,这就是具体子类要实现的。这里的子类能够了解为java 开发工程师
、PHP 开发工程师
等等。
在咱们理论开发中,依据业务场景,咱们要本人去提取抽象类,进而实现拆散的能力,而所分离出来的多个子类,具备不同的表现形式,就是多种状态的,故名 多态
。
关键字 instanceof
置信你能明确,咱们抽离进去了抽象类(父类),那么子类的体现各异,而父类如何判断一个子类是否是它的子类呢?这就是关键字 instanceof
的用途。
学习多态可能听到最多的一句话就是:父类援用指向子类对象。
什么叫 援用 ,老版本教材中叫做 句柄
,新点的教程都称为 援用
,其实就是创立的对象的变量,比方:
// programmer 就是句柄,也叫援用
Programmer programmer = new Programmer();
再举个父类援用指向子类对象的例子:
// new 是用来创建对象的,上一节大家都用过
Programmer javaProgrammer = new JavaProgrammer();
interface
这块内容大家看导图,记住用法和为什么用。理论开发中,定义接口的场景太多了,必须熟练掌握应用规定。
小结
多态
的内容是重中之重,必须搞明确上面这几个概念和为什么?这也是常见的面试题。
- Java 中的多态你是怎么了解的?
- 你对抽象类怎么了解?抽象类有什么特点?
- Java 为什么会有接口(interface)?
- 接口的应用规定和接口中办法的定义
- 外部类的利用场景?
异样
这块内容当初开发中依附 IDE 的只能提醒曾经能够搞定了,更多的利用状况是本人开发 SDK 或者封装组件时候的解决,明确出现异常时,程序的执行程序,以及父类办法抛出异样,子类重写时抛异样的规定。
包装类
- 明确为什么要有包装类?
- 熟练掌握装箱与拆箱的规定和类型转换办法的应用
导图中提到的转换方法,开发中常常用到,大家要多练习,最起码根本数据类型要全副尝试一次。
以下代码是本节的重点:
private static void compareDemo() {
Integer num1 = 20;
/**
* 相当于执行了 Integer num2 = Integer.valueOf(2021);
*
* Double 和 Float 不具备这个个性(常量池)*/
Integer num2 = 2021;
Integer num3 = 20;
Integer num4 = 2021;
System.out.println("num1 与 20 相等吗" + (num1 == 20));
// 主动拆箱比拟
System.out.println("num2 与 2021 相等吗" + (num2 == 2021));
/**
* 后果不同的起因:Integer 在 -128~127 之间时,参加两个 Integer 对象比拟前会主动拆箱,超过这个范畴则不会
*/
System.out.println("num1 与 num3 相等吗" + (num1 == num3)); // 30 数字在比拟
System.out.println("num2 与 num4 相等吗" + (num2 == num4)); // 对象在比拟
}
字符串
这部分内容每个 Java 开发者必须熟练掌握,字符串的 截取、替换、匹配、大小写转换、查找、拼接 等是最最罕用的操作,导图中列出来的办法必须纯熟使用。
汇合
导图中的重点内容都有标记,是属于重中之重,Java 中的汇合内容也是面试问的最多的知识点之一,必须牢记于心,纯熟使用。ArrayList
和 HashMap
是开发中最罕用到的汇合,必须要明确它们各自的特点和罕用办法以及特有办法,大多数场景是两者联合来应用,比方:条件过滤操作等。
线程
首先要搞清楚程序执行的默认程序和主线程之间的关系;其次要明确当有多个线程的时候,程序又是如何执行的;这两个问题搞清楚后,你就会明确什么时候须要创立线程了。
知识点(同样是面试题):
- 创立线程的形式
- 线程的执行程序
- 对 synchronized 关键字的了解
- 线程死锁问题
IO
这部分内容理论开发中与网络申请联合应用,比方下载文件、上传文件、批改头像等,这里的具体 API 应用都是最原生的,也就是底层实现逻辑是这样的,往往理论开发中咱们会应用他人封装的框架,看不到最外面的 API 实现,框架会暴漏给咱们一些办法,兴许就是一句话就实现了下载或者上传;然而有些场景还是须要咱们手动撸一遍,所以这些原理的外围代码还是要把握,偶然面试也会让你口述流程。
以下代码是对于 File
类创立文件的三种形式,依据业务都有可能会用到:
/**
* 创立文件 File 的几种形式
*
* @param parentPath 前端门路
* @param fileNamePath 后端门路
*/
private static void createFile(String parentPath, String fileNamePath) {File file1 = new File(parentPath + "\\" + fileNamePath);
System.out.println("file1 is exit ?" + file1.exists());
File file2 = new File(parentPath, fileNamePath);
System.out.println("file2 is exit ?" + file2.exists());
File file3 = new File(new File(parentPath), fileNamePath);
System.out.println("file3 is exit ?" + file3.exists());
}
总结
jdk1.8 帮忙文档下载:https://pan.baidu.com/s/12JHAlmwZbtBiJlPNZPlf3Q
取明码:d5ya(这个文档是小编从网上下的,外面如有其余内容请勿置信哈)
这三篇内容,对于小白倡议 15 天学完,必须操之过急,这就是 Java 最根底的货色,不论是前面要接触的如许牛逼的框架,底层都离不开根底的撑持。
补充内容:Java 中的枚举(Enum)
绝对比较简单,自行搜寻相熟写法,后续的我的项目篇章就会利用。
小编特意创立了一个公众号:
举荐学 java
,会分享与java
相干的内容,并且以原创为主,欢送大家搜寻关注(关注即送小编筛选的精品视频教程),一起学 Java!