Java基础(二)----------Java中Static修饰符和final关键字

1.Static静态修饰符

在程序中任何变量或者代码都是在编译时,由系统自动分配内存来存储的,而所谓静态就是指在编译后分配的内存会一直存在,直到程序退出时才会释放内存空间。Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。鉴于他作用的特殊性更推荐用类名访问。

public class StaticTest {
	
	static String name="张三" ;

	String sex="男";
	
	String age="20";
	
	
	public void getAge() {
		System.out.println(age);
	}
	
	public void getSex() {
		System.out.println(StaticTest.name);	//在普通成员方法中可以直接访问静态成员
		StaticTest.getAdress();
		
		System.out.println(sex);	//在普通成员方法中也可以直接访问访问非静态成员
		getAge();
	}
	
	public static void getAdress() {
		System.out.println(StaticTest.name);	
	}
	
	public static void main(String[] args) {
		System.out.println(StaticTest.name);	//1.静态方法可以直接调用同类中的静态成员
		StaticTest.getAdress();
		
		StaticTest test=new StaticTest();	// 2静态方法只能通过创建对象可以调用非静态成员
		test.getSex();
		System.out.println(test.sex);	
	}

}

(1)静态方法可以直接调用静态成员,静态方法只可以通过创建对象的方式调用非静态成员。

(2)普通成员方法可以直接访问同类的非静态变量和静态变量。

2.final终态关键字

(1)final声明的成员变量方法、类以及本地变量不可更改。final变量经常和static关键字一起使用,作为常量,通常常量名要大写。

public class FinalTest {
	
	static final String NAME="张三";	//	final变量经常和static关键字一起使用,作为常量,通常常量名要大写
	
	 public static void main(String[] args) {
	     System.out.println(NAME);
	}
}

(2)final变量定义的时候可以先声明不赋初始值称为final空白,final空白使用之前必须初始化,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

public class FinalTest {
	
	public final String SEX; 	//	final变量定义的时候可以先声明不赋初始值称为final空白,
	
	public FinalTest(String x) {	//final空白使用之前必须初始化
		SEX=x;
	}
	
	public static void main(String[] args) {
		FinalTest test=new FinalTest("李四");	//	一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。
		System.out.println(test.SEX);
		
		FinalTest test1=new FinalTest("王五");
		System.out.println(test1.SEX);
	}
}

(3)final方法不能被重写。

public class FinalTest1 {
	
	public final void printName() {
		System.out.println("张三");
	}
	
	public final void printName2() {
		System.out.println("李四");
	}
}
public class FinalTest2 extends FinalTest1{
	
	public void printName1() {
		System.out.println("张三三");
	}
	
	public void printName2() {//final修饰的方法无法被重写
		System.out.println("李四四");
	}

}

 

(4)final类不能被继承。final类通常功能是完整的,它们不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。

public final class FinalTest3 {

}
public class FinalTest4 extends FinalTest3{

}

 

(4)final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。final关键字提高了性能。JVM和Java的应用都会缓存变量。final变量可以安全的在多线程环境下共享,而不需要额外的同步开销。使用fial关键字,JVM会对方法、变量、和类进行优化。

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值