static 使用

  静态什么时候用

  1,成员变量是否被static修饰
      该成员变量的值是否每一个对象相同,是,用static修饰
      不是,不用static修饰,让这些存储到每个对象中。
  2,成员函数是否需要被静态修饰呢?
      当函数中访问到了对象的特有属性是,该函数不能被静态修饰
      如果该函数中没有访问到对象的特有属性,就可以被静态修饰。
 
     简单说:如果函数中访问了成员变量(实例变量),不能静态,否则就可以静态化。
     直接被类名调用即可
 
 如果一个类中定义的方法都是静态的。
 说明这个类是不需要对象实例的

一、static 变量

静态变量是对所有对象(对象实例)共享,一个对象对其值的改动,直接就会造成另一个对象取值的不同。

什么时候使用static变量?

作为共享变量使用,通常搭配final关键字一起使用,比如我们常用的字典类数据;

private static final String GENERAL_MAN = "man";

减少对象的创建,比如在类开头的部分,定义Logger方法,用于异常日志采集

private static Logger LOGGER = LogFactory.getLoggger(MyClass.class);

始终返回同一变量,比如我们的单例模式。

二. static 方法

静态方法只能访问静态成员(静态变量、静态方法),而非静态方法既可访问静态方法也可访问非静态方法;因为静态成员优于对象而存在,因此无法调用和对象相关的关键字,如this,super,无法通过关键字访问对象资源。

public class Person {
	private String name;    
	private static int eyeNum;    
	public static int legNum = 2;    
	public String getName() {
    	return name;    
    }    
    public void setName(String name) {
    	this.name = name;    
    }    
    public static int getEyeNum() {
    	System.out.println(name);//编译出错,name不可用
    	return eyeNum;
    }    
    public static void setEyeNum(int eyeNum) {
    	Person.eyeNum = eyeNum;        
    	this.name = "";//编译出错,this不可用
    }
}

什么时候使用static方法?

static方法一般用于与当前对象无法的工厂方法、工具方法。如Math.sqrt(),Arrays.sort(),StringUtils.isEmpty()等。

三. static 代码块

static代码块相对于static变量和static方法来说使用不是那么广泛,但也算是比较常见的用法了,static代码块在加载一个类的时候最先执行,且只执行一次。

public static Map<String, String> timeTypes;
static {
	timeTypes = new HashMap<>();
    timeTypes.put("year", "年");
    timeTypes.put("quarter", "季");
    timeTypes.put("month", "月");
    timeTypes.put("day", "日");
    System.out.println("初始化1");
}
public static void main(String[] args) {
	System.out.println("初始化2");
}

执行结果是:

初始化1;

初始化2;

什么时候使用static代码块?

一般在进行初始化操作时,比如读取配置文件信息,获取当前服务器参数等

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值