一文回顾 Java 入门知识(下)

推荐学java
• 阅读 1005

前言

这是推荐学java 系列的第三篇,这节的内容很多,对于小白来说,都是新概念,要熟练掌握的话,需要大量的练习。本节内容的导图会很大,小编会在讲解每个知识点之前单独提供导图,当然全图也有,除此之外,这节内容会涉及很多系统的API,而我们要学会看 jdk 文档,所以也会给大家提供 jdk1.8 的帮助文档,下载见文末。

一文回顾 Java 入门知识(下)

有图有真相就不多说了,知识点基本是上一篇的两倍。

设计模式

一文回顾 Java 入门知识(下)

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 面向对象中的三大特点之一,上一篇中讲了 封装继承 ,多态是本节的第一重点内容。其要表达的意思简而言之:一种事务的多种形态展现形式就叫多态。

抽象起来不好理解,举例实际场景比较好理解:

比如我们软件开发者本身就是抽象一类,因为其他行业的人理解起来就不容易,而且还分不清楚,你到底是开发啥的?(是前端开发还是后端开发?是Java开发还是PHP开发?是系统层开发还是游戏开发?等等),这个概念总体给人是一种抽象的,但还大概知道这个词具有哪些 共性 ,而这里的 共性 就是抽象出来的具体能力,Java中叫抽象方法,因为每个具体的开发者所具有的同一个方法内部能力表现不同,这就是具体子类要实现的。这里的子类可以理解为 java开发工程师PHP开发工程师 等等。

在我们实际开发中,根据业务场景,我们要自己去提取抽象类,进而实现分离的能力,而所分离出来的多个子类,具有不同的表现形式,就是多种形态的,故名 多态

关键字 instanceof

相信你能明白,我们抽离出来了抽象类(父类),那么子类的表现各异,而父类如何判断一个子类是否是它的子类呢?这就是关键字 instanceof 的用处。

学习多态可能听到最多的一句话就是:父类引用指向子类对象

什么叫引用,老版本教材中叫做句柄,新点的教程都称为 引用,其实就是创建的对象的变量,比如:

// programmer 就是句柄,也叫引用
Programmer programmer = new Programmer();

再举个父类引用指向子类对象的例子:

// new 是用来创建对象的,上一节大家都用过
Programmer javaProgrammer = new JavaProgrammer();

interface

这块内容大家看导图,记住用法和为什么用。实际开发中,定义接口的场景太多了,必须熟练掌握使用规则。

小结

多态 的内容是重中之重,必须搞明白下面这几个概念和为什么?这也是常见的面试题。

  1. Java中的多态你是怎么理解的?
  2. 你对抽象类怎么理解?抽象类有什么特点?
  3. Java为什么会有接口(interface)?
  4. 接口的使用规则和接口中方法的定义
  5. 内部类的应用场景?

异常

一文回顾 Java 入门知识(下)

这块内容现在开发中依靠 IDE 的只能提示已经可以搞定了,更多的应用情况是自己开发SDK或者封装组件时候的处理,明确出现异常时,程序的执行顺序,以及父类方法抛出异常,子类重写时抛异常的规则。

包装类

一文回顾 Java 入门知识(下)

  • 明确为什么要有包装类?
  • 熟练掌握装箱与拆箱的规则和类型转换方法的使用

导图中提到的转换方法,开发中经常用到,大家要多练习,最起码基本数据类型要全部尝试一次。

以下代码是本节的重点:

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开发者必须熟练掌握,字符串的截取、替换、匹配、大小写转换、查找、拼接等是最最常用的操作,导图中列出来的方法必须熟练运用。

集合

一文回顾 Java 入门知识(下)

导图中的重点内容都有标记,是属于重中之重,Java中的集合内容也是面试问的最多的知识点之一,必须牢记于心,熟练运用。ArrayListHashMap 是开发中最常用到的集合,必须要明白它们各自的特点和常用方法以及特有方法,大多数场景是两者结合来使用,比如:条件过滤操作等。

线程

一文回顾 Java 入门知识(下)

首先要搞清楚程序执行的默认顺序和主线程之间的关系;其次要明白当有多个线程的时候,程序又是如何执行的;这两个问题搞清楚后,你就会明白什么时候需要创建线程了。

知识点(同样是面试题):

  • 创建线程的方式
  • 线程的执行顺序
  • 对synchronized关键字的理解
  • 线程死锁问题

IO

一文回顾 Java 入门知识(下)

这部分内容实际开发中与网络请求结合使用,比如下载文件、上传文件、修改头像等,这里的具体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!

一文回顾 Java 入门知识(下)

点赞
收藏
评论区
推荐文章
推荐学java 推荐学java
2年前
推荐学java——MyBatis高级
补两张知识导图最近的两篇文章和文中缺少了知识结构图,这里补充一下。本节内容是关于MyBatis的高级部分,上节的内容重点是带大家从零开始搭建一个使用MyBatis框架的java项目,并且能使用MyBatis框架完成对数据库中表的增删改查操作;这听起来不难理解,但对于新手要实战一遍,还是需要多加练习,推荐大家通过新建Module的方式来操作。
推荐学java 推荐学java
2年前
一文回顾 Java 入门知识(中)
前言上周发表了推荐学java系列第一篇,内容零基础小白也能看得懂,今天这篇内容就比较多,也是比较重点的内容,小编会先上一个思维导图,有助于大家理解每个知识点和层次结构。知识导图说明:这部分内容可以说是真正进入编程的视界了,因为已经牵扯到逻辑和思维了。首先是最最基础的Java编码写法规则和结构,比如导图里的:运算符、流程控制语句、循环、数组和方法这些内
MySQL系列:2021Java高级进阶学习资料
阶段一:筑基Java基础掌握不牢,对于一个开发人员来说无疑是非常致命的。学习任何一个技术知识无疑不是从基础开始;在面试的时候,面试官无疑不是从基础开始拷问。内容包括:Java概述、Java基本语法、Java执行控制流程、面向对象、访问控制权限、接口和抽象类、异常、内部类、集合、泛形、反射、枚举、I/O、关于null的几种处理方式、思维导图。1、Jav
Wesley13 Wesley13
2年前
java思维导图90天训练营第一期,向架构师前进一步
作者寄语嗨,大家好,我是java思维导图的小编吕一明。这次训练营为期90天,主要针对有些java基础,但是项目经验比较缺乏的程序员。内容涵盖了主流的spring,redis,rabbitmq,MongoDB等技术,还有负载均衡nginx,持续集成Jenkins,压力测试loadrunner等工具的使用;另外还会综合讲解5个社区比较受欢迎的开源项目。训
Wesley13 Wesley13
2年前
JAVA从头回顾
概述       前段时间忙于面试,在面试过程中,发现工作几年,有很多基础有些淡忘了,现在重新从基础开始回顾,JAVA从入门到放弃系列博文将会记录一下基于JDK1.6在工作中不常用而容易忘记,但是有必须要掌握的一些知识点,本篇先从java环境相关的知识点写起JDK和JRE关系   开始学习JAVA开发时,首先就需要
Wesley13 Wesley13
2年前
Java入门系列之重写
【导读】关于所有Java系列文章面向有一定基础的童鞋,所写每一篇希望有一定含金量,有些内容可能会从Java整个语法全局考虑穿插后续要讲解的内容以成系统,若不理解,请看完后再学习上一节我们讲解完了final关键字,本节我们继续来对比讲解Java和C中的重写,二者语言的重写区分非常清晰,Java子类中基类方法签名一样或通过注解@
Wesley13 Wesley13
2年前
Java IO流基础总结
前言好久不用Java的IO流,把好多的基础知识都忘了,昨天在写一段代码,发现好多细节都忘了。那天在组织组内代码评审的时候,发现有人在乱用IO流相关的类,所以还是写篇文章,把这个知识点总结一下。IO流类图结构对于Java这种庞大的体系,我们要学某一块知识点,只有从整体上把握,整体上形成一个知识架构,这样才能更好的把握学习内容和
Stella981 Stella981
2年前
HashMap 为什么会导致 CPU 100%?文章看不懂?来看这个视频吧!——面试突击 006 期
无论是在实际工作中还是在面试中,HashMap无疑是使用频率最高的知识点之一,所以我们需要搞懂每一个关于HashMap的知识点才行。哈喽,大家好,我是老王,欢迎来到Java面试突击,我们今天来开始第6期的内容。本期的问题是:HashMap为什会导致CPU运行100%?这是一个比较常见的经典问题了,但是有很多人读者朋友给我反馈
流浪剑客 流浪剑客
6个月前
Mac电脑超强思维导图软件:Xmind for Mac最新中文版 兼容M1
XMindMac思维导图软件是一款强大、易于使用的思维导图工具,旨在帮助用户快速创建、编辑和共享思维导图。以下是XMindMac思维导图软件的一些主要特点:直观的用户界面:XMindMac思维导图软件提供了直观的用户界面,使得创建和编辑思维导图变得非常简单
公孙晃 公孙晃
5个月前
「最新」Xmind for Mac v24.01中文版
思维导图工具哪个好?是一款流行的思维导图软件,可以帮助用户创建各种类型的思维导图和概念图。以下是XMind的主要特点:多样化的导图类型:XMind提供了多种类型的导图,如鱼骨图、树形图、机构图等,可以满足不同用户的需求。强大的功能和工具:XMind拥有多种
推荐学java
推荐学java
Lv1
微信搜索「javaFirst」关注后回复「java教程」获取精品视频教程
文章
14
粉丝
3
获赞
17