JavaEE入门级别最全教程8--初学者必看

117 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

枚举

枚举的概念

枚举也是一种自定义的数据类型,是一种引用数据类型。枚举经常用来被描述一些取值范围有限的数据。

枚举的基本定义和使用

**枚举的定义:**定义枚举类型,需要使用到关键字 enum 。枚举的名字是一个标识符,遵循大驼峰命名法。

// 枚举的定义以及赋值
// Gender.class
package com.laity.basicSyntax.day5.dEnum;

/**
 * @author : Laity
 * @Project: JavaLaity
 * @Package com.laity.basicSyntax.day5.dEnum
 * @date Date : 2021年11月30日 23:01
 * @Description: 性别枚举
 */
public enum Gender {
    MALE,FEMALE
}

enum MALE {
    JAN,FEB,MAR,APR,MAY,JUN,AUG,SEP,OCT,NOV,DEC
}

enum Weekday{
    MON, TUS, WED, THU, FRI, SAT, SUN
}
// Program.class
package com.laity.basicSyntax.day5.dEnum;

/**
 * @author : Laity
 * @Project: JavaLaity
 * @Package com.laity.basicSyntax.day5.dEnum
 * @date Date : 2021年11月30日 23:05
 * @Description:
 *      怎样定义一个枚举变量,怎样对枚举变量进行赋值
 */
public class Program {
    public static void main(String[] args) {
        // 1.定义一个枚举类型的变量
        Gender gender;
        // 2.给一个枚举类型的变量进行赋值
        gender = Gender.MALE;

        Weekday day = Weekday.WED;

    }
}

枚举中的成员定义

枚举的分析: 枚举,其实可以认为是object类的一个最终子类。不能被其他的类、枚举继承。

public class Program {
    public static void main(String[] args) {
        // 1.定义一个枚举类型的变量
        Gender gender;
        // 2.给一个枚举类型的变量进行赋值
        gender = Gender.MALE;

        Weekday day = Weekday.WED;

        // 验证枚举是Object的最终的子类
        // day.toString()
        Object obj = day;   // 转型
    }
}

枚举中属性的定义:(非静态我用对象,静态的我用枚举类型进行访问)

// Gender.java
public enum Gender {
    // 枚举里面的值通常都是大写的
    MALE,FEMALE;
    // 定义一个非静态属性
    public String description;
    // 定义了一个静态的属性
    public static int count;
}

// Test.java
package com.laity.basicSyntax.day5.dEnum;

/**
 * @author : Laity
 * @Project: JavaLaity
 * @Package com.laity.basicSyntax.day5.dEnum
 * @date Date : 2021年11月30日 23:21
 * @Description:
 */
public class Test {
    public static void main(String[] args) {

    }

    /**
     * 属性测试:测试枚举中的属性使用
     */
    private static void propertyTest(){
        // 1.声明一个枚举对象,并赋值
        Gender gender = Gender.MALE;
        // 2.使用枚举对象去访问非静态属性
        gender.description = "description";
        System.out.println(gender.description);
        // 3.访问静态 用类型去访问
        Gender.count = 10;
    }
}

枚举中的构造方法

// gender.java
public enum Gender {
    // 枚举里面的值通常都是大写的
    MALE("男"),FEMALE("女"),UNKNOWN("未知");
    // 这些枚举值其实是若干静态常量
    // 相当于 public static final Gender MALE = new Gender("男");
    // 相当于 public static final Gender FEMALE = new Gender("女");
    // 相当于 public static final Gender UNKNOWN = new Gender("未知");

    // 定义一个非静态属性
    public String description;
    // 定义了一个静态的属性
    public static int count;

    // 构造方法的测试

    /**
     * 枚举中的构造方法,默认的访问权限 都是私有的(private),并且,不能使用其他的权限修饰
     */
    // Gender(){  // 无参构造
    //     System.out.println("一个枚举对象被实例化了");
    // }
    Gender(String description){ // 有参构造
        this.description = description;
        System.out.println("一个有参的构造方法被执行了");
    }

    Gender() {

    }
}
// Test.java
public class Test {
    public static void main(String[] args) {
        // Gender.count = 1;
        constructorTest();
    }

    /**
     * 属性测试:测试枚举中的属性使用
     */
    private static void propertyTest(){
        // 1.声明一个枚举对象,并赋值
        Gender gender = Gender.MALE;
        // 2.使用枚举对象去访问非静态属性
        gender.description = "description";
        System.out.println(gender.description);
        // 3.访问静态 用类型去访问
        Gender.count = 10;
    }

    /**
     * 构造方法的测试
     */
    public static void constructorTest(){
        // 1.实例化一个枚举对象
        Gender gender = Gender.MALE;
        // 2.输出枚举对象的description属性值
        System.out.println(gender.description);
    }
}

枚举中的方法定义

// 枚举中的方法定义
    public void show() {}
    public String getDescription(){
        return description;
    }

    /**
     * 枚举方法测试
     */
    public static void methodTest(){
        // 1.获取一个枚举对象
        Gender gender = Gender.MALE;
        // 2.测试方法
        String description = gender.getDescription();
        System.out.println(description);
    }

枚举中的方法重写

 /**
     * 方法重写的测试(Object、Interface接口)
     */
    public static void overriderTest(){
        // 1.获取一个枚举对象
        Gender gender = Gender.FEMALE;
        // 2.直接输出gender
        System.out.println(gender);
    }


    @Override
    public String toString(){
        return description;
    }
// 未重写toString的结果输出
一个有参的构造方法被执行了
一个有参的构造方法被执行了
一个有参的构造方法被执行了
FEMALE
// 重写后的结果输出
一个有参的构造方法被执行了
一个有参的构造方法被执行了
一个有参的构造方法被执行了
女

枚举值

其实,所谓枚举中的值、元素,其实就是一个静态的、当前类的对象。

// 格式
public enum Gender {
	UNKNOWN{
    	@Override
    	public String toString(){
        	return ”未知“;
    	}
	}
}

异常

**概念:**是对程序在运行过程中的种种不正常的情况的描述。

异常的本身是一个类

Exception

Java中的异常的继承体系

  • 根类:Throwable
    • 错误:Error
    • 异常:Exception
      • 运行时异常:RuntiemException

面试

大厂的话还是看基础多一些,非科班本学了四个月 + 背了一个多月的八股拿到了两个大厂offer,
面试很少问到Springboot等框架,
问也问得很少,重点还是java基础集合、多线程、jvm、计网、os、mysql、mq、netty等;
小厂的话就问框架多一些。

快捷键

.soutv  正则表达式  字符串
main/psvm、sout、...
Ctrl+D 复制当前行数据到下一行;
Ctrl+Y 删除所在行,但是建议用Ctrl+X;
Ctrl+ALT+L 格式化代码;
ALT+SHIFT+上尖号,ALT+SHIFT+下尖号;  上下移动当前代码
Ctrl+/ , Ctrl+Shift+/ 对代码进行注释

ALT+回车 错误提示
fori  for循环的快捷键
Crtl+ALT+T  选中代码,按住该快捷键,第五个就是将该代码快速放到一个循环中

鼠标右键 | Generate | getter and setter  -> 按住shift点击所需要的成员类即可 快捷键是ALT+FN+INSERT  getter/setter方法
鼠标右键 | Generate | Constructor  -> 按住shift点击所需要的成员类即可  快捷键是ALT+FN+INSERT  有参构造器 什么都不选的情况是生成无参构造器

Ctrl+ALT+V 与 .var 作用一致