1.包相关
每一个类文件最前面的可执行代码(不包括注释,注释不会执行)必须是包文件代码,目的是帮助计算机找到此文件的位置
导包要用到import关键字,像之前使用Random和Scanner对象的时候idea会自动帮助我们创建
import java.util.Random;
import java.util.Scanner;
包的本质就是一个个文件夹,帮助我们对类文件分类管理
2.权限修饰符
有四种,权限从大到小分别是public protected 缺省(默认,就是什么都不写)private
其中,private只能在同一个类中被访问,缺省在同一个包中可以被访问,protected在同一个包中也可以被访问,但是在另外一个包中的子类中也可以访问,但是原理是由于子类可以继承父类的方法,所以并不是调用了父类的方法。public则是任何包中都可以访问
3.final关键字
被final修饰的类不能被继承,但是可以继承其他类
被final修饰的方法不能被重写
被final修饰的变量里面的值不能改变(注意,如果变量里面存储的是除String以外的引用数据类型,实际上存储的是它的地址,而地址里面的属性值还是可以改变的)
4.常量
值不能改变的量也就是final修饰的基本数据类型以及String类型的变量称为常量
命名规范:全部大写,如果有多个单词则用下划线分开
作用:管理信息,方便程序的可读性
宏替换:在编译的时候就可以确定常量的值的话,在编译的时候就可以将程序中用到这个常量的变量名变成常量值,节省了内存空间 。
5.枚举
枚举是一种特殊的类,定义的格式是 public enum 枚举类名 {...}
里面第一行必须是枚举项
所有的枚举类都是Enum的子类
枚举类有构造器,但是被private修饰私有了
通过枚举类名.枚举项名称来访问指定的枚举项
每一个枚举项其实就是该枚举类的一个对象
属于多例模式
作用:枚举和常量一样都可以用于管理信息,但是通过枚举管理信息不仅可读性好,而且对传入的参数有了约束(必须是枚举类的一个项,即枚举类名.枚举项)代码示例如下
public enum Holiday {
GUO_QING,NEW_YEAR,LAO_DONG;
}
public class Demo02 {
/*static String CHUN_JIE = "春节节";
//在类中方法外无法对成员变量进行重新赋值
//CHUN_JIE ="你好";
static final String GUO_QING = "国庆节";
static final String LAO_DONG = "劳动节";*/
public static void main(String[] args) {
//CHUN_JIE ="你好";
/**
* 作用:用作信息标志和分类
*
* 原因:
* 常量虽然也可以用作信息标志和分类,实现可读性,但是入参值不受约束,代码相对不够严谨
* 枚举代码可读性好,入参约束严谨,代码优雅,是最好的信息分类技术!建议使用
*
* 需求:使用枚举优化sendMsg方法,使入参值(实参)可被约束
*/
/*sendMsg("国庆节");
sendMsg("春节");
System.out.println("------------");
sendMsg("重阳节");*/
//无法判断用户输入的是什么值,可能不属于其中之一
/*sendMsg("你好");
sendMsg(GUO_QING);*/
System.out.println(Holiday.GUO_QING);
sendMsg(Holiday.NEW_YEAR);
}
/**
* 方法实现发短信功能
* 可根据参数的内容,决定发什么短信内容
*/
public static void sendMsg(Holiday holiday) {
switch (holiday) {
case NEW_YEAR:
System.out.println("过年好");
break;
case LAO_DONG:
System.out.println("劳动节好");
break;
case GUO_QING:
System.out.println("国庆节好");
break;
}
}
}