static关键字和final关键字

static(静态)

作用

用来修饰属性、方法、代码块、内部类

static修饰属性

表示静态变量(类变量)

按是否使用static修饰,属性的分类

  • 静态属性

    1. 当创建了类的多个对象、每个对象都共享一个静态变量
    2. 当通过某一个对象修改静态变量时,会导致其他对象此静态变量时是修改过的
  • 非静态属性(实例变量)
    1. 当创建了类的多个对象、每个对象都独立的拥有一套类中的非静态属性
    2. 当修改其中一个对象的非静态属性时,不会导致其他对象中同样的属性值的修改

说明

  1. 静态变量随着类的加载而加载,可以通过“类.静态变量”的方式进行调用(实例变量随着对象的创建而加载)

  2. 静态变量的加载要早于对象的创建

  3. 由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中

内存结构解析

static修饰方法

表示静态方法

说明

  1. 随着类的加载而加载,可以通过“类.静态方法”的方式进行调用
  2. 静态方法中,只能调用静态的方法和属性;非静态方法中,即可以调用非静态的方法或属性,也可以调用静态的方法或属性
  3. 在静态的方法内,不能使用this关键字、super关键字

判断是否使用static

属性需要声明static的情况

  1. 属性可以被多个对象所共享的,不会随着对象的不同而不同
  2. 类中的常量也常常声明为static

方法需要声明static的情况

  1. 操作静态属性的方法,通常设置为静态的
  2. 工具类中的方法,习惯上声明为静态的(Math、Arrays)

final(最终)

作用

用来修饰类、方法、变量

final修饰类

此类不能被其他类所继承(String类、System类、StringBuffer类都是final类)

final修饰变量

此时被修饰的“变量”就是一个常量

final修饰属性

  • 可以考虑赋值的位置

    1. 显式初始化
    2. 代码块中初始化
    3. 构造器中初始化
      • 因为不知道对象调用哪个构造器,所以写的构造器中必须每个都要给final变量(其他情况的变量也如此)赋值

final修饰局部变量

  • 用final修饰形参

    • 表明此形参是个常量。
    • 当调用此方法时,给形参赋一个实参。一旦赋值以后,就只能在方法体内使用此形参。但不能进行重新赋值

static final

  • 用来修饰属性、方法
  • 修饰属性:全局常量

static关键字和final关键字的更多相关文章

  1. abstract关键字、final关键字、static关键字、访问修饰符详解

     abstract关键字.final关键字.static关键字.访问修饰符详解 abstract关键字: final关键字: static关键字: 访问修饰符:

  2. 详解详解Java中static关键字和final关键字的功能

    摘要:static关键字和final关键字是Java语言的核心,深入理解他们的功能非常重要. 本文分享自华为云社区<Java: static关键字与final关键字>,原文作者:唐里 . ...

  3. Java SE 第二十三讲----static关键字and final关键字

    1.static关键字 [在二十二讲视频中30分钟开始讲授] 2.static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量:一个对象对该静态成员变量进行了修改,其他 ...

  4. Java基础super关键字、final关键字、static关键字、匿名对象整理

    super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...

  5. [Java学习]面向对象-super关键字;final关键字

    super关键字 super代表的是当前子类对象中的父类型特征,可以看做是this的一部分.与this不同,不是引用,不存储对象内存地址. super可以用在什么位置 1 可以用在成员方法中.不能用在 ...

  6. [18/12/01]super 关键字和final 关键字

    一.super 关键字 1.super是直接父类对象的引用.可以通过super来访问父类中被子类覆盖的方法或属性. 使用super调用普通方法,语句没有位置限制,可以在子类中随便调用. 代码示例: c ...

  7. 面向对象编程(四)继承,概念及super关键字,final关键字,Object类常见方法

    继承 概念: ①   继承背后的思想就是基于已存在的类来构建新类; ②   当从已存在类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来定制新类以应对需求; ③   当从其它类导出的类叫作子 ...

  8. 重写、super关键字、final关键字、多态、子类型转换、抽象的初步了解

    重写 含义 在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法.但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写.方法重写又称方法覆盖. 重写与重载的 ...

  9. java——super关键字、final关键字、throws关键字、访问控制

    super关键字: 当父类被重写之后,子类对象无法访问父类被重写的方法,super就是为了解决这个问题: 1.使用super关键字访问父类的成员变量和成员方法: super.成员变量 super.成员 ...

随机推荐

  1. awk 命令使用入门

    Linux 下处理和分析文本文件内容,AWK 命令是一个强有力的工具.特别是文件内容是以行和列的形式排版的时候,AWK 就是命令行界的 Excel 啊! 简单的 awk 命令可以直接在命令行中使用,复 ...

  2. CentOS 7 安装VNC

    VNC需要系统安装的有桌面,可以进行下面操作安装GNOME 桌面. #列出的组列表里有GNOME Desktopyum grouplist | grep GNOME 安装 yum groupinsta ...

  3. Java 从入门到进阶之路(二十五)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 的子接口 List的 增删改查和与数组间相互转换的方法,本章我们来看一下 Java 集合框架中的Collection 的 ...

  4. HTML&CSS面试高频考点(三)

    11. CSS隐藏元素的方式 /*占据空间,无法点击*/ visibility: hidden; position: relative; top: -999em; /* 不占据空间,无法点击 */ p ...

  5. python用pandas遍历csv文件

    import pandas as pd df = pd.read_csv('a.csv') for index, row in df.iterrows(): x, y = row['X'], row[ ...

  6. jQurey Select2 4.0

    https://jeesite.gitee.io/front/jquery-select2/4.0/index.htm

  7. 使用Tensorflow对模型进行量化

    本文旨在将迁移学习训练好的模型基于tensorflow工具进行量化. 环境配置及迁移学习部分可参考博文[https://www.cnblogs.com/hayley111/p/12887853.htm ...

  8. 原生开发、H5开发、混合移动开发的优缺点

    一.原生开发(Native App开发) 原生开发,是在Android.IOS等移动平台上利用官方提供的开发语言.开发类库.开发工具进行App开发.比如Android是利用Java.Eclipse.A ...

  9. MySQL实验 子查询优化双参数limit

    MySQL实验 子查询优化双参数limit 没想到双参数limit还有优化的余地,为了亲眼见到,今天来亲自实验一下.   实验准备 使用MySQL官方的大数据库employees进行实验,导入该示例库 ...

  10. How many ways??,题解

    题目: 题意: 找过k条边的路径个数. 分析: 首先注意一下题意,同一个点过两次算两次,做过类似的,过k条边的最短路,只要搞一个矩阵,然后快速幂就好了,这个也一样,维护信息变一下,然后就好了. 如果k ...