Java教程(万字图文全面详解)

Java教程(万字图文全面详解)-mikechen

Java定义

作为一种最流行的网络编程语言之一,java语言在当今信息化社会中发挥了重要的作用。

Java语言具有面向对象、跨平台、安全性、多线程等特点,这使得java成为许多应用系统的理想开发语言。

 

Java基础语法

Java8大基本数据类型图文详解

Java语言提供了8种基本数据类型,如下图所示:

Java教程(万字图文全面详解)-mikechen

八大基本类型:

  • boolean/1
  • byte/8
  • char/16
  • short/16
  • int/32
  • float/32
  • long/64
  • double/64

 

 

Java常量(Java常量的定义与6种类型详解)

Java常量的定义是:用final修饰的量称为常量,并且在类编译时期载入类的常量池中。

常量举例:

final int COUNT=10;

采用接口(Interface)的中变量默认为static final的特性,示例如下:

public interface ConstantInterface {  
    String SUNDAY = "SUNDAY";  
    String MONDAY = "MONDAY";  
    String TUESDAY = "TUESDAY";  
    String WEDNESDAY = "WEDNESDAY";  
    String THURSDAY = "THURSDAY";  
    String FRIDAY = "FRIDAY";  
    String SATURDAY = "SATURDAY";  
}

 

Java枚举类的5种用法详解

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。

Java 枚举类使用 enum 关键字来定义,如下所示:

enum Color { RED, GREEN, BLUE; }

 

Java switch case用法详解

Java Switch语句是多路分支语句,它提供了一种简单的方法,可以用于替换if else。

Switch语法格式如下所示:

switch(表达式){

     case 常量值 1:

        语句块1

        [break;]

        ......

     case 常量值 n:

        语句块n

        [break;]  

     deafault:

        语句块 n+1;

        [break;]

        }

 

 

Java面向对象

Java面向对象之所以使程序设计更加完善和强大,主要是因为面向对象具有继承、封装和多态 3 个核心特性@mikechen

Java教程(万字图文全面详解)-mikechen

1.封装

Java封装从字面上来理解就是包装的意思,是将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。

使用封装有四大好处:

1、高内聚:封装细节,便于修改内部代码,提高可维护性;

2、低耦合:简化外部调用,便于调用者使用,便于扩展和协作;

3、安全性:提高代码的安全性,隐藏细节实现;

4、复用性:提高代码的复用性。

Java中的封装是使用访问修饰符private 、protected和public实现的。

 

2.继承

Java继承是面向对象软件技术中的一个概念,继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法。

Java继承可以降低代码编写的冗余度,提高编程的效率@mikechen

在生活中,我们所理解的“继承”更多的是“子承父业”,就是儿子与父亲之间存在“继承”关系。

Java教程(万字图文全面详解)-mikechen

现实中的例子:狗和猫都是动物,如果将狗、猫作为类,它们可以继承动物类很多的共同特性和行为。

如下图所示:

Java教程(万字图文全面详解)-mikechen

 

3.多态

Java多态是同一个行为具有多个不同表现形式或形态的能力。

多态的实现途径有三种:重写、重载、接口实现,虽然它们的实现方式不一样,但是核心都是:同一行为的不同表现形式

1)重写

重写,指的是子类对父类方法的重新定义,但是子类方法的参数列表和返回值类型,必须与父类方法一致。

如下所示:

class Chicken{
    public void live(String lastword){
        System.out.println(lastword);
    }
}
class BaiqieChicken extends Chicken{
    public void live(String lastword){
        System.out.println("这只白切鸡说:");
        System.out.println(lastword);
    }
}

这里白切鸡类重写了鸡类的live()方法,为什么说是重写呢?因为白切鸡类中live()方法的参数列表和返回值与父类一样,但方法体不一样了。

2)重载

重载,指的是在一个类中有若干个方法名相同,但参数列表不同的情况,返回值可以相同也可以不同的方法定义场景。

如下所示:

class BaiqieChicken extends Chicken{
    public void live(){
        System.out.println("这是一只会被做成白切鸡的鸡");
    }
    public void live(String lastword){
        System.out.println("这只白切鸡说:");
        System.out.println(lastword);
    }
}

这里的白切鸡类中的两个live()方法,一个无参一个有参,它们对于白切鸡类的live()方法的描述各不相同,但它们的方法名都是live。

3)接口实现

接口定义方法,方法的实现在继承接口的具体类中定义,也是对同一行为的不同表现形式

如下所示:

interface Chicken{
    public void live();
}
class BaiqieChicken implements Chicken{
    public void live(){
        System.out.println("这是一只会被做成白切鸡的鸡");
    }
}
class ShousiChicken implements Chicken{
    public void live(){
        System.out.println("这是一只会被做成手撕鸡的鸡");
    }
}

从上面我们可以看到,对于鸡接口中的live()方法,白切鸡类和手撕鸡类都有自己对这个方法的独特的定义。

 

Java泛型

Java泛型在java中有很重要的地位,无论是开源框架还是JDK源码都能看到它。

泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

Java教程(万字图文全面详解)-mikechen

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

Java教程(万字图文全面详解)-mikechen

更加详细的泛型请查看:Java泛型详解,史上最全图文详解!

会详解:

  • 泛型本质
  • 为什么使用泛型
  • 泛型类
  • 泛型接口
  • 泛型方法
  • 泛型通配符
  • 泛型的实现原理

 

Java异常

Java异常处理详解(非常详细)

异常的英文单词是exception,字面翻译就是“意外、例外”的意思,也就是非正常情况。

在Java程序设计中,Java异常处理是非常关键和重要的一部分,程序异常处理的好坏直接影响到整个代码质量。

Java 所有的异常都是从Throwable继承而来的,其下有2个子接口,Error和Exception。

Java教程(万字图文全面详解)-mikechen

1.Error

Error是无法处理的异常,比如OutOfMemoryError,一般发生这种异常,JVM会选择终止程序,因此我们编写程序时不需要关心这类异常。

2.Exception

Exception,是另外一个非常重要的异常子类,比如NullPointerException、IndexOutOfBoundsException、ClassCastException,这些异常是我们可以处理的异常。

3.Error和Exception的区别

 

异常和错误的区别是,异常是可以被处理的,而错误是没法处理的。

异常捕获处理的方法通常有:

  • try-catch
  • try-catch-finally
  • try-finally
  • try-with-resource

Java教程(万字图文全面详解)-mikechen

 

Java反射

Java反射机制是Java非常重要的动态特性,通过反射不仅可以获取到任何类的成员方法、成员变量、构造方法(Constructors)等信息,还可以动态创建Java类实例等,也是Java的各种框架底层实现的灵魂@mikechen

Java Reflection功能非常强大,比如:

Java教程(万字图文全面详解)-mikechen

  • 获取任意类的名称、package信息、所有属性、方法、注解、类型、类加载器等;
  • 获取任意对象的属性,并且能改变对象的属性;
  • 调用任意对象的方法;

通过反射我们可以实现动态装配,降低代码的耦合度,动态代理等。

更加详细的Java反射,请查看:Java反射机制全面详解

 

Java集合

Java集合主要包含:

Java教程(万字图文全面详解)-mikechen

Java集合List

Java集合HashSet

  • LinkedHashSet
  • TreeSet
  • Java Set总结

Java集合Queue

  • PriorityQueue
  • Deque

Java集合Map

更加详细的Java集合详解,请查看:Java集合框架详解(看这篇就够了)

 

Java网络编程

Java网络编程详解(非常全面)

Java网络编程这篇主要讲了以下几点:

Java教程(万字图文全面详解)-mikechen

  • 计算机网络
  • 网络七层模型
  • TCP/IP模型
  • TCP协议
  • UDP协议
  • HTTP协议
  • Java网络编程

 

Java注解

Java注解又称Java标注,是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。

Java注解是一个很重要的知识点,掌握好Java注解有利于学习Java开发框架底层实现。

Java注解主要分为:

Java教程(万字图文全面详解)-mikechen

1、Java自带的标准注解

包括@Override、@Deprecated、@SuppressWarnings等,使用这些注解后编译器就会进行检查。

2、元注解

元注解是用于定义注解的注解,包括@Retention、@Target、@Inherited、@Documented、@Repeatable 等。
元注解也是Java自带的标准注解,只不过用于修饰注解,比较特殊。

3、自定义注解

用户可以根据自己的需求定义注解。

Java注解详细介绍,请查看:Java注解最全详解(超级详细)

 

Java Lambda表达式

Java Lambda表达式详解(非常全面)

Lambda 表达式是 JDK8 的一个新特性,也被称为闭包,Lambda表达式允许把函数作为一个方法的参数,即行为参数化,函数作为参数传递进方法中。

Java 8 引入的 Lambda表达式的主要作用就是简化代码,写出更优雅的代码。

lambda 表达式的语法格式如下:

Java教程(万字图文全面详解)-mikechen

  • ():左侧部分指定了Lambda表达式需要的所有参数。
  • ->:Lambda表达式的操作符或者箭头操作符。
  • {}:右侧部分指定了Lambda体,即方法需要实现的内容。

示例,比如:Lambda表达式创建线程

// JDK8 Lambda来创建线程 
new Thread(() -> System.out.println("mikechen"));

 

Java设计模式

Java设计模式:23种设计模式(万字图文全面总结)

Java教程(万字图文全面详解)-mikechen

设计模式这篇文章主要讲了以下几点:

  • 设计模式的目的
  • 设计模式常用7大原则
  • 设计模式的种类
  • 5种创建模式
  • 7种结构型模式
  • 11种行为型模式

 

Java多线程

Java多线程超级详解(只看这篇就够了)

Java多线程这篇文章主要讲了以下几点:

Java教程(万字图文全面详解)-mikechen

  • 线程的生命周期
  • 线程的状态控制
  • 多线程的5种创建详解
  • 线程的3种同步详解
  • 线程安全问题详解
  • 线程死锁
  • 线程上下文切换

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法