1、静态
是一个关键字、也是一个修饰符。可以用于修饰成员变量和成员方法
也可以用来修饰类,不过只能修饰内部类
2、静态特点
静态随着类的加载而加载
优先于对象存在
可以被所有的对象所共享
可以直接使用类名调用
3、静态变量和成员变量的区别
所属区别:
静态变量:属于类
成员变量:属于对象
内存区域:
静态变量:在方法区中的静态区
成员变量:在堆内存中
生命周期:
静态变量:随着类的加载而加载,随着类的消失而消失
成员变量:随着对象的创建而创建,随着对象的消失而消失
调用区别:
静态变量:可以用类名调用,也可以用对象名去调用
成员变量:只能用对象名调用
4、静态的注意事项
静态的只能访问静态的
非静态的既可以访问静态的,也可以访问非静态的
静态方法中是没有this的
5、静态的优缺点和使用场景
静态优点:
调用比较方便
静态缺点:
静态的只能访问静态的
使用场景:
如果某个变量需要被所有的对象所共享的时候,就可以将这个变量定义成静态的
静态的成员方法一般存在于工具类中
6、Math 类:
static PI; 圆周率
static abs(double d); 获取一个数的绝对值
static ceil(double d); 向上取整
static floor(double d); 向下取整
static max(double d1,double d2); 获取两个数中的较大值
static min(double d1,double d2); 获取两个数中的较小值
static round(double d); 四舍五入
static pow(double d1,double d2); 获取第一个参数的第二个参数次幂
static random(); 生成一个随机数 大于等于0.0 小于1.0之间的随机数
7、数组工具类:
Arrays工具类中常用的方法:
static int binarySearch(int[] a, int key) :通过二分查找法来获取某个元素在数组中的出现位置
static void sort(int[] a) : 用于排序 升序排序
static String toString(int[] a) :用于打印数组
static boolean equals(int[] a, int[] a2) : 比较两个数组是否相同
8、自定义工具类
私有构造方法
提供静态的方法
9、代码块
a. 代码块分类
局部代码块 构造代码块 静态代码块 同步代码块(多线程)
b. 代码块的作用和执行顺序
局部代码块:定义在方法中,作用是限定了变量的声明周期。提早了释放变
量,可以提高内存的使用效率
构造代码块:定义在类中,作用是抽取构造方法中的共性功能。优先于构造方
法执行,每次创建对象都会执行一次
静态代码块:定义在类中,前面要加static 作用是用于注册驱动。随着类的加
载而执行,而且只执行一次