今天我们来了解一下java的String类
首先上思维导图:
【1】什么是字符串?
字符串的定义:字符串就是由多个字符组成的一串数据,也就是字符序列,字符串也可也看成是字符数组
字符串是常量;它们的值在创建之后不可更改。
【2】String类的概述:
String类代表字符串。java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现,String对象是不可变的,所以可以共享。
【3】String类的构造方法:常见构造方法:
public String();空构造
public String(byte[] bytes);把字节数组转化成字符串
public String(bute[] bytes,int index,int length);把字节数组的一部分转化成字符串,从index处开始转化长度为length的数据
public String(char[] value);把字符数组的数据转化成字符串
public String(char[],int index,int length);把字符数组的数据转化成字符串,从index开始长度为length的数据
public String(String original);把字符串常量值转化成字符串
举例说明:
public class csdntest {
public static void main(String[] args) {
char[] value={ '2','2','3','4','4','5','5','6','6'};
String str=new String(value);
System.out.println(str);
}
}
结果如下:
【4】String 特点:一旦被创建就不能被改变,因为字符串的值是在方法区的常量池中划分空间分配地址值的
举个例子说明:
String s = "hello ";
s="world"+"java"
问s的结果是多少?
首先常量池中先给“hello”划分了空间,其次给“world”和“java”划分空间,再求其和划分新的空间“worldjava”。
内容不变,变的是引用(之前的“world”和“java”和新的“worldjava”分配的是不同的地址空间)
如图如果你直接String s="hello";这句只创建一个对象,但是如果你用了new 那么将会在堆内存中也分配一个空间指向“hello”
【5】String类的判断功能
A:public boolean equals(Object obj);比较字符串内容是否相同,区分大小写
B:public boolean equalsIgnoreCase(String str);比较字符串的内容,忽略大小写
C:public boolean contains(String str);判断字符串中是否包含某字符串
D:public boolean startWith(String str);判断某字符串是否以某字符串开头
E:public boolean endWith(String str);判断某字符串是否以某字符串结尾
F:public boolean isEmpty();判断某字符串是否为空串
eg:
public class csdntest {
public static void main(String[] args) {
String str="小了白了兔,白了又了白,两只耳朵竖了起了来,爱吃了萝卜和了青了菜,蹦了蹦了跳了跳了真了可了爱";
boolean t=str.contains("萝卜和了青了菜");
System.out.println(t);
}
}
结果为true
【6】String类的获取功能
A:public int length();获取字符串的长度
B:public char charAt(int index);获取指定索引位置的字符并返回
C:public int indexOf(int ch);返回指定字符在字符串中出现的第一次索引
D:public int indexOf(String ch);返回指定字符串在原字符串中第一次出现的索引
E:public int indexOf(int ch,int fromIndex);返回指定字符从字符串指定位置开始之后在原字符串第一次出现的索引
F:public int indexOf(String str,int fromIndex);返回指定字符串从指定位置开始之后在原字符串第一次出现的索引
G:public String sbstring(int start);从指定位置开始到结束截取这段字符串并返回
H:public String sbString(int start,int end);截取从指定位置开始到指定位置结束这段字符串,并返回
eg:
public class csdntest {
public static void main(String[] args) {
String str="小了白了兔,白了又了白,两只耳朵竖了起了来,爱吃了萝卜和了青了菜,蹦了蹦了跳了跳了真了可了爱";
String t=str.substring(2,10);
System.out.println(t);
}
}
结果:
【7】String 类的转换功能
A:public byte[] getBytes();把字符串转换为字节数组
B:public char[] toCharArray();把字符串转换为字符数组
C:public static String valueOf(char[] chs);把字符数组转成字符串
D:public static String valueOf(int i);把int型的数据转成字符串
E:public String toLowerCase();字符串转小写
F:public String toUpperCase();字符串转大写
G:public String concat(String str);字符串拼接
eg:
public class csdntest {
public static void main(String[] args) {
String str="idcbkslwqjofiebhjuaihHHSXJSNwhqiuhwui";
char[] arr=str.toCharArray();
System.out.println(Arrays.toString(arr));
String str1=str.toLowerCase();
System.out.println(str1);
String str2=str.toUpperCase();
System.out.println(str2);
byte[] str3=str.getBytes();
System.out.println(Arrays.toString(str3));
}
}
结果:
【7】String类的其他功能
A:替换功能:public String replace(char old,char new) 将制定的字符进行替换
public String replace(String old,String new)将指定的字符串进行替换
B:public String trim();去除字符串两端空格
C:public int compareTo(String str);对照ascll码表从第一个字母进行减法运算,返回的就是这个减法的结果,如果两个字符一模一样,返回的是0
D:public int compareToIbnoreCase(String str)同上只是忽略大小写进行比较
最后再加一个字符串的反置:
public class csdntest1 {
public static void main(String[] args) {
String str="hello world";
System.out.println(str1.reverse());
}
}
结果如下: