脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页软件编程java→ Java的static与final关键字

学习Java的static与final关键字

  更新时间:2018年03月02日 09:25:38  作者:彬菌 
本篇文章给大家详细分析了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生成缩略图的方法,结合具体实例形式分析了java生成缩略图过程中所涉及的各种常见的图形处理技巧,需要的朋友可以参考下
      2017-03-03
    • 这篇文章主要介绍了Java 数据库连接(JDBC)的相关总结,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
      2021-03-03
    • 这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
      2021-08-08
    • 这篇文章主要介绍了Mybatis使用ognl表达式实现动态sql的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
      2021-06-06
    • 这篇文章主要介绍了SpringCloud Bus 消息总线的具体使用,详细的介绍了什么是消息总线以及具体配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2018-12-12
    • 一说起对象关系映射框架,大家第一时间想到的肯定是Hibernate。Hibernate作为一个著名的框架,功能十分强大。但是由于Hibernate如此强大的功能,导致了它的缺点。好吧,不多说了,具体详情大家通过本文一起学习吧
      2017-03-03
    • 这篇文章主要介绍了Spring-AOP 静态正则表达式方法如何匹配切面的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
      2021-07-07
    • 这篇文章主要介绍了spring boot 中设置默认网页的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2018-04-04
    • 这篇文章主要介绍了SpringBoot整合Spring Data Elasticsearch的过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
      2019-09-09
    • Keytool 是一个JAVA环境下的安全钥匙与证书的管理工具,Keytool将密钥(key)和证书(certificates)存在一个称为keystore 的文件(受密码保护)中,本文重点给大家介绍keytool的使用,感兴趣的朋友一起看看吧
      2022-02-02

    最新评论