String类的特性

Java中的String类是final的,不可被继承,且实现了Serializable接口,支持序列化。字符串的值存储在finalchar[]value中,使得字符串具有不可变性。当字符串通过字面量或new创建时,其存储位置不同。字符串拼接时,如果涉及变量,会在堆中创建新字符串。在方法中,对字符串形参的修改会创建新对象,而对字符数组形参的修改则直接影响原实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

1)字符串,使用 “ ” 来表示

2)string声明为final的,不可被继承

3)string实现了,serializable接口,表示字符串是支持序列化

4)string内部定义了 final char[ ] value用以存储字符串数据

5)通过字面量的方式(区分于new的方式)创建字符串时,此时字符串值声明在字符串常量池中;其实new也是,只不过是间接引用。

string的不可变性:

当对字符串进行修改,拼接或赋值等操作时需要重新指定内存区域

细节:

1)当字符串拼接时出现其中一个是变量时,结果就在堆中(视为new出来的);

 一道面试题(重要!!!)

答案是good和best;

因为,方法进行操作的是形参,我们把属性的地址值传给形参,此时他们共同指向一个实例,当要对形参进行修改的时候,由于字符串的不可变性,会创建一个新的字符串给形参属性还是指向原来的字符串;而第二个字符数组就不同了,它没有“不可变性”,对形参的操作也就直接对实例造成了影响;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值