P133 字符串概述和特点
正式认识一下String~
java.lang包下
所有的双引号字符串,都是String类对象,没有new也是
在这里插入代码片
字符串特点
- 是常量,创建之后不可更改
- 因为不可更改,可以被共享
- 字符串相当于char[]字符数组
P134 字符串的构造方法和直接创建
常见3+1种方式
三种构造方法:
- public String();
- public String(char[]array);//根据字符数组的内容,创建对应的字符串
- public String(byte[]array);
方法二:
👇输出:
注意:char中用逗号隔开,用单引号扩起,但是实际存入string时是挨在一起的
方法三:
👇输出:
abc
方法四:直接创建
String str="hello";//右边直接双引号,里面写内容
没有使用new,直接使用双引号,只要是字符串,照样是字符串对象!~
P135 字符串的常量池
字符串如何共享呢?
比较字符串
1和3,2和3创建方式不一样,比较相等与否是false
字符串常量池是什么?
程序中直接==“ ”==的字符串,就在常量池中
- 基本类型:==比较数值
- 引用类型(如String):==比较地址值
内存机制:
小结:
对于引用类型,==进行的是地址值的比较
双引号直接写的字符串在常量池中,new 的不再池当中
P136 字符串的比较相关方法
前请提要:
- ==是进行对象的地址值比较
- 若要比较内容:
-
有一个方法:
public class Demo01StringEquals{
public static void main(String[] args){
String str1="Hello";
String str2="Hello";
char[] charArray={'H','e','l','l','o'};
String str3=new String(charArray);
//调用比较函数:
System.out.println(str1.equals(str2));//true
System.out.println(str1.equals(str3));//true
输出👇
直接"Hello"所得也是一个字符串String类型
注意3和4!
but
直接用字符串的话,要注意先后有一点点区别!
因为,参数为null(任何引用类型都可赋null)会引起空指针异常
!!!点 . 之前是null,就会报错!!
忽略大小写:equalsIgnorceCase()
P137字符串的获取
concat():
拼接字符串
charAt():
获取指定索引位置的单个字符(是一个char
indexOf():
查找参数字符串再本来字符串中出现的第一次索引位置(是一个int
substring():
截取字符串
- (int n):截取从光标n到末尾
- (int n,int m):截取从光标n到m
replace():
替换字符串
P138 字符串的分割
split():
- 根据参数分割字符串
- 如果按照==“.”切分,必须写“\.”==