final变量中的宏替换
2016-05-09 21:44
211 查看
源代码1:
运行结果:
源代码2:
源代码3:
1.变量在编译时是无法确定的,而常量(直接量在编译时)是确定的;则上面源代码1中s1,s2是可以确定的,它们都指向常量池中的疯狂java,所以s1=s2;而str1,str2由于是变量,它们是不可以确定的,则它们指向就不同了,所以,str2!=str2;
2.在源代码2中由于将str1,str2都用了final修饰,都将他们定义为了宏定义,所以str1,str2将不再是变量;
3.对于final实例变量而言,只有在定义该变量时指定初始值才会有宏变量的效果,由于源代码3中在定义时并没有初始化,所以没有初始化效果,所以此时str1,str2是未知量,所以str1!=str2.
public class Java15 { public static void main(String[] args) { String s1="疯狂java"; String s2="疯狂"+"java"; System.out.println(s1==s2); String str1="疯狂"; String str2="java"; String s3=str1+str2; System.out.println(s1==s3); } }
运行结果:
源代码2:
public class Java15 { public static void main(String[] args) { String s1="疯狂java"; String s2="疯狂"+"java"; System.out.println(s1==s2); final String str1="疯狂"; final String str2="java"; String s3=str1+str2; System.out.println(s1==s3); } }运行结果:
源代码3:
public class Java15 { public static void main(String[] args) { String s1="疯狂java"; String s2="疯狂"+"java"; System.out.println(s1==s2); final String str1; str1="疯狂"; final String str2; str2="java"; String s3=str1+str2; System.out.println(s1==s3); } }运行结果:
1.变量在编译时是无法确定的,而常量(直接量在编译时)是确定的;则上面源代码1中s1,s2是可以确定的,它们都指向常量池中的疯狂java,所以s1=s2;而str1,str2由于是变量,它们是不可以确定的,则它们指向就不同了,所以,str2!=str2;
2.在源代码2中由于将str1,str2都用了final修饰,都将他们定义为了宏定义,所以str1,str2将不再是变量;
3.对于final实例变量而言,只有在定义该变量时指定初始值才会有宏变量的效果,由于源代码3中在定义时并没有初始化,所以没有初始化效果,所以此时str1,str2是未知量,所以str1!=str2.
相关文章推荐
- Linux 下配置网卡的别名即网卡子IP的配置 转
- Spring AOP 创建切面
- linux 下查看系统资源和负载,以及性能监控
- 开始学习HANA: In-memory Computing with SAP HANA on Lenovo X6 Systems
- Windows 08R2_破解管理员密码
- Hue-安装-配置-添加Oozie
- [javaSE] 并发编程(线程间通信)
- java读取xml文件的方法汇总
- awk的使用---业务需求
- 原型设计:Axure 8.0正式版发布 附下载地址和汉化包
- ML_Liner Regression[机器学习]
- SharedPreferences
- HDU 4196 Remoteland
- 元素的尺寸
- SQLite 介绍
- imx6q平台将gpio口设置成高阻的方法
- 文章标题
- leetcode143 Reorder List
- 微信读书 iOS 性能优化总结
- 对用java语言生成pdf文件的一些补充