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)。
12-26 00:45