java static修饰符的作用

static的概念
是修饰符, 表示静态的, 可以用来修饰类和成员变量已经方法;

可修饰的范围
可以修饰的范围有成员变量, 普通方法, 内部类;

class People{
	static String name; // 修饰成员变量
	public People(String n){
	// 构造方法不能被static修饰
		name = n;
		}
	public static void action(){
		// 修饰普通方法
		System.out.print("可以修饰普通方法");
	}
	static class Inner{
		// 内部类
	}
}

不可以修饰的范围:
修饰构造方法, 外部类时会报错:
Illegal modifier for the class Student; only public, abstract & final are permitted, 表示错误地使用修饰符来修饰, 只能通过 public, abstract , final are permitted修饰

特点
static修饰的成员(成员变量, 普通方法, 内部类)在类被加载的时候, 会加载到静态区。会被所有该类实例的对象共享, 所以在这里一般定义变量不建议使用static修饰成员变量(除非专门的使用场景, 下面有介绍)。
不建议使用static修饰成员变量的原因:
因为程序的执行流程的关系, 当需要用到一个类的时候(或者是创建对象的时候), 程序会去加载该类的字节码文件。这个时候,程序会先判断当前字节码文件是否有static修饰的成员, 如果有的话就会先将该static修饰的成员加载到静态区, 分配一个地址, 然后再加载字节码文件, 加载的字节码文件的时候会持有该静态成员的地址。

public class PeopleTest {
 /**
 * @author huaixiao
 *	测试类   static 
 */
	public static void main(String[] args) {
		People p1 = new People("张三");
		System.out.println(p1.name); //张三
		People p2 = new People("李四");
		System.out.println(p1.name); // 李四
		System.out.println(p2.name); // 李四
	}
}

得到的结果如下 , 说明static修饰的成员变量, 共享数据, 永远以最后修改的那一次为准

张三
李四
李四

在这里插入图片描述

使用场景
1. 需要被所有对象共享的一些数据的时候才使用, 例如 火车票数, 全国各地都可以抢, 但是数据是共享的
2. 不想被多次创建对象的时候, 因为创建对象会消耗资源
3. 单例模式
4. 还有就是与public static final 连用, 作为全局变量等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值