static
静态变量、静态方法,静态资源可以被共享
静态代码块:初始化操作
静态内部类:修饰内部类
导入静态资源,无需使用类名,直接使用资源名,例:
import static java.lang.Math.max;
// System.out.println(Math.max(20, 10));
System.out.println(max(20, 10));
3*0.1==0.3返回值
false
,因为浮点数精度问题,例:
double v = 3 * 0.1;
// v = 0.30000000000000004
System.out.println("v = " + v);
// false
System.out.println(3 * 0.1 == 0.3);
a=a+b和a+=b
a=a+b
,不能进行类型转换
a+=b
:会自动类型转换为左边a的数据类型
try catch finally
问题:try
里有return
,finally
也有return
,实际运行结果是finally
返回值把try
的覆盖
原因:try
的返回值会暂时的存放到变量当中,如果finally
也有返回值,那么就会覆盖,如果finally
没有返回值,有输出语句,那么也会先执行输出语句,然后再执行try
的return
退出,保证finally
一定执行
Exception和Error
exception
分为被检查异常(CheckedException
)和运行时异常(RuntimeException
)
-
运行时异常:糟糕的编程习惯引起的,即使没有
throws
抛出、try-catch
捕获,编译时也不会报错,只有运行时报错,例ArithmeticException
算术异常、IndexOutOfBoundsException
数组越界、ClassCastException
类型转换异常、NullPointerException
空指针异常 -
被检查异常:如果没有
throws
抛出、try-catch
捕获,编译时会报错,例:读取文件不存在的FileNotFoundException
-
错误:例资源不足时,会发生
OutOfMemoryError