多态
多态是指程序中定义的引用变量所指的具体类型和方法调用在编译时不确定,而是在运行时才确定,即引用变量到底指向哪个类的实例对象,发出的方法调用哪个类的方法要到运行时才确定。java通过接口或继承来实现,父类或接口的引用变量指向子类或实现类的实例对象,调用方法在运行期间动态绑定。
抽象类和接口的区别
抽象类不能实例化对象,包含abstract方法。
(1)抽象类有构造函数,接口没有
(2)接口的成员变量默认是public static final ,而抽象类可以有普通成员变量
(3)接口的方法默认是public abstract,而抽象类可以有非abstract方法
(4)一个类只能继承一个抽象类,但是可以实现多个接口
内部类
内部类可以定义在外部类的方法里面,或者外面;内部类可以访问外部类的成员变量;内部类不能定义静态成员。
内部类可以访问包含类的成员,除了静态内部类只能方法静态成员。匿名内部类可以继承其他类或者实现接口。
String
(1)String类不是基本类型,且是不可变类,不能继承也不能被修改。
(2)StringBuffer动态构造字符串,没有实现equals和hashcode方法。StringBuilder不是线程安全,性能高于StringBuffer
(3)String s = "a"+"b"+"c"+"d";只创建了一个对象,因为字符串常量编译时会优化。
try-catch-finally语句块的finally是在return前还是后执行
按顺序执行,return后是把结构放入函数栈,执行完finally再返回。
final,finally,finalize
final修饰变量表示不可变,修饰方法表示方法不能被重写;修饰类表示类不能被继承。
finally是异常捕获try-catch-finally的一部分,表示总是执行。
finalize是Object类中的方法,在垃圾回收时调用的方法。
Java异常
系统异常:运行时异常RuntimeException的子类。数组越界ArrayIndexOutOfBoundsException、空指针NullPointException,ClassCastException.无强制要求处理
普通异常:必须try-catch捕获处理
ArrayList和Vector区别
(1)Vector线程安全,ArrayList不是线程安全
(2)元素超过容量时,Vector *2, ArrayList *1.5
HashMap和HashTable区别
(1)HashMap允许null为键值,而HashTable不允许
(2)HashTable线程安全,而HashMap不是线程安全
List和Map区别
List单列数据的集合,有顺序,允许重复;Map是Key-Value集合,无顺序,Key不允许重复,Value允许
List,Set继承自Collection而Map不是
Set是无序的,不重复的集合,用equals方法区别重复。
ArrayList和LinkedList区别
ArrayList是数组实现,插入需要移动性能要更慢,允许按序号索引元素;LinkedList是双端链表,插入快,查找(索引)元素慢。
常用的集合类
List->ArrayList/LinkedList
Set->HashSet/TreeSet
Map->HashMap/TreeMap
常用的类,包,接口
常见的包:java.lang; java.io; java.util
常见的接口:List,Collection,Map
java IO
字节流InputStream,OutputStream
字符流InputStreamReader,OutputStreamWriter
“中国”字符转换为字节,需要注意编码转换,字符串要转换为字节数组。
java序列化
java对象变为字节流形式传输。通过对象实现Serializable接口。