牛客网刷题笔记 2

笔记

  1. Math.round() 取最近似的值,如果一样大,取偏大的值;
    Math.round(11.5) 等于12. Math.round(-11.5) 等于11;

  2. floor : 意为地板,指向下取整,返回不大于它的最大整数

  3. ceil : 意为天花板,指向上取整,返回不小于它的最小整数

  4. java命令用来执行java程序;javac是编译;

  5. 父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
    先将父类和子类加载进来,然后再按照顺序来;非静态代码块要早于构造函数;我们可以想成静态代码块负责初始化类的相关;而非静态要初始化对象的相关内容;所以应该早一点;

  6. jvm在编译时将程序转化为字节码,然后运行的时候转化为机器码;

  7. hashmap利用链地址法解决地址冲突,因为人家本来就是数组+链表的结构;

  8. 关于三目运算符
    这里写图片描述
    这里写图片描述

  9. Object 的方法:
    这里写图片描述
    注意的,sleep是线程的,因为睡不睡是线程的问题,但是加不加锁这是对象说了算的;也就是锁住的不是代码,而是对象;

  10. 关于接口和抽象类

  • 都可以有自己的属性,但是接口必须主动初始化掉;比如 int a ;这样就不行,必须进行初始化;
  • 抽象类可以有自己的构造方法,接口不行;
  • 抽象类不一定有抽象方法,但是有抽象方法必须定义为抽象类;
  • 接口中除了default和static方法,其他都不能有方法体;
  • 接口和抽象类都可以被声明,但是不能实例化;就是可以声明引用,但是不能具体实例;
  • 抽象类和接口的修饰词只能为public和啥也不写,final是不可以修饰的;
  • 抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
  • 在接口中只有常量,因为定义的变量,在编译的时候都会默认加上
    public static final
  • 在接口中的方法,永远都被public来修饰。
  • 接口中没有构造方法,也不能实例化接口的对象。
  • 接口可以实现多继承
  • 接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法,则实现类定义为抽象类。
  1. stream结尾的都是字节流

  2. java.exe能执行的java程序比如携带main函数;也就是需要入口;

  3. Unicode 占据两个字符空间;

  4. wait必须被try-catch包围;加锁的对象和wait的对象必须是一样的;缺少try-catch,抛出InterruptedException;

  5. try-catch,先捕捉小异常,然后是大异常;抛出异常后,一直向上找寻是否有可以处理异常的,否则提示错误;

  6. 两种方式可用来实现线程间通知和唤醒
    Object.wait/notify/notifyAll;
    Condition.await/signal/signalAll

  7. 包装类不遇到计算不会拆箱的,所以==,equals就无法比较不同的类型了;

  8. goto居然是java的关键字,几乎从来没用过;

  9. final修饰的方法是可以重载的;