java字符串常量 地址相同_java值和地址值传递、字符串常量池的理解

#java值和地址值传递的理解:

- 基本数据类型和基本数据类型的封装类都是:值传递

* 形式参数的改变不会影响实际参数的改变(相当于将值复制一份传递给形参,自身没做任何改变)

- 引用数据类型都是 地址值传递

* 形式参数的改变会影响实际参数的改变(将地址值赋值给形参,形参就可以指向实参所指向的地址,

即形参也可以操作实参指向地址的数据了)

#注意:String是个特例(当作基本类型处理)

- 分析:从String类的源码可以知道,String相当于是char[]的封装类,即具有char类型的性质。

String str1="abc";//直接新建的字符串(引用值在常量池中)

String str2=new String("a");//通过new产生的字符串

// 以上两种方式都是属于值传递,而不是地址值传递

#常量池技术:

- 方便快捷的创建某些对象为出现的,常量池技术其实就是一个内存空间,

*

//就是在常量池中创建的,

String str="ab";

//在堆内存中创建的

String str=new String("ab");--2

其中第二句代码分为两种情况

1.常量池如果有"ab",就直接从常量池中获取"ab",就只需要创建一次对象

2.常量池若没有"ab",首先在常量池创建"ab",然后在堆内存再创建一次对象

#8基本类型的包装类和对象池

- Byte,Short,Integer,Long,Character,Boolean实现了常量池技术,

- Float,Double浮点型没有实现常量池技术。

- Byte,Short,Integer,Long,Character这5种包装类也只是在对应值

小于127时(存在缓存)才可以使用对象池。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值