Java-String类


【String结构】

(1)String 对象用于保存字符串,也就是一组字符序列(用双引号包裹);
(2)字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节;
(3)String 类有很多构造器,常用的有:

String s1 = new String();
String s2 = new String(String original);
String s3 = new String(char[] a);
String s4 = new String(char[] a, int startIndex, int count);
String s5 = new String(byte[] b);

(4)String类实现了接口 Serializable【作用:String可以串行化,可以在网络传输】,接口Comparable【String 对象可以比较大小】;
image

(5)String 是 final类,不可以被其他的类继承;
image

(6)String 有属性 private final char value[]; 用于存放字符串内容。【这里的final指的是:value的地址不可以修改,但是内容可以修改】
image

理解:value是char类型的数组引用,它的final即是不可以指向别的char数组,即地址不可以修改。


【创建String对象的两种方式】

方式一:直接赋值
String s = "hspteacher";
双引号包裹的是字符串常量。

方式二:调用构造器
String s = new String(hspteacher);

两种方式的区别:
方式一:先从常量池查看是否有"hspteacher"数据空间,如果有,直接指向;如果没有则重新创建,然后指向,s最终指向的是常量池的空间地址;

方式二:先在堆中创建空间,里面有value属性,指向常量池的"hspteacher"空间,如果常量池没有"hspteacher",重新创建,如果有,直接通过value指向,s最终指向的是堆中的空间地址,value指向的是常量池的空间地址。

image

相关例题:
image
String的equals方法已重写,是逐个比较value中的字符,即看两字符串的值是否完全相同。


【习题】

image
解读:intern方法返回的是该字符串常量池的地址,如果没有,则创建再返回(而new String创建出来的String对象指向的是堆中的,里面的value再指向常量池)


【字符串的特性】

(1)String是一个final类,代表不可变的字符序列;
(2)字符串是不可变的,一个字符串对象一旦被分配,其内容是不可变的。
image
理解:String是final的,value也是final的,即创建了的String对象里的字符串内容是不可以改变的,但是对象引用可以指向其他字符串对象,实现改变字符串内容。

相关例题:
image

image

🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥

image
涉及的知识点:字符串的特性,方法的传参机制!
画内存图!
image
输出为: hsp and hava


【String类的常用方法】

image

image

split 方法:将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
参考:String的split方法的使用
重点:看源码

image

posted @ 2021-09-25 12:46  Wiiiimp  阅读(87)  评论(0编辑  收藏  举报