Java--static、final、static final的区别
一、final
- final修饰类:表示该类不能被继承;final类中的方法默认是final的;
- final修饰方法:表示该方法无法被重写;
- final修饰方法参数:表示在变量的生存期中它的值不能被改变;
- final修饰变量:包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值;
成员变量与局部变量的区别:
- 在类中位置不同。成员变量:在类中方法外。局部变量:在方法定义中或者方法声明上。
- 在内存中的位置不同。成员变量:在堆内存。 局部变量:在栈内存。
- 生命周期不同。成员变量:随着对象的创建而存在,随着对象的消失而消失。 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
- 初始化值不同。成员变量:有默认值初始化。局部变量:没有默认值初始化,必须定义,赋值,然后才能使用。
- 另外,局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
二、static
- 修饰成员变量:将其变为类成员,从而实现所有对象对于该成员的共享;
- 修饰成员方法:将其变为类方法,可以直接使用“类名.方法名"的方式调用,常用于工具类;
- 静态代码块:将多个类成员放在一起初始化,用来优化程序性能,它只会在类加载的时候执行一次。
静态变量和非静态变量的区别是:
- 静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
- 非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
三、static final:同时使用static和final修饰的成员在内存中只占据一段不能改变的存储空间。
- 修饰变量:表示一旦给值就不可修改,可以通过类名可以直接访问;
- 修饰方法:表示不可覆盖,可以通过类名直接访问。
Java--static、final、static final的区别的更多相关文章
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- Java中static final 与 final 的区别(转载)
转自:http://advance0683.iteye.com/blog/1107732 Java中static final 与 final 的区别: 例子: Java代码 import java.u ...
- Java中 static、final和static final的特点及区别
final: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行时,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期 ...
- java的static final和final的区别
转自:https://www.cnblogs.com/EasonJim/p/7841990.html 说明:不一定准确,但是最快理解. final: final可以修饰:属性,方法,类,局部变量(方法 ...
- Java中static、final和static final(final static)的区别(转)
大佬的总结(大赞!) final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关, ...
- java基础复习:final,static,以及String类
2.final 1)为啥String是final修饰的呢? 自己答: 答案: 主要是为了“效率” 和 “安全性” 的缘故.若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所 ...
- java修饰符public final static abstract transient
JAVA 修饰符public final static abstract transient 关键字: public final static abstract ... 1.public prot ...
- JAVA 构造器, extends[继承], implements[实现], Interface[接口], reflect[反射], clone[克隆], final, static, abstrac
记录一下: 构造器[构造函数]: 在java中如果用户编写类的时候没有提供构造函数,那么编译器会自动提供一个默认构造函数.它会把所有的实例字段设置为默认值:所有的数字变量初始化为0;所有的布尔变量设置 ...
- Java final static关键字
Java中的final关键字 使用 final 关键字做标识有 “最终的” 含义. final 可以修饰 类.方法.属性.变量 final 修饰类: 则该类不允许被继承 final 修饰方法:则该方法 ...
- static final 和final的区别
学习java的时候常常会被修饰符搞糊涂,这里总结下static final和final的区别. static是静态修饰关键字,可以修饰变量和程序块以及类方法: 当定义一个static的变量的时候jvm ...
随机推荐
- mysql压缩版的安装教程
1. 首先创建 my.ini,在mysql解压目录下的bin文件夹中新建一个名为 my.ini 的文件,内容为 [client] port=3306 default-character-set ...
- Windows 下 Chrome 快捷键大全
Windows 下 Chrome 快捷键大全,即 Google 浏览器的快捷键. 1 Ctrl+N 打开新窗口. 2 Ctrl+T 打开新标签页. 3 Ctrl+Shift+N 在隐身模式下打开新窗口 ...
- [SLAM] 02. Some basic algorithms of 3D reconstruction
链接:http://www.zhihu.com/question/29885222/answer/100043031 三维重建 3D reconstruction的一个算法思路介绍,帮助理解 首先一切 ...
- 使用srvany.exe把程序安装成windows服务的方法
http://mazhihui.iteye.com/blog/1294431 srvany.exe是什么? srvany.exe是Microsoft Windows Resource Kits工具集的 ...
- 3D物体识别的如果检验
3D物体识别的如果验证 这次目的在于解释怎样做3D物体识别通过验证模型如果在聚类里面.在描写叙述器匹配后,这次我们将执行某个相关组算法在PCL里面为了聚类点对点相关性的集合,决定如果物体在场景里面的实 ...
- HDOJ 4276 The Ghost Blows Light(树形DP)
Problem Description My name is Hu Bayi, robing an ancient tomb in Tibet. The tomb consists of N room ...
- Python easyGUI 文件对比 覆盖保存
#在35-3的基础上进行优化,当用户点击ok按钮的时候,对打开的文件进行检查是否修改.# 如果修改过,则提示覆盖保存.放弃保存.另存为并实现相应的功能 1 import easygui as g im ...
- Android图片的合成示例
package com.example.demo; import android.os.Bundle; import android.app.Activity; import android.grap ...
- java.lang.NumberFormatException: For input string: "${jdbc.maxActive}"
一.问题 使用SpringMVC和MyBatis整合,将jdbc配置隔离出来的时候出现下面的错误,百度了很久没有找到解决方法,回家谷歌下,就找到解决方法了,不得不说谷歌就是强大,不废话,下面是具体的错 ...
- Linux误删文件后恢复数据
在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs.R-Linux.ext3grep.extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复 ...