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);
}
}
面试题: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);
}
}
相关文章推荐
- java匿名类使用的局部变量只能用final修饰?
- 关于Java Final 修饰的局部变量,多线程可以访问
- 匿名内部类访问局部变量加final修饰的问题
- 局部变量被内部类访问时必须用final修饰的问题
- 为什么局部变量必须以final修饰(或者有final实效:java8)才可以在内部类中使用?
- 关于java匿名内部类参数为什么要用final修饰的问题
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
- java中内部类访问局部变量的时候,为什么变量必须加上final修饰
- Java--局部内部类在访问他所在方法中的局部变量必须用final修饰
- 局部内部类访问的局部变量不必用final修饰,java8中
- Java中局部内部类可以访问它所在方法中定义的final修饰的局部变量的合理解释
- Java8中 局部内部类访问的局部变量不必用final修饰
- 深入理解final在Java和Android中修饰局部变量的意义
- java中的 final 关键字 修饰引用时的问题
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
- 为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰
- 关于final修饰局部变量问题
- 你不可不知的final(2)-修饰局部变量(失手率极高的一道面试题)
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
- 于java里方法的内部类只能访问被final修饰的局部变量和.