您的位置:首页 > 职场人生

java面试题:final修饰局部变量的问题

2016-09-27 10:36 351 查看
/*

面试题:final修饰局部变量的问题

基本类型:基本类型的值不能发生改变。

引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。

*/

class Student {

int age = 10;

}

class FinalTest {

public static void main(String[] args) {

//局部变量是基本数据类型

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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: