【Java_基础】java中static与final关键字的区别
1.static关键字
经static关键字修饰的成员被该类的所有对象所共享,任意一对象对静态变量的修改其它对象都是可见的。通常通过类名来引用static成员。类加载的连接阶段将会为静态成员变量在jvm内存的方法区分配空间,并在类的初始化阶段赋初值。
一个类的static成员变量只有“一份”(存储在方法区),无论该类创建了多少对象。看如下的示例:
public class StaticDemo {
public static void main(String[] args) {
People p1 = new People(18);
People p2 = new People(19);
People p3 = new People(20); } } class People {
private static int num;
private int age;
public People(int age) {
this.age = age;
System.out.println(++num);
}
}
输出结果:
1
2
3
2.final关键字
1)final修饰变量:意为其值不可改(即为常量),在类的编译阶段成员常量就会被初始化,并保存在class文件的静态常量池中,待类加载的时候再将静态常量池中的常量读取到jvm内存方法区,保存在方法区的运行时常量池中。
2)final修饰方法:表示方法不能被重写。
3)final修饰类:表示该类为终极类,不能被继承。JDK中的一些基本类库被定义成final,例如String,Math,Integer等,这样可以防止对系统造成危害。
final和static关键字的区别:final可修饰局部变量,任何位置经final修饰的变量其值是不可改的;static不可修饰局部变量,经static修饰的变量其值是可以更改的。
【Java_基础】java中static与final关键字的区别的更多相关文章
- java中static,super,final关键字辨析
1:static关键字 利:1)对对象的共享数据提供单独的空间存储. 2)修饰的方法可以直接被类名调用 弊:1)生命周期长. 2)访问出现限制(只能访问静态) 它可以有静态方法,静态类,静态变量 2: ...
- Java 中 static 和 volatile 关键字的区别?
static指的是类的静态成员,实例间共享 volatile跟Java的内存模型有关,线程执行时会将变量从主内存加载到线程工作内存,建立一个副本,在某个时刻写回.valatile指的每次都读取主内存的 ...
- Java的static和final关键字的用法
static关键字的用法 static的意思是"'静态的",在java里面可用于修饰属性和方法. static关键字的应用应注意以下几种情形: 1.static作用于某个字段,一个 ...
- [java基础]java中static关键字
1.static概念 static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序 ...
- Java中static、final、static final的区别(转)+transient
说明:不一定准确,但是最快理解. final: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final ...
- java中static 和 final 的一些使用规则
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
- Java中static、final用法小结
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
- Java中static、final用法
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
- Java中static、final用法小结(转)
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
随机推荐
- JQuery Easyui/TopJUI表格基本的删除功能(删除当前行和多选删除)
需求:数据表格datagrid实现删除当前行和多选删除的功能. html <a href="javascript:void(0)" data-toggle="top ...
- C 语言实例 - 连接字符串
C 语言实例 - 连接字符串 C 语言实例 C 语言实例 使用 strcat() 连接两个字符串. 实例 #include <stdio.h> int main() { ], s2[], ...
- moiezen(2018.10.16)
题意:有n件行李,编号为1~n.行李的质量是模 P 意义下的(P不一定是质数).有 k 个背包,要装下这些行李,为了方便在背包中找行李,每个背包中的行李编号是连续的,允许有背包为空.我们想让最重的背包 ...
- avalon使用体验
最近在用avalon做项目,使用的感受是,它确实会比angualr学习成本更低,我不需要花很多时间去了解它的功能,没有指令.没有服务,花一个晚上看看API就差不多能着手用了.avalon的视图它提供了 ...
- Codeigniter CI 框架的一些优化思考
前段时间使用CI做了两个小项目,对CI的流程和设计理念也有了一些新的认识.CI架构的一些基本优化这里就不做介绍了,如搬离system 文件夹等. 最近有一个稍微大一点的系统,也准备拿CI来做.设计时遇 ...
- hdu4578Transformation(线段树多个lz标记)
这里以3次方来举例讲一下这题的做法,其它维类似. 如果要求某一个值的3次方那么sum = t^3,设t = x+y.那也就是sum = (x+y)^3. 假如我让每个数都加z t = x+y+z,我可 ...
- @RequestParam和@ResponseBody注解的区别(转)
@RequestParam 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容.(Http协议中,如果不指定Content-Type, ...
- jQuery deferred应用之ajax详细源码分析(二)
在上一节中,我只贴出了$.Deferred的源码分析,并没用讲解怎么使用它,现在我们先看看$.ajax是如何使用它,让我们进行异步任务的处理. 如果没看上节的代码,请先稍微了解一下jQuery Def ...
- list control 【转】
1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的ite ...
- linux winqq 不能输入中文的解决办法
wineqq的运行脚本是/usr/share/deepinwine/qqintl/wine-qqintl编辑此脚本,在最开始加入: export XMODIFIERS="@im=fcitx& ...