分享

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

 樱花梦_张艺馨 2016-08-30
/*
final修饰局部变量的 问题:
   基本类型:基本类型的值不能发生改变。
   引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。
*/
=========================基本类型 测试一=============================
class Test{
 public static void main(String [] args){
  int x =10;
  x=100;
  System.out.println(x);
  final int y =20;
  
  System.out.println(y);
 }
}
结果:
100
20
==========================基本类型 测试二===========================
 class Person{
 
}
class Student extends Person{
}
class Test{
 public static void main(String [] args){
  int x =10;
  x=100;
  System.out.println(x);
  final int y =20;
  y =200;
  System.out.println(y);
 }
}
结果:
编译出错: 无法为最终变量 y 指定值
===========================引用类型 测试一==============================
 class Person{
 int age =10;
}
class Test{
 public static void main(String [] args){
  Person p =new Person();
System.out.println(p.age);
  p.age =100;
  System.out.println(p.age);
 }
}
结果:
10
100
=================================引用类型 测试二=====================
 class Person{
 int age =10;
}
class Test{
 public static void main(String [] args){
  Person p =new Person();
  System.out.println(p.age);
  p.age =100;
  System.out.println(p.age);
   final Person p2 =new Person();
  System.out.println(p2.age);
  p2.age =100;
  System.out.println(p2.age);
 }
}
结果:
10
100
10
100
=====================引用变量 测试三===========================
 class Person{
 int age =10;
}
class Test{
 public static void main(String [] args){
  Person p =new Person();
  System.out.println(p.age);
  p.age =100;
  System.out.println(p.age);
   final Person p2 =new Person();
  System.out.println(p2.age);
  p2.age =100;
  System.out.println(p2.age);
  p2 =new Person();
 }
}
结果:
编译报错:无法为最终变量 p2 指定值
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多