常量池

常量池:

相同的值只储存一份,节省内存,共享访问

保存在编译期间就已经确定的数据

是一块特殊的内存

设置有常量池的基本类型的包装类:

boolean、byte、short、integer、long、character

基本类型包装类没有设置常量池的:

float、double

Integer n1 = 127;
Integer n2 = 127;
System.out.pringln(n1 == n2);//输出true

Integer n3 = 128;
Integer n4 = 128;
System.out.pringln(n3 == n4);//输出faluse

Integer n5 = new Integer(127);
System.out.println(n1 == n5);//

基本类型和包装的字符串有两种创建方式

1.常量式赋值创建,放在栈内存(将被常量化)

Interger a = 10;
String b = "abc";

2.new对象进行创建,放在堆内存中

Interger c = new Interger(10);
String d = new String("abc");

自动装箱与自动拆箱:

int i1 = 10;
//自动装箱  10本来是int 自动变成Integer
Integer i2 = 10;
System.out.println(i1 == i2);//true
//比较时包装类会自动拆箱

Integer i3 = new Integer(10);
//new出来的对象 放在堆内存中
System.out.println(i1 == i3);//true
// 自动拆箱 基本类型和包装类比较 包装类仍然会自动拆箱

System.out.println(i2 == i3);//false
//i2是常量 存放在常量池中 i3是new出来的对象 存放在堆内存中

Integer i4 = new Integer(5);
Integer i5 = new Integer(5);
Integer i6 = i4+i5;
//这里i4与i5会自动拆箱 得到的值与i2是指向一个内存
System.out.println(i2 == i6);//true

单例模式

概念

又叫单态模式,Singleton

限定某一个类在整个程序运行过程中,只能保留一个实例对象在内存空间中(一个类在内存空间中只存在一个对象)

不可变对象String

String基本类型会在内存中设置常量池

String定义有两种

String a = "abc";
//常量赋值,栈分配内存
String b = new String("abc");
//new 对象 堆分配内存

使用equals来比较字符串里的内容

使用“==”来比较是否指向同一个对象

字符串加法在内存中的过程:

String a = "abc";
//会生成一个内存1,存放“abc”,a指向存放abc的内存空间
a = a + "def";
//会再次生成一个内存2,存放“abcdef”,a重新指向内存2
//内存1会一直存活到垃圾回收机制来回收它,造成内存浪费

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

使用StringBuffer与StringBulid类的append方法进行修改

这两个类生成的对象都是可变对象,做字符串加法时,他们都是在原地修改字符串(在已有的内存上扩张,再存入新添加的内容)

区别:

StringBuffer是同步的,线程安全的,修改快速的,

StringBuild是不同步的,线程不安全的,修改更加快速

总结:不可变对象与常量池结合可以提高程序运行速度。

在已有的内存上扩张,再存入新添加的内容)

区别:

StringBuffer是同步的,线程安全的,修改快速的,

StringBuild是不同步的,线程不安全的,修改更加快速

总结:不可变对象与常量池结合可以提高程序运行速度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值