final 宏替代

   今天学到final关键字的时候,看到了用final实现的宏替代,想自己在这里总结一下学习心得,主要用来以后自己复习巩固,第一次写博客,有错误欢迎指正。

       首先今天是因为看到下面这一段代码对final关键字产生了疑惑

public class FinalTest {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
	String str1="Word";
	final String str2="Word";

        final String finalstr1="Hello"+str1;
        final String finalstr2="Hello"+str2;
        final String finalstr3="HelloWord";

        System.out.println(finalstr3==finalstr1);  //false
        System.out.println(finalstr3==finalstr2);  //true
        
	}

}

          后来才知道原来是final修饰符不仅可以定义终端变量,还可以实现"宏替代"。而定义宏变量的三个条件分别是

1)使用final修饰符修饰

2)在定义该变量时就初始化

3)保证该初始值在编译时就被确定下来

        看到第三个条件时我就在想到底哪些值才能在编译时就能确定的呢?后来才知道原来这些值就是编译期常量,然后通过以下代码进行测试了一遍。

public class Test{
    public static void main(String args[]){
//          System.out.println(Data.i1);
          System.out.println(Data.i2);//静态初始化
//        System.out.println(Data.b1);//静态初始化
//        System.out.println(Data.b2);
//        System.out.println(Data.s1);
//        System.out.println(Data.s2);//静态初始化
//        System.out.println(Data.a); //静态初始化
//        System.out.println(Data.e); //静态初始化
        
    }
}
class Data{
  static{
      System.out.println("静态初始化");
  }
  public static final int i1 = 7;
  public static final Integer i2 = 5;
  public static final Boolean b1 = true;
  public static final boolean b2 = true;
  public static final String s1 = "0";
  public static final String s2 = new String("0");
  public static final A a = new A();
}
class A{
 
}

        从代码结果上看可以总结为:java中的编译期常量包括java八大基本类型和直接声明的string类型。当然要求是常量就必须要final修饰。

      所以回到我们最开始的那段代码发现str1和str2的区别在于str2加了final修饰而且是直接声明的string类型,故str2就可以实现宏替代,所以在编译时编译器就会让finalstr2和finalstr3都指向字符串池中缓存的字符串”“hello world”,所以它们就是同一个对象。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值