JAVA复习笔记01
学了一学期的java,临近期末,整理了一些java考试中需要掌握的点,记录在这里。
1、编译多个java文件,运行程序
(1)
javac 1.java 2.java java main
(2)
javac .\*.java java main
2、java中基本数据类型/占有bit大小
byte 8 short 16 int 32 long 64 float 32 double 64 char 16 boolean 不定
java unicode码储存char,故有2字节。
boolean的大小取决于上下文。(延伸阅读:)
3、java中遇到的double精度损失问题可以使用bigdecimal
4、final关键字
final关键字修饰类,该类不能被继承
final关键字修饰方法,该方法不能被重写
final关键字修饰成员变量,该变量不能被改变(必须被初始化)
5、访问权限
由小到大依次为:
private 同类中
friendly 同包中
protected 同包中,子类,子类的子类
public 全部
6、不等长二维数组
int[][] a=new int[3][]; a[0]=new int[4];
7、可变参数
public void test(string s,int ... a){}
可变参数必须放在最后,访问方式类似于数组:a[0],a[1]...
8、异常的继承关系
参考链接:
9、短路
test(0)&&test(1)&&test(2)
类似于上面的判断语句,java会顺序执行,在确定该语句的值后不再继续向后执行
10、继承关系中的构造顺序
按先后顺序依次是:
父类静态成员及static块:有对象实例化就执行,只执行一次 子类静态成员及static块:有对象实例化就执行,只执行一次 父类普通成员初始化\代码块执行 父类构造函数 子类普通成员初始化\代码块执行 子类构造函数
成员初始化的顺序取决于定义的位置前后。
11、单例模式
一种单例模式:
public class singleton { private static singleton uniqueinstance = new singleton(); private singleton() {} public static singleton getinstance() { return uniqueinstance; } public void foo() { system.out.println("aha!"); } }
12、仅仅方法返回值不同(参数相同)不能重载,会报错
13、方法覆盖
(1)子类的异常抛出不能比父类更宽泛(延伸阅读:)
(2)不能缩小父类方法的访问权限
(3)静态方法不能重写为非静态方法/反之也不行
14、多态
多态中,属性、静态方法会被隐藏,非静态方法会被覆盖。
被隐藏的方法和变量可以在子类中用super关键字使用(但要有权限)
例如:
parent partent=new child();
那么此时调用的是本被隐藏的父类的属性和静态方法。
15、类继承多个接口时,接口中出现同名函数,他们的返回值不同而参数相同,则会报错。出现同名变量不访问不会报错,如果试图访问则有错误。
值得一提的是,如果多继承的两个变量同名但被隐藏了,那么不会报错。