Mathjava
public static double random() { return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble(); } // 取值范围[0,1)
若要取值[1,10]: (int)(Math.random() * 10 )+ 1面试
使用{}括起来的代码,可分为 局部代码块,构造代码块,静态代码块,同步代码块dom
局部代码块: 在方法中;限定变量生命周期,及早释放,提升内存利用率spa
构造代码块: 在类中方法外;多个构造方法中相同的代码存放到一块儿,每次调用构造都执行,而且在构造方法前执行对象
静态代码块: 在类中方法外,加static修饰;给类进行初始化,在加载的时候就执行,而且只执行一次blog
面试题? 静态代码块 构造代码块 构造方法的执行顺序?继承
静态代码块>构造代码块>构造方法接口
继承是类与类之间的关系,让子类自动具有定义在父类中的属性和行为,从而达到代码复用的目的 生命周期
格式: 经过extends关键字能够实现类与类的继承,class 子类名 extends 父类名内存
extends: 单继承有且只有一个父类; 不写extends,也会有一个默认的父类(Object, java中的根类)
这个类被称为父类,基类或者超类;这多个类能够称为子类或者派生类
类与类的关系: is a 继承; has a 组合
继承的内存实现: 首先调用父类的构造方法,而后再调用子类的构造方法,构成一个完整的对象
特色: 1 来自父类的属性和行为,都会无条件的继承,可是,可否访问到,是看父类中定义的修饰符
2 父类的构造方法不会被子类继承
缘由: 2.1 语法上,构造方法要求与类名保持一致,因此一个子类不可能有一个构造方法的名字是父类的类名
2.2 逻辑上,构造方法是用来产生对象的,子类不可能拥有产生父类对象的方法
3 只能单继承,可是支持多层继承
继承的优势: 结构清晰;缺点: 子类的丰富度不够,灵活性不够,因此Java中能够使用接口类,进行弥补
子类拥有父类相同的行为,被称为方法覆盖,方法重写
特色: 1 方法名不能变 2 参数列表相同 3 返回类型相同 4 访问修饰符不能比父类的低
5 重写后的方法不能抛出比重写前更多的异常