java static和final的用法总结

news/2024/7/23 9:29:12 标签: java, static, final

final

1.final变量:

在变量前面加上final关键字,这个变量一旦被初始化就不可以改变,这里不可改变是对基本类型来说是其值不可变,而对于对象变量来说是其引用不可以变。初始化可以在两个地方,一是其定义处,二是在构造函数中。这两个地方只能选其中之一,不能同时选。

当你定义一个final变量时,jvm会将其分配到常量池中

当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

2.final方法:

· 如果一个方法不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。

使用final方法的两个原因:

其一,把方法锁定,子类继承时修改它的意义和实现

其二,高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率吧。

static

static修饰的成员变量和成员方法独立于该类的任何对象。

1.static变量:

当你定义一个static的变量的时候jvm会将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存

 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是: 
    对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

2.static方法:

  静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。

3.static代码块

      static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。


对于经常遇到的final static 声明的变量可以看成是“全局常量”!!!!!



http://www.niftyadmin.cn/n/1399700.html

相关文章

九度 题目1008:最短路径问题

最短路径问题,首先想到了贪心算法实现的dijkstra算法;这道题我用了链表的存储方式,其实用邻接矩阵也可以,主要为了练手,并且链表比矩阵要节约空间; 题目描述:给你n个点,m条无向边&am…

如何将二维数组作为函数的参数传递

声明: 如果你是得道的大侠,这篇文章可能浪费你的时间,如果你坚持要看,我当然感觉很高 兴,但是希望你看完了别骂我!如果你发现我这篇文章有错误的话,你可以提出批评以及 指正,我将很乐…

九度 题目1448:Legal or Not

题目1448:Legal or Not时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1071 解决:485 题目描述:ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmoniou…

java 受检异常和非受检异常

总是记不住什么是受检异常,什么是非受检异常,有时甚至弄混淆,特此简单记录以便复习之用。 异常的分类: java.lang.Throwable 1.Error错误:JVM内部的严重问题。无法恢复。程序人员不用处理。 2.Exception异常&#xff1…

九度 题目1450:产生冠军

题目描述:有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打…

九度 题目1045:百鸡问题

题目描述:用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。 输入:测试数据有多组,输入n。 输出:对于每组输入,请输出…

九度 题目1456:胜利大逃亡

题目描述:Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,I…

Ascii、ANSI、unicode和utf-8的详解和区别

今天小伙伴问我ansi和ascii的区别,unicode是什么东西。我竟无言以对,然后通过查找资料,整理如下,方便以后复习之用。 1. ASCII和Ansi编码 字符内码(charcter code)指的是用来代表字符的内码.读者在输入和存储文档时都要使用内…