java面试题operate()_Java面试题final关键字详解

1. final关键字的含义

final表面意思就是不可更改的,恒量的意思;类似于C语言中的const关键字,指的是无法改变的量,这与静态标量static是有区别的,静态变量指的是只有一份存储空间,值是可以改变的。使用final一定原因是出于软件设计的角度,因为别人看到final这个关键字就知道是什么意思,达到心领神会的效果,但也正是由于这种"语义"的存在,在程序设计中要谨慎使用,以免误用。

在Java中final修饰的就是常量,而且变量名要大写;

Math类:

public static final double E = 2.7182818284590452354;

public static final double PI = 3.14159265358979323846;

//......java源码中好多变量都用final修饰

2. final的作用

final根据修饰位置的不同作用也不相同,针对三种情况:

1)修饰变量,被final修饰的变量必须要初始化,赋初值后不能再重新赋值。

注意:局部变量不在我们讨论的范畴,因为局部变量本身就有作用范围,不使用private、public等词修饰。

2)修饰方法,被final修饰的方法代表不能重写。

3)修饰类,被final修饰的类,不能够被继承。

注意:final修饰的类,类中的所有成员方法都被隐式地指定为final方法。

2.1 final修饰变量

被final修饰的变量必须显示的初始化,初始化可以以三种方式:1)定义时初始化,2)在构造器中设置值,3)在非静态块中为final实例变量设置值。

final修饰变量指的是:这个变量被初始化后便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可变,即不能再指向其他的对象。

public class Test01{

final int x1= 10000;

final int x2;

final int x3;

{

x2 = 20000;

}

Public exe3(){

this.x3 = 3000;

}

}

如果final修饰的变量是对象类型,那么不可更改指的是该变量不可以再指向别的对象,但是对象的值时可以更改的,比如:

final Operate operate = new Operate() ;// operate有一个普通变量i初始化为10

operate.i = 11;

operate.i = 12;

System.out.println(operate.i); //输出12

//上述是自定义类,即便是数组,List等集合类型,所保存的值也是可以更改的。

3. final和static的区别

static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变,看一下网上的一个例子:

public class Test {

public static void main(String[] args) {

String a = "hello2";

final String b = "hello";

String d = "hello";

String c = b + 2;

String e = d + 2;

System.out.println((a == c));

System.out.println((a == e));

}

}

//final类型,在编译阶段能够确定值。

//非final类型在编译阶段确定不了

输出:

true

false

public class Test {

public static void main(String[] args) {

String a = "hello2";

final String b = getHello();

String c = b + 2;

System.out.println((a == c));

}

public static String getHello() {

return "hello";

}

}

//即便是final类型,编译阶段也确定不了值。

输出

false

2)注意不要将final与finally、finalize()等搞混。

3)将类、方法、变量声明为final能够提高性能,这样JVM就有机会进行估计,然后优化。

4)接口中的变量都是public static final 的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值