final关键字
权限(作用范围)public protected default private
修饰类
修饰的类是最终类,最终类不能被继承(最终类就是最后一个类,如果还能被继承,那么继承的子类是最终类,矛盾)
修饰方法
基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改。
重写被 final修饰的方法,编译时就会报错。
修饰变量
局部变量——基本类型
基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改。
局部变量——引用类型
引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能再更改。但是不影响对象内部的成员变量值的修改
思考,如下两种写法,哪种可以通过编译?
写法1:
final int c = 0;
for (int i = 0; i < 10; i++) {
c = i;
System.out.println(c);
}
写法2
for (int i = 0; i < 10; i++) {
final int c = i;
System.out.println(c);
};
根据 final 的定义,写法1报错!写法2,为什么通过编译呢?因为每次循环,都是一次新的变量c。
常用类/接口
java.lang包
Math 类API
abs()
返回绝对值
ceil()
返回大于等于参数最小的整数
floor()
返回小于等于参数最大的整数
round()
返回最接近参数的Long
sqrt()
求开平方根sqrt(4) 2
pow()
幂运算pow(2,3) 2的3次方 8
System 类API
exit(0)
JVM退出
currentTimeMillis()
返回以毫秒为单位的当前时间。
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将数组中指定的数据拷贝到另一个数组中。
java.util包
Date 类API
Date date = new Date()
当前系统时间
Date date = new Date(0)
1970年01月01日00时00分00秒(中国+8时)
date.getTime
对象日期转换成毫秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
把日期格式化指定的字符串
sdf.format(date)
时间变成指定格式的字符串
new SimpleDateFormat("yyyy年MM月dd日")
sdf.parse(str)
把String转换成Date对象
Tue Dec 11 00:00:00 CST 2018
Calendar 类
get(int field)
返回给定日历字段的值。字段,指的是年,月,日,等
set(int field, int value)
将给定的日历字段设置为给定值。
add(int field, int amount)
给定的日历字段添加或减去指定的时间量。
getTime()
返回表示此Calendar时间值的Date对象。