学习笔记--单类和final修饰符

单类

有时候不需要创建同一个类的多个对象的时候,大多数时候重复创建一个类的多个对象没有意义,还会消耗电脑的内存;我们可以写一个getInstance()方法来确保只创建了一个类

 class singletonts { 
     private static singletonts instance;//创建一个test2的实例 instance 缓存已经创建的instance 实例   
     //对构造器使用private 来隐藏  
     private singletonts(){}   
     //提供一个静态的方法用来返回test2的实例,并且控制只生成一个test2对象  
     public static singletonts getInstance(){   
         //判断是否只生成一个test2对象     
     if(instance == null){       
         instance = new singletonts();//没有test2对象则创建一个   
     }   
         return instance;//若有原来的test2对象则返回,没有则返回创建的test2对象
     }
 }
public class test2{   
     public static void main(String[] args){  
         singletonts ts1 = singletonts.getInstance();//因为构造器被隐藏,只起到一个初始化的作用,需要使用公开的方法来创建对象,因为是静态方法,所以不需要实例化   
         singletonts ts2 = singletonts.getInstance();   
         System.out.println(ts1  == ts2);    }
}

Final修饰符的规则

public class finalts {
    final int F_a;
    final static String str;
    final int F_b;
    {
        F_a = 5;//可以在初始化块中对实例变量进行赋值
    }
    static {
        str = "nice to meet u";//对于类变量需要在静态初始化块中赋值
    }
    finalts(){
        F_b = 6;//构造器可以对即没有给定初始值,又没有在初始化块中指定默认值的变量赋值
    }
    public static void main(String [] args){
        final String str2 = "疯狂" + "JAVA" + 99;
        final String str3 = "疯狂" + "JAVA" + String.valueOf(99);//将99这一整型转换成字符
        System.out.println(str2 == str3);//因为str3中调用了String 方法 所以不能被当作“宏变量处理” 所以输出false
        
        
}
}

关于宏变量:

public class finalts {
    public static void main(String[] args) {
        String s1 = "疯狂JAVA";
        String str1 = "疯狂";
        String str2 = "JAVA";
        String st3 = str1 + str2;
        System.out.println(st3 == s1);//因为st3的值只是抽取str1 和str2的常量池中的字符串的运算结果,是一个普通变量  所以不能让st3指向常量池中的"疯狂JAVA"
        //如果需要输出True 只需要对str1  str2进行宏替换  这样可以在str3在定义时就被确定成str1+str2的字符
        //final String str3 = str1 + str2;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值