String
API中说:Java 程序中所有字符串字面值(如“abc”)都作为此类的实例实现,也就是说,程序中所有双引号字符串,都是String类的对象。(没有new也是)
特点:
- 字符串内容不可变。
- 因为1.,所以字符串是可以共享的。
- 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组
创建字符串的4种(3+1)方式
三种构造方法:
public String();
//创建空白字符串,不含有任何内容;
String str1 = new String();
public String(char[] array);
//根据字符数组的内容,来创建对应的字符串
char[] charArray = {'A', 'B', 'C'};
String str2 = new String(charArray);
public String (byte[] array);
//根据字节数组的内容,来创建对应的字符串
char[] charArray = {97, 98, 99};
String str2 = new String(charArray);
一种直接创建:
String str4 = "hi";
注:直接写上“”,就是创建串对象。
字符串常量池
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。
tips:JDK1.7+开始,常量池在堆当中;
每当你觉得字符串发生了变化,它必然是产生了一个新的字符串;(字符串不可变)
方法
常用方法:
比较方法:
1.== 是进行对象的地址值比较,如确实需要字符串的内容比较,可以使用两个方法:
public boolean equals(Object obj):
参数可以是任何对象, 只有一个参数是字符串并内容相同时才会给true,否则返回false。
注:
1.任何对象都能用Object接受。
2.equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。
3.如比较一个常量一个变量,推荐常量写在前面,因为如果变量为null时仍在前面,编译器会报错,空指针异常 .
获取方法:
public int Length();
获取字符串当中含有的字符个数;
public String concat(String str);
//将当前字符串和参数字符串拼接成为返回值新的字符串;
public char charAt(int index);
//获取指定索引位置的单个字符(索引从0开始);
public int indexOf(String str);
//查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值;
截取方法:
public String substring(int index);
//截取从参数位置一直到字符串末尾,返回新字符串。
public String substring(int begin,int end);
//截取从begin开始,一直到end结束,中间的字符串。
注:[begin,end),包含左边,不包括右边。
转换方法:
public char[] toCharArray();
//将当前字符串拆成字符数组作为返回值。
public byte[] get getBytes();
//或得当前字符串底层的字节数组。
public String replace(CharSequence oldString,CharSequence newString);
//将所有出现的老字符串替换成新的字符串,返回替换之后的结果新字符串。
注:CharSequence意思就是说可以接受字符串类型(把它当做字符串)。
分割方法:
public String[] split(String regex);
//按照参数规则,将字符串切分成若干部分。
注:
1.split方法的参数其实是一个“正则表达式”,随后补充。
2.如果想要切分英文句点“.”,必须写“\\.”