Java中static、final、static final的区别

Wesley13
• 阅读 595

说明:不一定准确,但是最快理解。

final:

final可以修饰:属性,方法,类,局部变量(方法中的变量)

final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。

final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。

final修饰的属性表明是一个常数(创建后不能被修改)。

final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承。

对于基本类型数据,final会将值变为一个常数(创建后不能被修改);但是对于对象句柄(亦可称作引用或者指针),final会将句柄变为一个常数(进行声明时,必须将句柄初始化到一个具体的对象。而且不能再将句柄指向另一个对象。但是,对象的本身是可以修改的。这一限制也适用于数组,数组也属于对象,数组本身也是可以修改的。方法参数中的final句柄,意味着在该方法内部,我们不能改变参数句柄指向的实际东西,也就是说在方法内部不能给形参句柄再另外赋值)。

static:

static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)

static修饰的属性的初始化在编译期(类加载的时候),初始化后能改变。

static修饰的属性所有对象都只有一个值。

static修饰的属性强调它们只有一个。

static修饰的属性、方法、代码段跟该类的具体对象无关,不创建对象也能调用static修饰的属性、方法等

static和“this、super”势不两立,static跟具体对象无关,而this、super正好跟具体对象有关。

static不可以修饰局部变量。

static final和final static:

static final和final static没什么区别,一般static写在前面。

static final:

static修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。

static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
java核心技术36讲笔记
JavaBasic谈谈final、finally、finalize有什么不同?典型回答:final可以用来修饰类、方法、变量,分别有不同的意义,final修饰的class代表不可以继承扩展,final的变量是不可以修改的,而final的方法也是不可以重写的(override)。finally则是
Wesley13 Wesley13
2年前
java中final和static
 final的用法:final的意思是最终的,最后的额,不可变的,在java中也具有相似的含义。  final修饰基础数据表示把该数据修饰成常量,意味着不可修改,不可变。  final修饰对象的引用的时候,表示该引用不可变,但是引用的结果是可变的。这里和修饰数组相似,修饰数组的时候数组里边的内容是可变的。  final定义的
Easter79 Easter79
2年前
static & final
static被static修饰的方法,是类的方法,被static修饰的属性,是类的属性。static如果放在属性上,publicclassPerson1{   publicstatic Stringaaa"中国人";      publicStr
Wesley13 Wesley13
2年前
java常用的关键字
1、final关键字final关键字可用于修饰类、方法以及变量。修饰类:该类不能被继承,该类的所有方法和成员都被隐式地指定为final。修饰方法:锁定方法,任何继承类都不能修改他,所有的private方法都被隐式地指定为final方法。修饰变量:若修饰的变量为基本数据类型,该变量值被赋值后不可改变;若修饰的变量为引用类型的变量,该变量
Stella981 Stella981
2年前
BATJ的常见java面试题
JAVA基础1.JAVA中的几种基本数据类型是什么,各自占用多少字节。2.String类能被继承吗,为什么。不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。3.String,Stringbuffer,StringBuilder的区别。String字符串常量StringBuffer
Wesley13 Wesley13
2年前
Java深究之final、finally、finalize三者的区别
       在java中final、finally、finalize三者在写法上很相近,但是实际含义和作用却是相差甚远。本文主要是来深层的研究下这三者的用法以及之间的区别1.final属性:java中的关键字,修饰符作用:用于修饰类、成员方法、变量(成员变量、局部变量)用法:如果类被声明为final,那么该类就不能再派生出新的子类
Stella981 Stella981
2年前
C++11新特性之final override标识符
final:  final修饰符可用于修饰类,放在类名后面,被final修饰符修饰的类不能被继承。示例代码://正确的示范include<iostreamclassA{public:voidshow_a_info(){s
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
2年前
Java开发岗位面试题归类
一、Java基础1\.String类为什么是final的。(_1、由于String类不能被继承,所以就不会被修改,这就避免了因为继承引起的安全隐患;__2、String类在程序中出现的频率比较高,如果为了避免安全隐患,在它每次出现时都用final来修饰,这无疑会降低程序的执行效率,所以干脆直接将其设为fin
Wesley13 Wesley13
2年前
Java修饰符类型
修饰符是一种添加到定义以更改其含义的关键字。Java语言有各种各样的修饰符,包括以下两种Java访问修饰符例如:private,protected,public等。Java非访问修饰符例如:static,final等。要使用修饰符,请在类,方法或变量的定义中包含修饰符关键字。修饰符位于语句之前,