本文已参与「新人创作礼」活动,一起开启掘金创作之路。
枚举
枚举的概念
枚举也是一种自定义的数据类型,是一种引用数据类型。枚举经常用来被描述一些取值范围有限的数据。
枚举的基本定义和使用
**枚举的定义:**定义枚举类型,需要使用到关键字 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 作用一致