Java基础教程(史上最全图文详解)

Java基础教程(史上最全图文详解)-mikechen

Java环境安装

JDK环境变量配置图解(手把手教程5步成功)

Java工程师都是从JDK环境变量配置开始学习的,下面手把手教大家JDK环境变量配置,5大步骤就可以配置好了。

第一步:电脑右键属性

右击我的电脑–>属性,如下图所示:

Java基础教程(史上最全图文详解)-mikechen

 

第二步:高级系统设置

在打开的系统窗口中,在左侧找到高级系统设置选项并打开,如下图所示:

Java基础教程(史上最全图文详解)-mikechen

 

第三步:环境变量

弹出窗口中点击【环境变量】,如下图所示:

Java基础教程(史上最全图文详解)-mikechen

 

第四步:配置JAVA_HOME

新建系统环境变量,如下图所示:

Java基础教程(史上最全图文详解)-mikechen

变量名输入 JAVA_HOME,变量值就是在安装时选择的安装路径,到安装目录把地址复制一下,粘贴过来就好了,然后点击确定。

Java基础教程(史上最全图文详解)-mikechen

 

第五步:配置Path

接下来在系统环境变量中找到Path,选中,然后再点击编辑,在弹出的新窗口中点击新建,输入”%JAVA_HOME%\bin”,点击确定。

Java基础教程(史上最全图文详解)-mikechen

下面测试以下:打开CMD命令行窗口,输入”java -version”,如下图所示:

Java基础教程(史上最全图文详解)-mikechen

如果出现JDK的版本信息,说明JDK配置环境变量成功了,恭喜你可以开始你的Java之旅了。

 

Java基本数据类型

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

Java语言提供了8种基本数据类型,分别是 byte、short、int、long、float、double、boolean、char。

如下图所示:

Java基础教程(史上最全图文详解)-mikechen

 

Java构造函数

Java构造函数详解(构造方法)

Java构造函数 是一种特殊的方法,主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值。

构造方法语法

声明格式:构造方法修饰词列表 类名(方法参数列表)

构造方法修饰词列表:publicprotectedprivate

[修饰符列表] 构造方法名(形式参数列表) {
    构造方法体;
}

示例如下:

//手动编写构造函数
public class student{

    private int age;
    private String name;

    //无参构造函数
    public student(){}

    //全参构造函数
    public student(int age, String name){
        this.age = age;
        this.name = name;
    }
    
    //部分参数构造函数
    public student(String name){
        this.name = name;
    }
}

 

Java接口

Java接口(定义作用规范及实例详解)

接口英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。

在Java中,定一个接口的形式如下:

public interface 接口名 {
     
    // 声明变量

    // 抽象方法
}

接口无法被实例化,但是可以被实现,用implements表示,必须实现接口内所描述的所有方法。

用现实生活中的一个例子来说明,比如:大家最熟悉的支付场景,现在用的比较多的就是:微信和支付宝。

Java基础教程(史上最全图文详解)-mikechen

这样我们就可以先定义好支付的接口,如下所示:

/**  
* 支付接口
* @author mikechen  
* */
public interface Pay {
    public String pay();
}

下面微信和支付宝就可以分别去实现自己的实现类。

/**  
* 接口详解
* @author mikechen  
* */
public interface Pay {
    public String pay();
}
/**
 * 支付宝支付
 */
public class AliPay implements Pay {
    @Override
    public String pay() {
        System.out.println("支付宝pay");
        return "success";
    }
}
/**
 * 微信支付
 */
public class WeixinPay implements Pay {
    @Override
    public String pay() {
        System.out.println("微信Pay");
        return "success";
    }
}


public static void main(String[] args) {
 /**
      * 支付宝应用
      */
    Pay pay = new AliPay();
    pay.pay();

 /**
      * 微信支付应用
      */
    pay = new WeixinPay();
    pay.pay();

}

 

Java数组

Java数组(定义初始化及5大方法详解)

Java数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成,其中每一个数据称作一个数组元素。

每个数组元素可以通过一个下标来访问它们,具体如下图所示:

Java基础教程(史上最全图文详解)-mikechen

 

Java常量

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

ava常量的定义是:用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枚举

Java枚举类的5种用法详解

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

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

举类常应用于 switch 语句中:

enum Color
{
    RED, GREEN, BLUE;
}
public class MyClass {
  public static void main(String[] args) {
    Color myVar = Color.BLUE;
 
    switch(myVar) {
      case RED:
        System.out.println("红色");
        break;
      case GREEN:
         System.out.println("绿色");
        break;
      case BLUE:
        System.out.println("蓝色");
        break;
    }
  }
}

执行以上代码输出结果为:

蓝色

 

Java switch case

Java switch case用法详解

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

Switch语法格式如下所示:

switch(表达式){

     case 常量值 1:

        语句块1

        [break;]

        ......

     case 常量值 n:

        语句块n

        [break;]  

     deafault:

        语句块 n+1;

        [break;]

        }

输入星期数,显示今天的运动项目,周一跑步、周二游泳、 周三慢走、 周四单车、 周五爬山、周六拳击、周日休息。

// switch 进行匹配
          switch (str){
              case "周一":
                  System.out.println("跑步");
                  bool = false;
                  break;
              case "周二":
                  System.out.println("游泳");
                  bool = false;
                  break;
              case "周三":
                  System.out.println("慢走");
                  bool = false;
                  break;
              case "周四":
                  System.out.println("骑自行车");
                  bool = false;
                  break;
              case "周五":
                  System.out.println("爬山");
                  bool = false;
                  break;
              case "周六":
                  System.out.println("拳击");
                  bool = false;
                  break;
              case "周日":
                  System.out.println("休息");
                  bool = false;
                  break;
              default :
                  System.out.println("请按格式输入星期数,如:周一");
                  break;
          }

 

Java三目运算

Java三目运算符(语法与使用案例详解)

三目元算符又称为三元运算符也称为条件运算符,目的就是根据条件得到数据结果。

Java三目运算格式:

result = <expression> ? <statement1> : <statement3>;

其中,expression 是一个布尔表达式,当 expression 为真时,执行 statement1, 否则就执行 statement3。

判断年龄,代码如下:

int age = 56;
System.out.println(age<18?"未成年":age>55?"老年":"青年");

Java泛型

Java泛型详解,史上最全图文详解!

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

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

Java基础教程(史上最全图文详解)-mikechen

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

Java基础教程(史上最全图文详解)-mikechen

 

Java异常

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

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

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

Java基础教程(史上最全图文详解)-mikechen

1.Error

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

2.Exception

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

3.Error和Exception的区别

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

Java面向对象

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

Java面向对象:三大特性图文详解

 

Java继承

Java继承图解(5大特点与实现例子详解)

继承性是面向对象的第二大主要特征,继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

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

Java基础教程(史上最全图文详解)-mikechen

 

Java封装

Java封装(定义作用及示例详解)

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

使用封装有四大好处:

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

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

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

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

 

Java是使用“访问控制符”来控制哪些细节需要封装,类的访问控制符只能是空或者 public,方法和属性的访问控制符有 4 个,分别是 public、 private、protected 和 friendly。

访问控制修饰符的权限,如下表所示:

Java基础教程(史上最全图文详解)-mikechen

上图说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。

 

Java多态

Java多态特征与3种实现方式详解

多态(Polymorphism)按字面的意思就是“多种状态”,在面向对象语言中,接口的多种不同的实现方式即为多态。

现实中的例子:举一个手机扫码支付的例子,二维码并不知道客户是通过何种方式进行支付,只有通过二维码后才能判断是走哪种支付方式执行对应流程。

Java基础教程(史上最全图文详解)-mikechen

/**  
* 面向对象:多态
* @author mikechen  
* */
public abstract class Pay {
    abstract public String pay();
}
/**
 * 支付宝支付
 */
public class AliPay extends Pay {
    @Override
    public String pay() {
        System.out.println("支付宝pay");
        return "success";
    }
}
/**
 * 微信支付
 */
public class WeixinPay extends Pay {
    @Override
    public String pay() {
        System.out.println("微信Pay");
        return "success";
    }
}


public static void main(String[] args) {
 /**
      * 支付宝支付多态应用
      */
    Pay pay = new AliPay();
    pay.pay();

 /**
      * 微信支付多态应用
      */
    pay = new WeixinPay();
    pay.pay();

}

 

Java抽象类

Java抽象类详解(超级详细)

在Java中abstract是抽象的意思,可以修饰类、成员方法,由abstract修饰的方法叫抽象方法,由abstract修饰的类叫抽象类。

Java抽象类的语法

1.抽象类语法

修饰符    abstract    class  类名{

}

代码示例:

//抽象类由abstract修饰
public abstract class Student{

}

抽象方法的3个特征如下:

1、抽象方法没有方法体;

2、抽象方法必须存在于抽象类中;

3、子类重写父类时,必须重写父类所有的抽象方法。

 

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

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

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

评论交流
    说说你的看法