当前位置:   article > 正文

java static修饰符的作用_illegal modifier for the class tokenisermapper; on

illegal modifier for the class tokenisermapper; only public, abstract & fina

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

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

class People{
	static String name; // 修饰成员变量
	public People(String n){
	// 构造方法不能被static修饰
		name = n;
		}
	public static void action(){
		// 修饰普通方法
		System.out.print("可以修饰普通方法");
	}
	static class Inner{
		// 内部类
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

不可以修饰的范围:
修饰构造方法, 外部类时会报错:
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); // 李四
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

张三
李四
李四
  • 1
  • 2
  • 3

在这里插入图片描述

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/201845
推荐阅读
相关标签
  

闽ICP备14008679号