Java笔记
[[toc]]
Flag
多行字符串
Multiline String 多行字符串
Template String 模板字符串
Text Blocks 文本块
Java 13 Text Blocks 第一次预览版,Java 14 Text Blocks 第二次预览版,Java 15 Text Blocks 正式版
函数重载
方法名相同,方法参数的个数和类型不同,通过个数和类型的不同来区分不同的函数;
方法的重载跟返回值类型和修饰符无关,Java的重载是发生在本类中的,重载的条件是在本类中有多个方法名相同;
参数列表不同(参数个数不同、参数类型不同)跟返回值无关;
访问控制修饰符
修饰符
当前类
同一包内
子孙类(同一包)
子孙类(不同包)
其他包
public(interface default)
Y
Y
Y
Y
Y
protected
Y
Y
Y
Y/N
N
default
Y
Y
Y
N
N
private
Y
N
N
N
N
protected需要从以下两个点来分析说明
子类与基类在同一包中:被声明为protected的变量、方法和构造器能被同一个包中的任何其他类访问;
子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。
classpath意义
src不是classpath,WEB-INF/classes和lib才是classpath,WEB-INF/是资源目录, 客户端不能直接访问
WEB-INF/classes目录存放src目录java文件编译之后的class文件、xml、properties等资源配置文件,这是一个定位资源的入口
lib和classes同属classpath,两者的访问优先级为: lib > classes
classpath:只会到你的class路径中查找文件
classpath:和classpath:/是等价的,都是相对于类的根路径。资源文件库标准的在文件系统中,也可以在JAR或WAR的类包中。
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找
注意:用classpath*需要遍历所有的classpath,所以加载速度是很慢,尽量避免使用
项目模块依赖深度:A –> B –> C,在B中没有配置文件的情况下,A中的classpath*加载到B的配置文件,
C加载自己配置文件要用classpath*,否则A加载配置文件无法加载到C的配置文件
**表示在任意目录下,也就是说在WEB-INF/classes/下任意层的目录
日期时间
可变性 : 像日期和时间这样的类应该是不可变的,返回一个值,原来的对象不变
偏移性 : Date中的年份是从1900开始的,而月份是从0开始的
日期表示需要减new Date(2020-1900,9-1,8) 这样才可以表示2020年9月8日
格式化: 格式化日期只对Date有用,Calendar则不