Java
1. 运算符先后次序:+- &和 ^与 |或
2. Instanceof 判断是否为对象,是返回true,不是返回false
3. Static,final不能再次被赋值
4. Public 只能修饰类,方法,成员变量,不能修饰局部变量
5. 一个类中包含抽象方法,该类必须声明为抽象的abstract
6. 子类构造过程:调用父类初始化显氏语句(没有方法名直接在大括号里面实现)和构造函数,如果父类构造函数中有父类方法,且子类没有重写或父类方法修饰符不为private,则调用父类方法.不然调用子类重写的方法。
7. 面向对象特征:抽象,继承,封装,多态
8. 使用oop设计时,1)开闭原则2)依赖倒转原则3)里氏代换原则4)合成/聚合复用原则5)迪米特原则
6)接口隔离原则
9.方法重载:方法名必须一样,其他可以相同或者不同
10.子类继承父类,子类方法不能抛出比父类更多的异常,RuntimeException除外,因为一般都会抛出这个异常,或者缩小访问访问,比如:public->private
11.Throwable是所有错误的超类
12.断言:检查程序的安全性
13.垃圾回收机制:1)只有当对象可以访问适用于垃圾回收对象时,对象同样适用于垃圾回收。2)垃圾回收机制回收垃圾时间不受人为因素影响3)当对象最后一个引用被删除时,该对象被删除4)回收机制制作为一个低优先级的线程在后台运行5)当对象没有任何一个引用对象指向它时,将会被回收。
14.static如果不赋值的话,默认为0,且无法改变
15.final变量必须实例化。{实例化语句} 类初始化的时候先执行静态初始化代码,再执行初始化语句。
16.进程和线程的区别:主要区别是它们是不同的操作系统资源管理方式。
进程有单独的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。所以多进程的程序比多线程的程序健壮,但进程切换时,耗费资源较大,效率要差点。
但对于一些要求同时进行并且共享某些变量的并发操作,只能用线程。
17.线程中没有参数的run是自动调用的,有参数的必须显式调用
18.线程run方法是执行方法,不会创建新的线程。只有调用start方法才会启动,这样才能创建新的调用桟。
19.线程设置优先等级:xx.setPriority();线程同步:synchronized(){}
20.run执行后,线程就会结束
21.每个对象都有notify()用来唤醒线程
22.concat字符串连接
23.StringBuffer.setLength()设置长度
24.==两边的类型必须相同
25.迭代器 Map类都要变成最老的迭代Collection后,才能转换成新的迭代器
Map map;
Collection c=map.values();
Iterator it=c.iterattor();
While(it.hasNext()){}
26.List可以直接输出 list.next()移到下一个元素,list.previous()移到上一个元素,list.remove()删除特定的元素
27.Collection定义了contains(Objectc),addAll(Collection col),toArray();
28.List.suList(x,x)返回的是子列表试图,如果修改这个子列表,会影响原列表。
29.Map.Entry//减少了map.get(key)获取值
Map map=new HashMap();
map.put("hello", "hello");
Set set=map.entrySet();
Iterator ite=set.iterator();
while(ite.hasNext()){
Map.Entry entry=(Entry) ite.next();
String a=(String) entry.getKey();
String b=(String) entry.getValue();
System.out.println(a+" "+b);
}
30.获取父文件的路径:(new File(“”)).getParent();
31.new FileOutputStream(“”)清除以前的记录,重新编写。
NewFileOutputStream(“”,true);不清除以前记录
32.Field应用反射,可以轻松地获得类变量的所有信息
Private,protected的话,要设置field.setAccessible(true)//设置此变量的可访问性为true