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. SpringBoot——项目启动时读取配置及初始化资源

    介绍   在开发过程中,我们有时候会遇到非接口调用而出发程序执行任务的一些场景,比如我们使用quartz定时框架通过配置文件来启动定时任务时,或者一些初始化资源场景等触发的任务执行场景. 方法一:注解 ...

  2. mac Pycharm 导入jieba报错解决

    背景 新买的mac 用的还不是太熟,在用jieba做分词的时候,pycharm import说是没有安装,那我就直接点击安装呗,结果失败,说是当前渠道不能识别,ok,那我就开始一步一步来解决了. 正文 ...

  3. 02【熟悉】springboot和微服务的介绍

    1,springboot简介 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程. 该框架使用了特定的方式来进行配置,从 ...

  4. Nacos配置中心原理

    动态配置管理是 Nacos 的三大功能之一,通过动态配置服务,我们可以在所有环境中以集中和动态的方式管理所有应用程序或服务的配置信息. 动态配置中心可以实现配置更新时无需重新部署应用程序和服务即可使相 ...

  5. windows10 通过vnc远程访问ubuntu16.04

    参考链接 链接1 , 链接2 ,链接3 . 0.前言: 为方便深度学习训练,我们需要多个windows的电脑可以远程访问一个linux系统的工作站(以方便在linux系统上进行深度学习训练) 前提: ...

  6. 内嵌iframe页面在IOS下会受内部元素影响自动撑开的问题

    IOS下的webview页面,内嵌iframe元素,将其样式指定为宽高100%: .iframe { width: %; height: %; } 在安卓下运行均无问题,但是在IOS下会出现异常. 具 ...

  7. 测试必备工具之抓包神器 Charles 如何抓取 https 数据包?

    之前发过一篇文章讲解了Charles抓包工具的基本使用(有需要的小伙伴可以去看上一篇文章),  讲的数据包主要是http协议,大家可以看到数据包并直接显示具体详细的内容: 但是如果抓到的是https的 ...

  8. JavaScript图片预览

    预览选中的图片文件 jQuery $("#selectImage").change(function(){ $("#image").attr("src ...

  9. 初学linux常见问题

    学习视频:<Linux从入门到精通> 1.Linux系统与我们常用的windows系统有什么相同与不同之处? 相同之处:都是操作系统,可以安装其他的软件 不同之处:从使用方式上来看,win ...

  10. Scala 面向对象(六):面向对象的特征二:继承 (一)

    1 Scala继承的基本语法 class 子类名 extends 父类名 { 类体 } class Person { var name : String = _ var age : Int = _ d ...