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

Java中static、final、static final的区别

时间:2022-11-01 12:41:48浏览次数:40  
标签:Java 对象 static 修饰 方法 final 属性


分享知识 传递快乐

 

final

  • final可以修饰:属性,方法,类,局部变量(方法中的变量)
  • final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。
  • final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。
  • final修饰的属性表明是一个常量,创建后不能被修改。
  • final修饰的方法表示该方法在子类中不能被重写。
  • final修饰的类表示该类不能被继承。

 

static

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

附:

如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用哪一个方法是看是哪个对象的引用;这种父子类方法也不在存在多态的性质。

java不推荐用对象调用static方法,这会使人混淆。

 

static final和final static

static final和final static没什么区别,一般static写在前面。

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

 

 

 

 

 

 

 

———————————
相互学习,共同进步
如有不足请留言指正

标签:Java,对象,static,修饰,方法,final,属性
From: https://blog.51cto.com/u_15856116/5813256

相关文章

  • mybatis-java中的几类错误
    目录mybatis-java中的几类错误1.第一种错误类型1.1namespace1.2一致性问题1.3构建1.4配置文件导不出来2.第二种类型错误2.1Error:java:错误:不支持发行版本2.2Except......
  • Java链式编程和Lombok实现链式编程
    分享知识传递快乐一、Java链式编程1.什么是链式编程链式编程的原理就是返回一个this对象,就是返回对象本身,以达到链式编程的效果。链式编程比较简单,只要returnthis即可具......
  • java 数组新增
    数组由于一开始就设定了长度,所以是不能直接新增的。但是可以通过其他方法来实现。思路1:通过Arrays.asList()方法转换为ArrayList,调用ArrayList的add方法进行新增,最后再调......
  • Java多线程-线程生命周期(一)
    如果要问我Java当中最难的部分是什么?最有意思的部分是什么?最多人讨论的部分是什么?那我会毫不犹豫地说:多线程。Java多线程说它难,也不难,就是有点绕;说它简单,也不简单,需要理......
  • 探针技术-JavaAgent 和字节码增强技术-Byte Buddy
    探针技术-JavaAgent和字节码增强技术-ByteBuddy 能够基于JavaAgent编写出普通类的代理理解ByteBuddy的作用能够基于ByteBuddy编写动态代理1ByteBuddyByte......
  • java Stream流练习
    1.遍历/匹配(foreach/find/match)Stream也是支持类似集合的遍历和匹配元素的,只是Stream中的元素是以Optional类型存在的。Stream的遍历、匹配非常简单。List<Integer>list......
  • 利用java数组实现栈
    栈作为被广泛使用的数据结构,是在一个特定范围的存储单元中存储的数据,这些数据可以重新被取出使用,与线性表相比,它们的插入和删除受到更多的约束和限定,所以又称为限定性的线性......
  • Java实现 Serializable 序列化
    深度理解Java实现Serializable序列化概念把对象转换为直接序列的过程叫对象的序列化把字节序列恢复为对象的过程叫对象的反序列化用途对象持久化跨网络数据交换,远程过程调......
  • 初识java爬虫
    早上闲来无事,先总结一下昨天学到的最基本的的爬虫。首先说爬虫,其实就是向要爬取的网站发送一个http请求,取得反馈数据,然后解析数据,获得我们想要的数据。简单来说需要两步:......
  • dubbo java.nio.channels.ClosedChannelException、com.alibaba.dubbo.remoting.Remot
    客户端错误:com.alibaba.dubbo.rpc.RpcException:Invokeremotemethodtimeout.method:searchUser,provider:...cause:Waitingserver-sideresponsetimeoutbyscan......