java部分知识点
1.&和&&的区别
&:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true。
&&:短路与,如果第一个表达式为false时,第二个表达式就不会计算了。
2.重载和重写的区别
重载(Overload):函数名相同,参数不同。可以改变返回值类型,参数的个数和类型。
重写(Override):和父类的的方法名称、参数完全相同。
3.sleep()和wait()有什么区别
sleep是线程被调用时,占着cpu休眠,其他线程不能占用cpu,os认为该线程正在工作,
不会让出系统资源,wait是进入等待池等待,让出系统资源,其他线程可以占用cpu。
sleep()和wait()方法的区别可从两个角度阐述:
1.cpu的抢占权;2.锁旗标是否释放
两者都会释放cpu的抢占权;
wait()方法执行完即可释放锁旗标,进入线程的等待队列;
sleep()执行完,不会释放,进入等待队列;
4.synchronized与java.util.concurrent.locks.Lock的异同
主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized
会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
5.作用域public、private、protected 以及不写时的区别
private修饰的成员变量和函数只能在类本身和内部类中被访问。
protected 修饰的成员变量和函数能被类本身、子类及同一个包中的类访问。
public修饰的成员变量和函数可以被类、子类、同一个包中的类以及任意其他类访问。
访问权限 public>protected>private
6.抽象类和接口区别
抽象类:用abstract修饰,抽象类不能创建实例对象。抽象方法必须在子类中实现,
不能有抽象构造方法或者抽象静态方法。
接口:抽象类的一种特例,接口中的方法必须是抽象的。
两者的区别:
抽象类可以有构造方法,接口没有构造方法
抽象类可以有普通成员变量,接口没有普通成员变量。
抽象类可以有非抽象的普通方法,接口中的方法必须是抽象的。
抽象类中的抽象方法访问类型可以是public,protected,接口中抽象方法必须是public类型的。
抽象类可以包含静态方法,接口中不能包含静态方法。
一个类可以实现多个接口,但是只能继承一个抽象类。
接口中基本数据类型的数据成员,都默认为static和final,抽象类则不是(friendly)。