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(){

}
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/ItChenjl/p/17467848.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程