Java基础笔记 – static与final关键字及其编写细节提示
本文由发表于6年前 | Java基础 | 暂无评论 |  被围观 3,788 views+
1、static关键字:1.1、static成员变量:1.2、static静态方法:1.3、static静态代码块:1.4、静态代码块的执行:1.5、静态访问规则:2、final关键字:final常量:final方法:
1、static关键字:

static关键字可用于修饰属性,也可用于修饰方法,还可以用于修饰类。

1.1、static成员变量:

使用了static修饰的成员变量,即是静态成员变量。无论一个类生成了多少个对象,所有这些对象共同使用唯一的一静态的成员变量。即是一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会随着发生变化。

可以通过 类名.静态成员变量名 来获取静态成员变量。

1.2、static静态方法:

static修饰的方法叫做静态方法,静态方法只能继承不能重写(Override)(可以覆盖,用多态调用时,执行的也是父类的static静态方法)。

可以通过 类名.方法名 的方式来访问。

1.3、static静态代码块:

静态代码块的作用是完成一些初始化工作。

1.4、静态代码块的执行:

首先执行静态代码块,然后执行构造方法。静态代码块在类被加载的时候执行,而构造方法是在生产对象的时候执行。

调用某个类来生成对象时,首先将类加载到Java虚拟机上,然后有虚拟机加载这个类来生成对象。而静态代码块只会执行一次,是在类被加载的时候执行的。

因为每个类只会被加载一次,所以静态代码块也只会被执行一次。而每生成一个对象都会调用类的构造方法。

如果一个类中既有构造方法,又有静态代码块,那么首先执行顶层类的静态代码块,一直执行到底层类的代码块。在去从顶层到底层执行构造方法。

注意:静态代码块只会被执行一次。

如下面的静态代码块和构造方法的编写:

class A{
    static{
        System.out.println("static code A");
    }
    public A(String str){
        System.out.println("constructor A:" + str);
    }
}
class B extends A{
    static{
        System.out.println("static code B");
    }
    public B(){
        super("call constructor with parameters");
        System.out.println("constructor B");
    }
}

B b = new B(); 执行结果为:

static code A
static code B
constructor A:call constructor with parameters
constructor B
1.5、静态访问规则:

不能在静态方法中访问非静态的成员变量,只能访问静态的成员变量。但可以在非静态的方法中访问静态的成员变量。

静态只能访问静态;非静态可以访问一切。

不能在静态方法中使用this关键字。

2、final关键字:

当final关键字修饰一个原生数据类型时,表示该原生数据类型的值不能发生变化。当final修饰一个引用类型时,表示该引用类型不能再指向其他对象了,但引用直线对象的内容是可以改变的。

final常量:

当一个属性被final修饰时,表示该属性不能被改写。


对应final类型的成员变量,有两种赋初值的方式:

① 在生命final类型成员变量时就赋初值
② 在生命final类型成员变量时不赋初值,但在类的所有构造方法中都为其附上初值。

final方法:

final方法是一个终态方法,不能被重写(Override)。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/java-based-notes-static-and-final-keywords-and-write-the-details-of-prompt.html
关键字: , ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 10/26
文章评论
    没有评论
给我留言

有人回复时邮件通知我
Java基础的相关文章
随机文章 本月热门 热评
1 J2EE基于MVC的各层的设计原则及其编写注意事项 2012/9/15
2 Hibernate的xerces-2.6.2.jar文件冲突引发的Unable to load configuration错误及其解决方法 2011/5/23
3 操作系统接口-用户接口 程序接口 系统调用 2011/6/30
4 Android的Service基本编写方法 2011/7/12
5 Hibernate Generic DAO的介绍安装和使用 2011/12/27
6 Linux下find,sed,tr,grep,cut,wc等常用命令的使用和相关实例解析 2011/6/10
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.