最近在复习一下Java的基础知识,总结一些容易忽略的细节。有不对的地方,欢迎大家回馈,共同进步~~
Java跨平台性:指的是Java语言的跨平台性,一次编译,多处可用。但JVM要根据平台安装对应的
Java中写数字时,默认的变量类型是int和double,注意丢失精度的问题
比如byte b=3;
b=b+2; //这里会编译出错 (因为2默认是int)
>>>为Java中的无符号右移,空出来的高位用0补
重载和覆写的区别:
重载是在一个类中,函数名相同,但参数个数或者参数类型不同
覆写是在子父类中,方法签名完全相同,实现不同
注:覆写的时候必须保证子类权限大于等于父类权限
类如果有public修饰,则文件名必须和类名一致
一个Java文件中不能出现2个以上的公有类或者公有接口(注意是公有)
本类构造函数间调用用this(),调用父类的构造函数用super(),且只能放在第一行
/**
*/为文档注释,可以用Javadoc.exe提取生成,且被提取的类必须用public修饰,只提取public和protected成员
接口与接口之间可以继承,且一个接口可以继承多个接口.
interface C extends A, B {}是可以的.
一个类可以实现多个接口:
class D implements A,B,C{}
但是一个类只能继承一个类,不能继承多个类
多态: (不能预先使用子类的特有方法)
成员函数编译看左边,运行看右边(因为有重写)
成员变量,无论编译和运行都参考左边
内部类可以直接访问外部类的成员,包括私有的(因为内部类持有一个外部类的引用)
匿名内部类必须是继承一个类或者实现一个接口
如果父类或者接口的方法中没有抛异常,则子类在覆盖方法时,也不可以抛异常。
如果子类中发生了异常,就必须用try处理。
泛型中的约束必须使用引用类型
泛型中<?> ?其实是占位符
map中put时,若键相同,则后来的值会覆盖原先的值
Collections集合框架Collection的工具类中有将集合变成线程安全的方法,如synchronizedList()
Arrays.asList 将数组变成list集合。注意不可使用集合的增删方法(因为数组的长度是固定的)
一个方法最多只有一个可变参数,且定义在末尾。(自动将元素封装成数组) 格式为...
关闭流之前会自动刷新一次缓冲数据到目的地
管道流在使用前需要将输入/输出进行绑定,否则会报异常