static

发布时间 2023-06-08 22:22:25作者: 微光07
static基本知识 header
类名.静态成员变量(推荐)
同一个类中静态成员变量的访问可以省略类名。

1.静态成员变量(有static修饰,属于类、加载一次,可以被共享访问),访问格式 类名.静态成员变量(推荐) 对象.静态成员变量(不推荐)。

2.实例成员变量(无static修饰,属于对象),访问格式: 对象.实例成员变量。 static修饰成员变量的内存原理 方法会运行在方法区。 创建的对象会放在栈内存中。 类中的成员变量(静态,实例),都在堆内存中。 先运行方法,之后实例对象,通过对象地址找到堆内存中的实例成员地址,静态成员可以直接通过类名在堆内存中找到,并进行操作。

二 ,两种成员变量各自在什么情况下定义? 静态成员变量:表示在线人数等需要被共享的信息。 实例成员变量:属于每个对象,且每个对象的该信息不同时(如:name,age,money...等) 实例方法/静态方法 如果该方法是以执行一个共用功能为目的,则可以申明成静态方法。

表示对象自己的行为的,且方法中需要访问实例成员的,则该方法必须申明成实例方法。 static注意事项 静态方法不能出现this关键字 静态方法只能访问静态成员,不能直接访问实例成员 实例方法可以访问实例成员,也可以访问静态成员 static工具类
调用 :类名.方法

内部都是一些静态方法,每个方法完成一个功能一次编写,处处可用,提高代码的重用性。 1.在工具类 先私有化构造器 private ItheimaUtil(){ 可使此方法不能进行创建对象 再建立一个方法,供其他项目使用

工具类不用创建对象,直接用类名.方法 即可。

static代码块 格式:static{}
代码块概述 启动程序时需要静态初始化,且只需要一次的。例如,斗地主开局之前需要分配好54张牌 代码块是类的5大成分之一(成员变量、构造器,方法,代码块,内部类),定义在类中方法外。 在Java类下,使用 {} 括起来的代码被称为代码块。 代码块分为: 静态代码块: 格式:static{} 初始化静态成员 比main方法先运行 特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发、只执行一次 使用场景:在类加载的时候做一些静态数据初始化的操作,以便后续使用。

构造代码块(了解,见的少): 特点:每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行 使用场景:初始化实例资源。

static单例模式 只对外提供一个静态变量存储对象,私有构造器。 1.饿汉单例模式 特点,在类中创建一个静态变量存储对象,当需要调用对象的时候,能跟快速的调出,节省时间。 public static SingleInstance raa = new SingleInstance();

private SingleInstance() {
}

} public static void main(String[] args) { SingleInstance r = SingleInstance.raa; SingleInstance r2 = SingleInstance.raa;

System.out.println( r == r2 );

2.懒汉单例模式

特点,再类中创建一个静态变量存储对象但是不生成对象,等到真正需要的时候通过调用方法来创建一个对象。这样可以节省内存。 3.两者区别,一是懒汉先不new ,在方法中new,二是懒汉创建静态变量时,使用private,避免调用时是空值。 2.懒汉单例模式 public class SingleInstance2 { //定义一个静态变量存储对象,但是不写new键对象 懒汉模式中,定义的对象要用private 因为有可能调用的时候还没有对象返回空值。 private static SingleInstance2 instance ; //定义一个方法来创建对象, public static SingleInstance2 getInstance(){ SingleInstance2 instance = new SingleInstance2(); //创建一个方法 if(instance == null){ // 这个对象为空时说明是第一次前来创建对象,则可以调取方法中的对象,之后的都不允许调用对象。 } return instance; } private SingleInstance2(){

}