static与final关键字
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
1、修饰类: 当用final修饰一个类时,表明这个类是最终类,不能被继承。如果一个类你不想让它被继承,就可以用final进行修饰。
2、修饰方法:使用final修饰的方法不能被子类重写。(最终方法)
3、修饰变量: 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
由final修饰的变量,是常量,一旦初始化后,它的值不能被修改,即不能被重新赋值,主要是项目中应用的常量的抽取:比如URL常量、路径常量、数字常量等.不能让人轻易修改。
注意: 当final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。
public static final String URL_GET = "/Api/GetMaintenanceType.html";//保养列表
————————————————————————————————>
Static关键字: 只能用于修饰成员变量和成员方法。
Static修饰的成员变量就成了类变量,随着类的加载而加载,生命周期和类一样。
Static修饰的成员方法变成了类方法,可以直接通过类名调用。和.class一样存在于方法区。
非静态的成员方法与成员变量的调用,只能通过创建对象调用。类名.方法名等;而静态的成员可以通过类名和创建对象调用(尽量用类名调用,不要创建对象)。
被修饰的成员有以下特点:
1)随着类的加载而加载、
2)优先于对象存在、
3)被所有对象所共享(比较节约空间)、(可以用代码证明)
4)可以直接被类名调用, Constant.BASE_URL、NetManager.getData();
注意事项:
1)静态方法只能访问静态的成员变量,不能访问非静态的成员变量。 为什么?因为静态成员先于对象存在,比对象先创建。当静态成员存在时,对象还没有创建。他们的生命周期不一样。但是非静态的可以访问静态的。
2)静态方法中不可用this/super关键字。为什么:this指向调用本方法的对象的引用(对象还没有创建呢)
由static修饰的成员变量、成员方法和类同时进行加载到内存,所以优先于对象存在。
一般在工具类中使用静态、static;
类是什么时候加载到内存的? 对象是什么时候加载到内存的?
内存分区图:
堆内存: 用于存储对象
栈内存: 用于存储基本类型变量区,使用完成后,所占空间会自动释放。
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
静态成员与非静态成员的区别:
生命周期:
静态成员随着类的加载而加载,随着类的消失而消失,生命周期长;
普通成员随着对象的存在而存在,随着对象的消失而消失。
存放位置:静态成员存在于方法区中,非静态成员存在于堆中。
static对性能的影响:
为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”! 常量必须要加static关键字修饰
static就是静态变量,声明为static的变量实质上就是全局变量,如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象!
class ViewHolder {TextView item_by_text1,item_by_text2;}
没有必要时请不用使用静态变量,生命周期比较长,不能被回收,占用内存。
static与final关键字相关推荐
- Java:static和final关键字的区别与比较
文章目录 前言 一.final关键字 二.static关键字 总结 前言 本文记录笔者在复习Java基础期间学习的static和final关键字 一.final关键字 final关键字具有如下特点 f ...
- Java 中关于this、static、final 关键字的使用
this关键字 this 关键字主要有以下几种作用: 1:当类成员变量与局部成员变量重名时,可以用this 关键字把局部成员变量赋值给类成员变量 2:this可以用来在构造函数中调用其他构造函数 ...
- [转载] java(三)对象的序列化与static、final关键字
参考链接: Java中的final最终变量 java对象的序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程.java中存有Clon ...
- java static final关键字_Java的static与final关键字
版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 static:(静态修饰符)面向对象中static修饰的内容是隶属于类,而不是直接隶属于对象的,所以static修 ...
- JAVA day07 权限,封装,JavaBean(规范代码),static、final关键字
1.权限 在Java中提供了四种访问权限,使⽤不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限: public:公共的 protected:受保护的 default(friendly):默认 ...
- 黑马程序员——static和final关键字
---------------------- android培训.java培训.期待与您交流! ---------------------- 一丶Static关键字 1.static是一个修饰符,用于 ...
- (1)访问控制 (2)final关键字 (3)对象创建的过程 (4)多态
1.访问控制(笔试题) 1.1 常用的访问控制符 public - 公有的 protected - 保护的 啥也不写 - 默认的 private - 私有的 1.2 访问控制符的比较 访问控制符 访问 ...
- 浅谈Java中的final关键字
浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...
- 浅析Java中的final关键字
浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...
- 【转】浅析Java中的final关键字
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...
最新文章
- Endnote X8云同步:家里单位实时同步文献笔记,有网随时读文献
- Oracle经典教程学习笔记
- 如何在开发资源或能力不足的情况下进行敏捷开发?
- BZOJ2705 [SDOI2012]Longge的问题 欧拉函数
- 专家:我国青少年网络安全立法还需完善
- 14门Linux课程,打通你Linux的任督二脉!
- 微软面向初学者的机器学习课程:1.4-机器学习技术
- 工业以太网交换机选机攻略
- CarAppFocusManager
- python sqlite3
- SQLServer 2012 可视化窗口中,设置“时间”默认值为“当前时间
- MySQL之mysqldump的使用
- 博客园鼠标点击烟花特效
- 【linux】安装python依赖库confluent_kafka
- 拓端tecdat|使用Python中Keras的LSTM递归神经网络进行时间序列预测
- 一次非常成功的项目经验分享和糟糕项目的对比
- unity商店demo学习:跑酷游戏
- API接口设计的五大公共参数
- c语言中1 2 3怎么运算符号,C语言运算符和表达式(一)
- 树莓派2B使用360随身WiFi2代连接WiFi