A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 归☆夜↑『 中级黑马   /  2013-5-29 19:55  /  979 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当被final修饰的变量在满足以下条件时该变量就不再是一个变量而是一个直接量:
1)定义变量时就指定初始值
2)初始值在编译时就能确定下来,怎么才算能确定呢:
除了直接赋值基本类型的直接量外,如果被赋值的表达式只是基本的算术表达式或者字符串连接运算,没有访问普通变量、方法调用,这个初始值在编译时就能确定
  1.                          final int a = 5+2;//a相当于一个直接量
  2.                         //下面的字符串在编译的时期就能确定下来,相当于直接量;
  3.                         final String str = "黑马"+"itheima";//程序执行到此处,字符串常量池中会缓存一个"黑马itheima"字符串
  4.                         final String str2 = "黑马itheima";//str2直接量指向字符串常量池中的"黑马itheima"
  5.                         //由于有方法调用,str3在编译时期无法确定,程序执行到此处会动态生成一个新的字符串对象
  6.                         final  String str3 = "黑马"+new String("itheima");
  7.                         System.out.println(str =="黑马itheima");//输出"true"
  8.                         System.out.println(str==str2);//输出"true"
  9.                         System.out.println(str2==str3);   //输出"false"
  10.                         System.out.println(str3=="黑马itheima");  //输出false
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马