单例模式和string类(装箱拆箱)

(懒汉)单例模式

public class TestDemo {
    public static void main(String[] args) {
        People p1 = SingleLeton.getInstance();
        People p2 =SingleLeton.getInstance();
        System.out.println(p1+" "+p2);
    }
}
public class People {
}

public class SingleLeton {
    private static People people;//因为静态方法无法提供this,所以people属性也要换成静态才能在静态方法中调用。
    private SingleLeton(){
    }
    public static People getInstance(){
    //因为要在外面类中调用,而私有的
    又调不了,所以把方法换成静态static的。
        if(people==null){
            people = new People();
            return people;
        }
        return people;
    }
}

(恶汉)单例模式

public class SingleLeton {
    private static People people= new People;
    private SingleLeton(){
    }
    public static People getInstance(){
    //因为要在外面类中调用,而私有的
    又调不了,所以把方法换成静态static的。

        return people;
    }
}

string类

在这里插入图片描述
在这里插入图片描述

3.StringBuilder StringBuffer 字符串操作
相同点:都可以对字符串进行操作
不同点:
1)多线程环境: 线程安全:StringBuffer ,不安全:String StringBuilder
2)效率问题分析:不考虑多线程环境
出现 常量+常量 --> String
变量+常量 --> String StringBuilder
StringBuffer StringBuilder

String里的equals方法是重写的,众所周知String类是把把字符存在数组中的,所以equals的底层实现就是把数组遍历对比了。

String类里=号比较是比较地址。除非用intern方法
在这里插入图片描述
此时便为true;

long begin = System.currentTimeMillis();

类和对象的三大特征:封装,继承,多态。

装箱和拆箱

java两大数据类型
1.八个基本数据类型(没有String)
2.引用数据类型
在这里插入图片描述

在这里插入图片描述
基本数据类型 可以强制转换,引用数据类型不可以。
通过Integer定义的类型c,先装箱成引用数据类型,调用时在拆箱。点方法可以查看底层操作,也可以不点,系统自动点。

Interger 类型 会创建一个数组 大小在负128到+127之间的数都保存在数组的地址里。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值