关键字概述及特点 什么是静态? 静态有什么特点?
如果成员使用了关键字,那么该成员不再属于对象,而是属于类,并且将被该类的所有对象共享。 记忆里只有一个。
如果一个成员不使用关键字,那么这个成员就属于该对象,每个对象都会有自己的成员。
总结:
1. 静态指的就是Java中的关键字static, static是一个修饰符
问题:static可以修饰什么?
成员: ● 成员变量
● 成员方法
2. ● 这个静态成员被该类所有的[对象]所[共享]
● 优先于对象存在,随着类的加载而加载
● 多了一种调用方式,可以根据 类名. 进行调用
看一段代码:
class Student {
//因为同一个学校的学生类,school属性是相同的,所以用静态修饰,省内存
String name;
int age ;
static String school;
}
方法区分为静态区和非静态区。 静态成员变量在字节码加载后就具有初始化值,非静态成员变量只有在对象创建时才初始化。
对象创建后,非静态成员变量被放入堆中并初始化。 静态成员变量保留在方法区中。
思路:什么时候使用静态成员变量?
静态成员变量可以通过创建对象来调用,也可以通过类名直接访问(推荐)
类名.变量名
公共(共享)属性使用静态,特性使用非静态
例如饮水机:静态(非共享) 水杯:非静态(非共享)
什么时候应该使用静态修改的成员方法?
如果修改了成员方法,也意味着该方法不再属于对象,而是属于类。
静态方法可以通过对象或类名调用(推荐)。 如果调用同一个类的静态方法,可以省略类名。
工具类:定义一个类,类中有一些提供服务的方法。 为了使这些方法的调用更加方便,一般将这些方法定义为静态的。 如果一个类中的所有方法都是静态的,通常会多执行一步。 操作,即私有构造函数的目的是防止其他类访问该构造函数来创建对象。 由于我已经允许您通过类名调用它,因此您不应该创建该对象。
工具类 该类提供一些服务方法。 这个类如果单独存在就没有任何价值。 它完全为其他类提供服务。
类名.
例如: ArrayUtils.getMax(arr);
Arrays.toString(arr);
静态方法的方法访问特点及注意事项:
1.可以调用静态成员变量和成员方法
2.非静态成员变量和成员方法不能被调用
3. 静态成员只能在静态方法中调用
总结:静态只能访问静态
非静态方法(一切都可以访问)
1. 可以调用静态成员,也可以调用非静态成员。
重点:中没有super和this关键字
因为this和super只有在对象创建之后才存在,所以会随着类的加载而加载。 当使用时,有可能对象还没有被创建。
静态代码块
典型用途:用于一次性给静态成员变量赋值。
格式:
static {
方法体
}
第一次使用该类时,该代码块只执行一次,第二次使用时不再执行。 静态内容始终优先于非静态内容,因此静态代码块在构造函数之前执行。