static 和 final 的区别有哪些

static 和 final 的区别是:final被修饰的变量为常量一旦赋值不能修改,被修改的方法为最终方法不能被重写,被修饰的类是最终类,不能被继承。static被修饰的变量和方法,为该整个类及其类的对象所共享,一个类或对象修改了被定义的类或方法,其他的也会跟着变量。

static 和 final 的区别有哪些-Worktile社区

static(全局变量)

static 表示静态或全局,它可以修饰属性,方法和代码块。由于静态属性和方法是属于该类的所有对象的,所以可以用类名.静态属性/方法名来访问。用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块。static被修饰的变量和方法,为该整个类及其类的对象所共享,一个类或对象修改了被定义的类或方法,其他的也会跟着变量。

static变量:按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。

类中的实例变量是在创建对象时被初始化的,被static修饰的属性,也就是类变量,是在类加载时被创建并进行初始化,类加载的过程是进行一次。也就是类变量只会被创建一次。static 修饰的变量可以修改。

静态方法:静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对象关联!

父子类中,静态方法只能被静态方法覆盖,父子类中,非静态方法只能被非静态方法覆盖。

java中的main方法必须写成static的因为,在类加载时无法创建对象,因为静态方法可以不通过对象调用,所以在类的main方法所在在类加载时就可以通过main方法入口来运行程序。

static代码块:static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

final(不能改变的量)

final修饰符,表示常量,一旦创建就不能改变的量,可以修饰变量,方法,类。ffinal标记的局部变量为常量。final标记的成员变量必须在声明的同时赋值,或在该类的构造方法中显示赋值(实例变量没有默认值),然后才能使用。final方法不能被子类重写。 final类不能被继承,没有子类,final类中的方法默认是final的。final不能用于修饰构造方法。java中有许多的类为final类型:String ,Math等。final被修饰的变量为常量一旦赋值不能修改,被修改的方法为最终方法不能被重写,被修饰的类是最终类,不能被继承。

final修饰变量:被fianl修饰的变量就会变成常量(常量应当大写),一旦赋值不能改变,(可以在初始化时直接赋值,也可以在构造方法里也可以赋值,只能在这两种方法里二选一,不能不为常量赋值),fianl的常量不会有默认初始值,对于直接在初始化是赋值时final修饰符常和static修饰符一起使用。

final修饰方法:被final修饰的方法将不能被其子类覆盖,保持方法的稳定不能被覆盖。

final修饰类:被final修饰的类将不能被继承。final类中的方法也都是final的。

注意:final不能用来修饰构造方法,在父类中如果有常量属性,在子类中使用常量属性时是不会进行父类的类加载。

注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。

延伸阅读:

Java语言中的static

有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main()。因为在程序开始执行时必须调用main() ,所以它被声明为static。

声明为static的变量称为静态变量或类变量。可以直接通过类名引用静态变量,也可以通过实例名来引用静态变量,但较好采用前者,因为后者容易混淆静态变量和一般变量。静态变量是跟类相关联的,类的所有实例共同拥有一个静态变量。

声明为static的方法称为静态方法或类方法。静态方法可以直接调用静态方法,访问静态变量,但是不能直接访问实例变量和实例方法。静态方法中不能使用this关键字,因为静态方法不属于任何一个实例。

文章标题:static 和 final 的区别有哪些,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37828

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月12日 下午4:36
下一篇 2023年2月12日 下午4:39

相关推荐

  • DevOps与云原生应用的联系

    DevOps是一套实践、工具和文化哲学,旨在提高软件的交付速度和质量。云原生应用指设计用于云环境的应用,强调轻量级容器化、微服务架构、以及自动化。两者之间有3个主要联系点:1、快速迭代,2、基础设施即代码,3、微服务和容器化技术。 快速迭代 是云原生应用能够成功实施的关键。在此基础上,云原生和Dev…

    2024年1月4日
    24400
  • 云原生应用如何支持移动端

    云原生应用为移动端提供后端支持、数据存储和同步、身份和访问管理、性能和优化、通知和推送服务、分析和监控、DevOps和CI/CD、安全性、与原生移动功能的集成等功能。通过利用云原生技术,开发者可以更容易地构建、部署和扩展移动应用,同时确保其可靠性、安全性和性能。云原生的核心是依赖于云计算技术来构建和运行可扩展的应用程序,这种技术非常适合支持移动端应用。

    2023年10月30日
    35300
  • linux显示隐藏的文件

    在Linux系统中显示隐藏文件可以通过多种方法,主要包括:1、使用ls -a命令在终端查看;2、使用图形界面的文件管理器;3、通过find命令查找特定隐藏文件。其中,使用ls -a命令是在终端中显示包括隐藏文件在内的所有文件和目录的最常用方法。 在Linux系统中,以点(.)开头的文件和目录通常是隐…

    2023年8月8日
    2.4K00
  • 产品项目如何做好管理

    产品项目管理是确保项目按时、按预算、并达到既定质量目标的关键。有效的产品项目管理方法包括:设立明确的目标、采用敏捷方法论、维持良好的沟通、进行风险管理、以及利用合适的工具。在这其中,设立明确目标是基石,因为它为项目的所有阶段提供了清晰的方向和标准。 设立明确目标要求项目经理与所有关键利益攸关方进行紧…

    2024年4月10日
    5000
  • 进度计划网络图用什么软件

    可以用以下软件:1、Microsoft Project;2、GanttProject;3、 Wrike;4、 Smartsheet;5、Monday.com;6、Trello。Microsoft Project是一款功能强大的项目管理软件,可帮助用户制定和管理进度计划网络图。它可以自定义进度计划网络…

    2023年2月27日
    2.0K00
  • 监理负责一个项目如何管理好

    监理负责的项目管理,核心关键包括:建立有效的沟通机制、制定细致的项目监督计划、强化合同管理、确保质量控制、重视安全监督、优化进度管理、维护好各方利益关系、实施环境监理,其中建立有效的沟通机制能够确保信息准确、及时传达,为项目的顺利推进提供保障。 项目管理是一个复杂的过程,需要监理团队对项目有全面的了…

    2024年4月11日
    5800
  • Java中的数据缓存和缓存框架有哪些

    通过使用Java数据缓存,数据可快速访问以提高应用性能。有效的数据缓存减少数据库访问次数,让经常被请求的数据在内存中迅速获取。1、轻松获取数据提速应用;2、降低数据库负载;3、提高可扩展性;4、支持复杂的数据处理。详细探索第一观点,缓存通过保持内存中的数据副本来减少对慢速存储系统(如数据库)的访问。…

    2024年1月8日
    29300
  • 在Scrum中如何处理产品的技术债

    在Scrum实践中处理产品的技术债务,关键在于识别、量化、规划并迭代地解决它们。解决技术债务首要途径是在产品积压工作清单中优先化技术债务项、团队拥抱持续改进的文化、以及有效的沟通机制。1、确保团队识别出技术债务,理解其对产品和进度的潜在影响。2、利用量化工具评估技术债务的严重度,优先处理对业务价值和…

    2023年12月12日
    27900
  • 项目需求软件有哪些

    项目需求软件有: 一、PingCode;二、Worktile;三、Modern Requirements;四、Jama Software;五、Clarizen。PingCode 具备8大子产品,覆盖从客户反馈、规划、开发、编码、构建、测试到发布上线等研发管理全流程管理,在软件项目管理方面它有着非常多…

    2023年4月29日
    32400
  • devops到底是什么意思

    直奔主题,DevOps代表一种融合软件开发(Development)与信息技术运维(Operations)的文化、实践与工具集。它促进了开发人员与运维人员之间的协作、沟通以及整个服务生命周期自动化的过程。这种理念背后的目的在于加快软件产品的交付速度,提高服务的稳定性与创新力。特别地,持续集成及持续交…

    2024年3月26日
    6600

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部