/*
面試題:final修飾局部變數的問題
基本類型:基本類型的值不能發生改變。
參考型別:參考型別的地址值不能發生改變,但是,該對象的堆記憶體的值是可以改變的。
*/
class Student {
int age = 10;
}
class FinalTest {
public static void main(String[] args) {
//局部變數是基礎資料型別 (Elementary Data Type)
int x = 10;
x = 100;
System.out.println(x);
final int y = 10;
//無法為最終變數y分配值
//y = 100;
System.out.println(y);
System.out.println("--------------");
//局部變數是引用資料類型
Student s = new Student();
System.out.println(s.age);
s.age = 100;
System.out.println(s.age);
System.out.println("--------------");
final Student ss = new Student();
System.out.println(ss.age);
ss.age = 100;
System.out.println(ss.age);
//重新分配記憶體空間
//無法為最終變數ss分配值
ss = new Student();
}
}
————————————
/*
final修飾變數的初始化時機
A:被final修飾的變數只能賦值一次。
B:在構造方法完畢前。(非靜態常量)
*/
class Demo {
//int num = 10;
//final int num2 = 20;
int num;
final int num2;
{
//num2 = 10;
}
public Demo() {
num = 100;
//無法為最終變數num2分配值
num2 = 200;
}
}
class FinalTest2 {
public static void main(String[] args) {
Demo d = new Demo();
System.out.println(d.num);
System.out.println(d.num2);
}
}