目录
466-String结构剖析
467-String结构剖析
468-String测试题1
469-String测试题2
470-String对象特性1
471-String对象特性2
472-String常用方法1
473-String常用方法2
474-String常用方法3
466-String结构剖析
1、接口Serializabel,说明String对象可以串行化,在网络传输
2、接口Comparable,说明String对象可以互相比较
3、接口CharSequence,
value不能指向新的地址,但是单个字符内容可以变化
467-String结构剖析
这两种方式创建String对象时不一样的
最终这两种方法创建的不是一个对象,指向的地址不同,一个指向堆,一个执行常量池
练习题:
1、
equals已经重写了,比较value存放的数组是不是一样;
a==b,都是在一个常量池,指向一个地址
468-String测试题1
3、
a==b,看的是否是一个对象,显然不是,一个在堆里,一个在常量池
b.intern,返回的是常量池中的地址(对象);b还是指向堆
4、
equals这里比较的是字符串内容
469-String测试题2
470-String对象特性1
1、
创建了两个对象
2、
只创建了一个对象
3、
创建了三个对象,因为每一个都有引用 ×不对
常量相加在池中,变量相加在堆中
471-String对象特性2
3、
两个都是True
4、
数组在默认情况下是放在堆里面的
str=“java”,是在常量池重新创建了
ch【0】=‘h’,是直接在数组中修改的
所以最后ex.str 不变是hsp;ex.ch 变了变成了hava
472-String常用方法1
473-String常用方法2
replace不改变原来的s1
对于一些特殊的分割字符,要用转义字符—“\”
如果字符长度不等,就用第一个字符串长度-第二个字符串长度,3-4=-1