java final 面试题_java final关键字使用及面试题重点

java final关键字使用及面试题重点

1. 在java中声明类、属性和方法时,可以使用关键字final来修饰,表示“最终的”。2.java 面试题final关键字知识点,例题

1. 在java中声明类、属性和方法时,可以使用关键字final来修饰,表示“最终的”。

final修饰类:(俗称太监类不能有孩子) 提高安全性,提高程序的可读性 这个类就不能被继承。如:String类、StringBuffer类、System类

//class SubString extends String{

//

//}

final class A{

}

//class B extends A{

//

//}

final修饰方法:(确定下功能,没有被子类重写的必要) 不能被子类重写。如:Object的getClass();功能已经确定下来,就算子类重写了该方法后,也是实现一样的功能,所以没有必要被子类重写。

class C{

public final void method1() {

System.out.println("I am method1");

}

}

class E extends C{

public void method1() {

//        System.out.println("I am method1 for D");

//    }

}

final修饰属性:(已经是常量) 此属性就是一个常量,一旦初始后,不可再被赋值。习惯上,重用大写字符表示。 此常量在哪里赋值:①此常量不能使用默认初始②可以显示的赋值、代码块、构造器 注:显示赋值和代码块赋值只能有其中的一个 变量用static final修饰:全局常量,如Math类的PI

public class Test {

public static void main(String[] args) {

C c = new C();

System.out.println(c.getClass());

System.out.println(Math.PI);

}

}

class D{

//    final  int I;//常量不能使用默认的赋值

final  int I = 11;

final  double PI;

final String NAME;

public void m1(){

System.out.println(I);

//        I = 10;

}

{

PI = 3.14;

}

public D() {

NAME = "DD";

}

public D(String name) {

this();

//        NAME = "DD";

}

}

//c

付:后续需要知道final 与 finally finalize()区别

Object.finalize()//辣鸡回收的,显示把内存中对象清理掉

2.java 面试题final关键字知识点,例题

排除错误例题一

/*

* 错误,调用方法的时候已经对x进行赋值,不能再对其进行++操作。

*/

public class Something {

public int addOne(final int x) {

return ++x;

}

}

排除错误例题一

/*

* 正确,因为final修饰的类,但++的却是其对象,说明类属性改变,类不一定跟着改变

*/

public class Something {

public static void main(String[] args) {

Other o = new Other();

new Something().addOne(o);

}

public void addOne(final Other o) {

o.i++;

}

}

class Other {

public int i;

}

你可能感兴趣的:(java,final,面试题)