【无标题】

1.String:字符串,使用一堆“”引起来表示
String声明为final的,不能被继承
String实现了serializable接口:表示字符串是支持序列化的
String实现了comparable接口:表示String可以比较大小
String内部定义了final char[] value用来存储字符串数据
String代表不可变的字符序列,简称不可变性
体现:1.当对字符串重新赋值时,需要重写内部区域赋值,不能使用原有的value进行赋值。
2.当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value
3.当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域
通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串声明在字符串常量池中。
字符串常量池不会存储相同内容的字符串

2.String实例化方式:
方式一:通过字面量定义的方式
方式二:通过new+构造器的方式

String s=new String(“abc");方式创建对象,在内存中创建了几个对象?
两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据”abc“

常量与常量的拼接结果在常量池,且常量池中不会存在相同内容的变量
只要其中一个是变量,结果就在堆中
如果拼接的结果调用intern()方法,返回值就在常量池中

3.String与基本数据类型、包装类的转换
String——>基本数据类型、包装类:调用包装类的静态方法:parseXxx(str)
基本数据类型、包装类——>String:调用String重载的valueOf(xxx)

String str=“123”;
int num=Integer.parseInt(str);

String str1=String.valueOf(num);
String str2=num+"";

4.String与char[]之间的转换
String——>char[]:调用String的toCharArray()
char[]——>String:调用String的构造器

String str=“abc123”;
char[] charArray=str.toCharArray();
char[] arr=new char[]{‘h’,‘e’,‘l’,‘l’,‘o’};
String str1=new String(arr);

5.String与byte[]之间的转换
编码:String——>byte[]:调用String的getBytes()
解码:byte[]——>String:调用String的构造器

编码:字符串——>字节
解码:字节——>字符串
解码时,要求解码使用的字符集必须与编码时使用的字符集一致,否则会出现乱码

6.String、StringBuffer、StringBuilder三者的异同?
String:不可变的字符序列,底层使用char[]存储
StringBuffer:可变的字符序列,线程安全,效率低,底层使用char[]存储
StringBuffer:可变的字符序列,jdk5.0新增的,线程不安全的,效率高,底层使用char[]存储

7.增:append(xxx)
删:delete(int start,int end)
改:setChar(int n,char ch)/replace(int start,int end,String str)
查:charAt(int n)
插:insert(int offset,xxx)
长度:length()
遍历:for()+charAt()/toString()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值