Java--static、final、static final的区别
2024-10-13 10:39:42
一、final
- final修饰类:表示该类不能被继承;final类中的方法默认是final的;
- final修饰方法:表示该方法无法被重写;
- final修饰方法参数:表示在变量的生存期中它的值不能被改变;
- final修饰变量:包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值;
成员变量与局部变量的区别:
- 在类中位置不同。成员变量:在类中方法外。局部变量:在方法定义中或者方法声明上。
- 在内存中的位置不同。成员变量:在堆内存。 局部变量:在栈内存。
- 生命周期不同。成员变量:随着对象的创建而存在,随着对象的消失而消失。 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
- 初始化值不同。成员变量:有默认值初始化。局部变量:没有默认值初始化,必须定义,赋值,然后才能使用。
- 另外,局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
二、static
- 修饰成员变量:将其变为类成员,从而实现所有对象对于该成员的共享;
- 修饰成员方法:将其变为类方法,可以直接使用“类名.方法名"的方式调用,常用于工具类;
- 静态代码块:将多个类成员放在一起初始化,用来优化程序性能,它只会在类加载的时候执行一次。
静态变量和非静态变量的区别是:
- 静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
- 非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
三、static final:同时使用static和final修饰的成员在内存中只占据一段不能改变的存储空间。
- 修饰变量:表示一旦给值就不可修改,可以通过类名可以直接访问;
- 修饰方法:表示不可覆盖,可以通过类名直接访问。
最新文章
- git简易操作
- iOS之加密的三种方法
- <;<;<; java异常The import java.util cannot be resolved
- JAVA 之print,printf,println
- 深入了解SQL注入绕过waf和过滤机制
- delphi数组作为参数传值
- Dr.Kong的艺术品
- WCF 在VS中,添加服务引用,地址输入http://ip/Service.svc,点击前往,提示错误,内容如下:
- [Locked] Sparse Matrix Multiplication
- CSS里的 no-repeat 是什么意思
- Ubuntu 配置Tomcat环境
- 微信网页签名失败(invalid signature)
- Android - 分享内容 - 添加一个简单的分享操作
- (转载)html中div使用自动高度
- ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门
- php之微信公众号发送模板消息参观模仿
- 使用 LD_PRELOAD 变量拦截调用
- WEB测试重点
- 打包pyinstaller
- 【转载】MSXML应用总结 开发篇(上)
热门文章
- Java多线程-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier
- 关于float样式
- ios 查看模拟器路径以及应用的文件夹
- WSGI简介
- SaltStack 批量管理任务计划
- Unity使用OpenGL绘制线段
- U3D功能脚本备忘
- codeforces水题100道 第十九题 Codeforces Round #109 (Div. 2) A. I_love_%username% (brute force)
- 《转》Python学习(19)-python函数(二)-关于lambda
- 嵌入式系统C编程之堆栈回溯(二)