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. eclipse .project文件 .classpath文件的作用

    .classpath文件的作用 可以参考.classpath文件的作用 .project文件的作用 确保你自己的eclipse能创建Java项目,并且正确编译运行helloworld,给eclipse ...

  2. 01.scrapy入门

    Scrapy快速入门 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,它使用Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求. ...

  3. vue全家桶(4.1)

    5.状态管理 5.1.兄弟组件之间共享数据的问题? 首先,我们需要了解下兄弟组件之间如何共享数据的问题 完成下列需求: 1.点击按钮,改变商品数量 2.点击加入购物车,在购物车的这个div盒子里需要显 ...

  4. 如何在Vim中更改颜色和主题

    大家好,我是良许. Vim是我们在Linux中非常常用的一款文本编辑器.Vim 是一款免费.开源的文本编辑器,它的功能和许多其他的文本编辑器大致相同,比如 Sublime 和 Notepad++ .V ...

  5. FTP学习

    FTP服务的使用 一.LVM理论 介绍 FTP用于在Internet 上控制文件的双向传输. FTP的主要作用就是让用户连接一 个远程计算机(这些计算机上 运行着FTP服务器程序) ,并查看远程计算机 ...

  6. POJ 3463 Sightseeing 题解

    题目 Tour operator Your Personal Holiday organises guided bus trips across the Benelux. Every day the ...

  7. ZJOI2008 骑士(树型DP)

    ZJOI2008 骑士 题目大意 给出n个人的战斗力和每个人讨厌的人,然后问最大能有多大的战斗力 solution 简单粗暴的题意,有一丢丢背包的感觉 那敢情就是DP了 有点像没有上司的舞会,,, 根 ...

  8. 【经典DP】洛谷 P2782 友好城市

    嘤嘤嘤,昨天两个文化课老师在上奥赛时招呼我(亲切交流),今天又要写工作报告,没时间写题解,希望今天能补上 友好城市 题目://洛谷那粘来的题面竟然能把格式粘过来 题目描述 有一条横贯东西的大河,河有笔 ...

  9. 原生JS实现树状结构列表

    树状结构列表,这个技术点之前有写过了,是基于vue讲解,但似乎都没有解决痛点,最基础的原生JS该怎么实现呢? 这篇文章会全面详细的介绍树状结构列表的实现,从数据处理成树状结构,到动态生成dom节点渲染 ...

  10. day14总结

    装饰器 """1.什么是装饰器 器指的是工具/功能 装饰指的是为被装饰对象添加额外的功能 大白话:定义装饰器就是定义了一个函数,该函数就是用来为其他函数添加额外的功能的 ...