`
草帽当家的
  • 浏览: 24402 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

Static与final关键字小结

阅读更多
1.Static关键字
        谈到static,我们通常会说它是一个静态修饰符,究竟什么才是静态修饰符,这个解释起来有些棘手,也很难让人理解它的意思。这就像让我们解释一个成语的意思,我们直接从成语词典里读出它的释义一样,生涩难懂,让人摸不着头脑。所以,当我们解释一个词时,往往要将其具体化——这个词有什么作用,应用在哪,会产生什么样的效果。
        Static可以用来修饰属性、方法、构造静态块。  
        1.当static修饰属性时,可以创建具体的对象来调用该属性,也可以直接通过类名调用该属性。当创建对象调用该属性时,每个对象共同拥有一个静态成员变量,也就是说当其中任何一个对象修改该属性的值时,其他对象的属性值也同时改变。这也就是可以直接通过类名调用该属性的原因,因为无论创建多少对象,所有对象都共用一个相同静态成员变量。既然每个对象的该属性都有相同的值,直接通过类名调用就显得更简单明了一些。
        用Static修饰的属性适用于单值情况,比如简单画图板重绘时存放信息的队列,五子棋用于存储棋子坐标和其他信息的二维数组…
        2.Static修饰方法时与修饰属性时相类似,可以创建具体的对象调用该方法,也可以直接通过类名调用该方法。
        值得注意的一点,当static修饰方法时,方法中的若有属性,则属性也应该是静态的,或者为常量。
public class Student {
       String name;
       public Student(){};
       public Student(String name){
	         this.name=name;
       }
       public static void study(){
	         System.out.println(name+"is playing now!");
       }
    }
    public class Teacher {
       public static void main(String [] args){
       Student stu=new Student("张三");
       Student st=new Student("李四");
       //Student.name="张三";
       st.study();
       stu.study();
       }
    }

       当运行该程序时,程序报错,错误原因是因为属性name不是静态的。究其原因,我们会发现如果直接能通过类名调用一个方法,就说明用该类创建的所有对象共用一个相同的方法,方法的输出结果必须是相同的,当你改变属性值,该方法就会有不同的输出结果,与能直接用类调用该方法相矛盾。所以String name应该改为static String name。
       静态的方法可以被隐藏但不能被重写,静态属性,静态方法都没有多态(可以参考一下jave的官方文档http://download.oracle.com/javase/tutorial/java/IandI/override.html)。
      3.静态块在类被加载时级执行,优先于主函数。
      4.关于主函数要加static的一点看法
当类被加载时,静态的属性和方法即被加载,而非静态成员只有在创建对象时才被加载,这也就是为什么主函数要加static的原因。由于非静态成员只有在创建时被加载,当一个类中没有static修饰的方法时,类加载时所有的方法都不会被加载,直接导致程序无法运行,所以必须找到一个入口,当类加载时,该入口即被加载,在方法体中才会创建对象,调用方法,程序才能正常运行。

2 Final关键字
      final可以修饰属性、方法、类。  
     1.当一个类被final修饰时,该类是一个终态类不能被继承。
     2.当一个属性被final修饰时,该属性是一个常量,定义时需要赋初值,或者在所有的 构造器方法里赋值。当以对象作为final修饰的属性时,对象的地址不能改变,但对象的内容可以改变。
     3.当一个方法被final修饰时,该方法不能被重写,即override。


3
2
分享到:
评论

相关推荐

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    11.2.4 理解final关键字 296 11.2.5 总结:类的修饰符 297 11.3 方法的修饰符 297 11.3.1 方法的访问控制符 298 11.3.2 public:没有限制的修饰符 299 11.3.3 protected:仅对子类和同包的类可见 300 11.3.4 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    11.2.4 理解final关键字 296 11.2.5 总结:类的修饰符 297 11.3 方法的修饰符 297 11.3.1 方法的访问控制符 298 11.3.2 public:没有限制的修饰符 299 11.3.3 protected:仅对子类和同包的类可见 300 11.3.4 ...

    突破程序员基本功的16课.part2

    7.7 static关键字 7.7.1 静态方法属于类 7.7.2 静态内部类的限制 7.8 native方法的陷阱 7.9 小结 第8课 异常捕捉的陷阱 8.1 正确关闭资源的方式 8.2 finally块的陷阱 8.2.1 finally的执行规则 8.2.2 ...

    javaSE代码实例

    1.5 小结 11 第2章 基本数据类型——构建Java 大厦的基础 12 2.1 源代码注释 12 2.1.1 单行注释 12 2.1.2 区域注释 12 2.1.3 文档注释 13 2.2 基本数据类型 14 2.2.1 整型 15 2.2.2 浮点型 17 ...

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

     小结 23  术语表 23  第Ⅰ部分 C++基础 27  第2章 变量和基本类型 29  2.1 基本内置类型 30  2.1.1 算术类型 30  2.1.2 类型转换 32  2.1.3 字面值常量 35  2.2 变量 38  2.2.1 变量定义 38  2.2.2 变量...

    C++Primer(第5版 )中文版(美)李普曼等著.part2.rar

     小结 23  术语表 23  第Ⅰ部分 C++基础 27  第2章 变量和基本类型 29  2.1 基本内置类型 30  2.1.1 算术类型 30  2.1.2 类型转换 32  2.1.3 字面值常量 35  2.2 变量 38  2.2.1 变量定义 38  2.2.2 变量...

    面向对象程序设计与实践-Java抽象类和接口[33页].pptx

    01 简易公司人事管理 案例描述 案例分析 关联知识 案例实现 案例小结 案例拓展 面向对象程序设计与实践-Java抽象类和接口[33页]全文共33页,当前为第4页。 5-1案例描述 现有一软件公司,公司中有开发人员若干、项目...

    java基础案例与开发详解案例源码全

    3.7.6 循环语句小结78 3.7.7 break语句79 3.7.8 continue语句82 3.8 JavaDebug技术84 3.9 本章练习85 第4章 4.1 一维数组90 4.1.1 为什么要使用数组90 4.1.2 什么是数组91 4.1.3 如何使用数组92 4.1.4 经验之谈-数组...

    (全)传智播客PHP就业班视频完整课程

    数组使用细节② 数组运算符 数组作业评讲① 数组小结 8-24 1.回顾 8-24 2.选择排序 插入排序 快速排序 8-24 3.选择排序 插入排序 快速排序 8-24 4.顺序查找 二分查找 8-24 5.多维数组 数组作业评讲② 8-24 6.数组...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    数组使用细节② 数组运算符 数组作业评讲① 数组小结 8-24 1.回顾 8-24 2.选择排序 插入排序 快速排序 8-24 3.选择排序 插入排序 快速排序 8-24 4.顺序查找 二分查找 8-24 5.多维数组 数组作业评讲② 8-24 6.数组...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    数组使用细节② 数组运算符 数组作业评讲① 数组小结 8-24 1.回顾 8-24 2.选择排序 插入排序 快速排序 8-24 3.选择排序 插入排序 快速排序 8-24 4.顺序查找 二分查找 8-24 5.多维数组 数组作业评讲② 8-24 6.数组...

    史上最全传智播客PHP就业班视频课,8月份视频

    数组使用细节② 数组运算符 数组作业评讲① 数组小结 8-24 1.回顾 8-24 2.选择排序 插入排序 快速排序 8-24 3.选择排序 插入排序 快速排序 8-24 4.顺序查找 二分查找 8-24 5.多维数组 数组作业评讲② 8-24 6.数组...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    数组使用细节② 数组运算符 数组作业评讲① 数组小结 8-24 1.回顾 8-24 2.选择排序 插入排序 快速排序 8-24 3.选择排序 插入排序 快速排序 8-24 4.顺序查找 二分查找 8-24 5.多维数组 数组作业评讲② 8-24 6.数组...

Global site tag (gtag.js) - Google Analytics