Java中static与final关键字怎么用

发布时间:2021-08-21 11:21:49 作者:小新
来源:亿速云 阅读:166

小编给大家分享一下Java中static与final关键字怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

static:(静态修饰符)面向对象中static修饰的内容是隶属于类,而不是直接隶属于对象的,所以static修饰的成员变量一般称作类成员变量,而static修饰的方法一般称作类方法。

分类:

1、static变量,也叫作静态变量或者类变量。另一种是没有被static修饰的变量,叫实例变量。

2、static方法,也叫作静态方法或者类方法,静态方法中不能定义静态变量,实例方法也不能。

3、static代码块,静态块中,可以访问静态变量,调用静态方法。

注意事项:

1、static不依附于任何对象,就没有this方法。

2、static方法不可以调用非static方法,但非static方法可以调用static方法。

3、被static修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

4、static方法不能被重写,当子类与父类中同时存在一样的static方法时,默认调用的是父类的静态方法,子类的静态方法就被隐藏了。

5、static块一般用于初始化类中的静态变量。在先执行static修饰的内容基础上,遵循先定义先执行的原则。

6、如果变量或方法经常被调用的话,就使用static修饰。否则少用,避免造成内存泄漏。

静态变量的代码例子:

public class Test{
	static int a=1; //静态变量
	int b=2; //实例变量
	public static void main(String[] args){
		System.out.println(Test.a); //System.out.print(a);
		System.out.println(b); //直接输出变量b会报错
		Test t=new Test(); //创建实例对象
		System.out.println(t.b); //对象调用变量
	}
}

静态方法的代码例子:

public class Test{
	static int a=1; //静态变量
	int b=2; //实例变量
	static void A(){ //静态方法
		B(); //报错,静态方法不可以调用非静态方法
		System.out.println(Test.a); //System.out.print(a);
	}
	void B(){ //非静态方法
		Test.A(); //A();非静态方法可以调用静态方法
		System.out.println(b);
		System.out.println(Test.a); //System.out.print(a);
	}
	public static void main(String[] args){
		Test.A(); //A();
		B(); //报错,非静态方法需要通过实例对象进行调用
		Test t=new Test();
		t.B();
	}
}
/*
 * 是否能被重写
 */
class StaticSon extends Test{ //子类继承父类
	void A(){ //报错,父类的静态方法不能被重写
		/*......*/
	}
	static void A(){ //这是子类的静态方法,严格来说并不是重写父类的静态方法
		
	}
}

静态块的代码例子:

public class Test{
	int c=3;
	static int a=1;
	static int b=2;
	static{
		a=10;
		b=20;
		c=30; //报错,静态块里的变量必须是静态变量
		System.out.println(a+b);
	}
	public static void main(String[] args){
		Test t=new Test();
		System.out.println(t.c); //先执行静态变量,再执行实例变量
	}
}

final:理解为不可变的。

注意事项:

1、final与static经常放在一起使用。

2、final修饰的变量,只能进行一次赋值操作。

3、final方法不能被重写,但可以被重载。

4、final类不能被继承。

5、final和abstract这两个关键字是相反的,不可能同时修饰类。因为final不能被重写,而abstract又必须重写。

6、final关键字不同于finally关键字,后者用于异常处理。

7、大多数情况下,并不用final来修饰方法和类,因为其可拓展性不好。

8、final在一定的环境下使用,可以提高程序的运行性能,优化程序的结构。

final变量与final类的代码例子:

public final class Test{
  final static int a=1;
  static {
    a=10; //报错,只能进行一次赋值操作
  }
}
class FinalSon extends Test{ //报错,final类不能被继承
  
}

final方法的代码例子:

public class Test{
	final static int a=1;
	final void A(){ //final方法
		System.out.println(a);
	}
}
class FinalTest extends Test{
	void A(){ //报错,final方法不能被重写
		System.out.println("err");
	}
}
final abstract class FinalErr{ //final和abstract不能同时存在
	/*......*/
}

看完了这篇文章,相信你对“Java中static与final关键字怎么用”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. java 关于static
  2. java中Static、final和Static final是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java static final

上一篇:Docker如何使用

下一篇:Docker怎么构建多阶段镜像

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》