• 关键字的理解


    final关键字的作用

    相信对于final的用法,大多数人都可以随口说出三句话:

    1、被final修饰的类不可以被继承

    2、被final修饰的方法不可以被重写

    3、被final修饰的变量不可以被改变

     1     public static void main(String[] args) {
     2         final User u = new User("aaa");
     3         u.setName("bbb");
     4         System.out.println(u.toString());
     5     }
     6     static class User {
     7         private String name;
     8         public User(String name){
     9             this.name = name;
    10         }
    11         public String getName() {
    12             return name;
    13         }
    14         public void setName(String name) {
    15             this.name = name;
    16         }
    17         @Override
    18         public String toString() {
    19             return "User [name=" + name + "]";
    20         }
    21     }
    View Code

    可见,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的

    ---------------------------------------------------------------------------------------------------

    static关键字作用总结

    static关键字最基本的用法是:

    1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来

    2、被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来

    被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。

    从JVM的类加载机制的角度讲,静态资源是类初始化的时候加载的,而非静态资源是类new的时候加载的。

    1、静态方法能不能引用非静态资源?不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它。

    2、静态方法里面能不能引用静态资源?可以,因为都是类初始化的时候加载的,大家相互都认识。

    3、非静态方法里面能不能引用静态资源?可以,非静态方法就是实例方法,那是new之后才产生的,那么属于类的内容它都认识。

    静态块

    静态块也是static的重要应用之一。也是用于初始化一个类的时候做操作用的,和静态变量、静态方法一样,静态块里面的代码只执行一次,且只在初始化类的时候执行

    静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。

    静态代码块是严格按照父类静态代码块->子类静态代码块的顺序加载的,且只加载一次。

    static修饰类

    这个用得相对比前面的用法少多了,static一般情况下来说是不可以修饰类的,如果static要修饰一个类,说明这个类是一个静态内部类(注意static只能修饰一个内部类),也就是匿名内部类。

    import static

    import static java.lang.Math.*;

    =========================================================================

    总结前人经验,自己敲打每一行代码。

  • 相关阅读:
    帝国 标签模板 使用程序代码 去除html标记 并 截取字符串
    iis6 伪静态 iis配置方法 【图解】
    您来自的链接不存在 帝国CMS
    帝国cms Warning: Cannot modify header information headers already sent by...错误【解决方法】
    .fr域名注册 51元注册.fr域名
    帝国网站管理系统 恢复栏目目录 建立目录不成功!请检查目录权限 Godaddy Windows 主机
    星外虚拟主机管理平台 开通数据库 出现Microsoft OLE DB Provider for SQL Server 错误 '8004' 从字符串向 datetime 转换失败
    ASP.NET 自定义控件学习研究
    CSS层叠样式表之CSS解析机制的优先级
    ASP.NET程序员工作面试网络收藏夹
  • 原文地址:https://www.cnblogs.com/qypx520/p/5737442.html
Copyright © 2020-2023  润新知