首页 > 编程语言 >Java中static、final、static final的区别

Java中static、final、static final的区别

时间:2023-11-25 22:31:50浏览次数:41  
标签:Java 对象 句柄 static 修饰 final 属性

final

final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。 final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。 final修饰的属性表明是一个常数(创建后不能被修改)。 final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承。 对于基本类型数据,final会将值变为一个常数(创建后不能被修改);但是对于对象句柄(亦可称作引用或者指针),final会将句柄变为一个常数(进行声明时,必须将句柄初始化到一个具体的对象。而且不能再将句柄指向另一个对象。但是,对象的本身是可以修改的。这一限制也适用于数组,数组也属于对象,数组本身也是可以修改的。方法参数中的final句柄,意味着在该方法内部,我们不能改变参数句柄指向的实际东西,也就是说在方法内部不能给形参句柄再另外赋值)。

static

static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)。 static修饰的属性的初始化在编译期(类加载的时候),初始化后能改变。 static修饰的属性所有对象都只有一个值。 static修饰的属性强调它们只有一个。 static修饰的属性、方法、代码段跟该类的具体对象无关,不创建对象也能调用static修饰的属性、方法等 static和“this、super”势不两立,static跟具体对象无关,而this、super正好跟具体对象有关。 static不可以修饰局部变量。

static final

static final和final static没什么区别。 static修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。 static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用

标签:Java,对象,句柄,static,修饰,final,属性
From: https://blog.51cto.com/u_15777557/8562607

相关文章

  • Java开发者的Python快速进修指南:面向对象基础
    当我深入学习了面向对象编程之后,我首先感受到的是代码编写的自由度大幅提升。不同于Java中严格的结构和约束,Python在面向对象的实现中展现出更加灵活和自由的特性。它使用了一些独特的关键字,如self和cls,这些不仅增强了代码的可读性,还提供了对类和实例的明确引用。正如Java,Python也......
  • EC-Final 2022 Rectangles
    有点营养的题。很容易做三条竖线,接下来考虑两竖一横。直接枚举横线会变成支持加入区间删除区间维护有多少种方案选择两个点使得任何区间至少包含其一。当然一个想法是线段树分治,以一只log的代价转化为只有加入,这个先放着。胡乱离散化一下,又可以转化为点带权但值域只有\(2n\)。......
  • Java基于协同过滤算法开发的springboot+vue服装商城
    演示视频https://www.bilibili.com/video/BV1oH4y127fq/?share_source=copy_web&vd_source=11344bb73ef9b33550b8202d07ae139b主要功能:用户可以浏览商品和特价商品,加入购物车,直接下单支付,在我的个人中心里可以管理自己的订单,收货地址,编辑资料等。管理员可以发布商品,上下架商品,处......
  • Java基于springoot开发的企业招聘求职网站
    演示视频: https://www.bilibili.com/video/BV1xw411n7Tu/?share_source=copy_web&vd_source=11344bb73ef9b33550b8202d07ae139b技术:springoot+mysql+vuejs+bootstrap+poi+制作word模板主要功能:求职者可以注册发布简历,选择简历模板,上传简历,搜索职位,投递简历,给hr留言,查看自己投......
  • Java 程序里 transient 关键字的使用方法介绍
    在Java中,transient是一个关键字,主要被用于管理序列化过程中哪些字段需要被忽略。在序列化过程中,如果一个字段被声明为transient,那么这个字段就不会被序列化。什么是序列化呢?序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,序列化可以通过实现java.io......
  • Java开发者的Python快速进修指南:面向对象进阶
    在上一期中,我们对Python中的对象声明进行了初步介绍。这一期,我们将深入探讨对象继承、组合以及多态这三个核心概念。不过,这里不打算赘述太多理论,因为我们都知道,Python与Java在这些方面的主要区别主要体现在语法上。例如,Python支持多重继承,这意味着一个类可以同时继承多个父类的属......
  • Java 中如何解决跨域问题
    文章目录背景一、什么是跨域?为什么会出现跨域二、Java实现跨域方式2.1、返回新的CorsFilter(全局跨域)2.2、重写WebMvcConfigurer(全局跨域)2.3、使用注解(aa局部跨域)2.4、手动设置响应头(局部跨域)2.5、使用自定义filter实现跨域2.6、SpringCloudGateway跨域配......
  • 数据结构之优先队列(java)
    一:概述队列的特点是:先进先出(FIFO).入队列,将元素置于队尾;出队列,队头元素最先被移出:优先队列不遵循先入先出的原则,而是分两种情况。最大优先队列,无论入队顺序如何,都是当前最大的元素优先出队最小优先队列,无论入队顺序如何,都是当前最小的元素优先出队。例如有一个最大优先队列,其中的......
  • Day05 Java程序运行机制
    Java程序运行机制编译型解释型如同中国人写了一本书美国人想看编译型就类似把整本书全部翻译成美国人看得懂的书(中文书-->英文书)解释型就类似美国人找了个翻译官翻译一段美国人看一段(说一句解释一句用一下编译一下)程序运行机制源程序(*.java)文件-->Jav......
  • Day08 Java关键字和标识符
    Java关键字和标识符首先Java的所有组成部分都需要有名字类名、方法名、变量名都被称为标识符如HelloWorld中publicclassHello{ publicstaticvoidmain(String[]args){Stringteacher="秦疆"; System.out.print("Hello,World!"); }}关键词有publicclas......