时间:2021-05-19
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不能同时存在 }声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。final关键字的含义?final在Java中是一个保留的关键字,可以
本文主要针对Java常见关键字final,static,super,this进行详细辨析,以方便读者参考查阅。具体如下:一、final1)修饰class(类):
这篇文章主要介绍了java多线程关键字final和static详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参
Java中的static关键字可以用于修饰变量、方法、代码块和类,还可以与import关键字联合使用,使用的方式不同赋予了static关键字不同的作用,且在开发
javafinal关键字详解:前言:Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方