Java static、 final修饰符

1、static

package ClassN;

final class Static1 {
//静态变量,静态方法,静态代码块	
	                   //static 不能拿来修饰类
	static String num;//类变量(静态变量),类加载过程中分配一次内存,类名.变量名访问/对象.变量名访问
	private String name;//实例变量,创建一个实例就分配一次内存,只能对象.变量名访问
	
	
	static {//静态代码块,初始化静变量、静态方法。整个块在类加载时只被执行一次,单独分配一块内存进行存储,且是先于其他非static代码先执行。
		Static1.num="100";
		Static1 s11=new Static1();
		s11.name="BOBO3";
		System.out.println(s11.getName());
	}
	

	public Static1() {
	}

	public static void main(String[] args) {	
		Static1.num="....";//访问:类.类变量名
		Static1 s1=new Static1();
		s1.name="BOBO1";
		s1.num="hahahah";//对象.变量名访问
		//System.out.println(num);
		System.out.println(s1.name);
		Static1 s2=new Static1();
		s2.name="bobo2";
		s2.num="123";
		//System.out.println(num);
		System.out.println(s2.name);
		testStatic1();
		s2.setName("hahah");
		
	}

	 static void testStatic1() {//静态方法、类方法
		 
		//System.out.println(getName()); 
		 testStatic2();             //static方法:能访问静态(类)方法变量、 不能访问实例方法变量
		 
		 
		//System.out.println(name);
		 System.out.println(num);   //static方法: 能访问静态(类)方法、不能访问实例方法(但是实例方法能够访问静态方法)
		//System.out.println(this.name); //不能出现this、super关键字
		 
		 
	}
	
	 static void testStatic2() {
		 System.out.println("static2 被调用");
	 }
	 
	String getName() {//实例方法
		System.out.println("实例方法被调用");
		return name;
	}
	void setName(String name) {
		testStatic2();    //实例方法能够访问静态方法
		this.name = name;
	}

}

2、final

package ClassN;

final class Final1 {//final 修饰类:此类不能有子类
	
	final static String name="BOBO";//final:修饰静态变量,此变量声明时要求被初始化。
	final String address;//final:修饰静态变量,此变量声明时要求被初始化或在构造函数中被初始化(每个构造函数都要包括这个变量)。
	String team;
	
	static {

	}
	
	
	Final1(String address) {
		super();
		this.address = address;
	}

	public Final1(String address,String team) {
		this.address=address;
		this.team=team;
	}
	
	
	public static void main(String[] args) {
		Final1.println2(100, 1000);
	}
	
	final void println1() {//final修饰方法:此方法不能被重写、覆盖
		System.out.println("final 方法被调用");
	}
	
	static void println2( final int a,final int b) {//final修饰形参,函数在被调用时被初始话,函数执行过程中不会改变值的大小。
		int aa=a+b;
		System.out.println(aa);
	}
	
}

猜你喜欢

转载自blog.csdn.net/cincoutcin/article/details/79806744