概述
java.lang.String 类代表字符串。
Java程序中所有的字符串文字(例如 “abc” )都可以被看作是实现此类的实例。
类 String 中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻译为大写或小写的所有字符的字符串的副本。
特点
1)字符串是常量,字符串的值在创建后不能被更改
2)字符串不可改变,字符串时可以共享使用
3)字符串效果上相当于char数组,但是底层存储为byte数组
构造方法
1)public String() :初始化新创建的 String对象,以使其表示空字符序列
创建一个空白字符串,不含有任何内容
// 无参构造
String str = new String();
2)public String(char[] value) :通过当前参数中的字符数组来构造新的String。
// 通过字符数组构造
char chars[] = {'a', 'b', 'c'};
String str2 = new String(chars);
3)public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 String。
// 通过字节数组构造
byte bytes[] = { 97, 98, 99 };
String str3 = new String(bytes);
4)直接创建
String s="hello";
常量池
程序中直接写上双引号字符串,就在字符串常量池中。
new的内容不在常量池中。
字符串常量池在堆中。
==
基本类型:==
比较数值
引用类型:==
比较地址值
常用方法
比较
1)public boolean equals (Object anObject)
:将此字符串与指定对象进行比较。
2)public boolean equalsIgnoreCase (String anotherString)
:将此字符串与指定对象进行比较,忽略大小写。
// 创建字符串对象
String s1 = "hello";
String s2 = "hello";
String s3 = "HELLO";
// boolean equals(Object obj):比较字符串的内容是否相同
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equals(s3)); // false
System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
//boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写 】
System.out.println(s1.equalsIgnoreCase(s2)); // true
System.out.println(s1.equalsIgnoreCase(s3)); // true System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
Object 是” 对象”的意思,也是一种引用类型。作为参数类型,表示任意对象都可以传递到方法中。
获取与截取
1)public int length ()
:返回此字符串的长度
2)public String concat (String str)
:将指定的字符串连接到该字符串的末尾。
3)public char charAt (int index)
:返回指定索引处的 char值
4)public int indexOf (String str)
:返回指定子字符串第一次出现在该字符串内的索引
5)public String substring (int beginIndex)
:返回一个子字符串,从beginIndex开始截取字符串到字符 串结尾
6)public String substring (int beginIndex, int endIndex)
:返回一个子字符串,从beginIndex到 endIndex截取字符串。含beginIndex,不含endIndex。
//创建字符串对象
String s = "helloworld";
// int length():获取字符串的长度,其实也就是字符个数 System.out.println(s.length());
System.out.println("‐‐‐‐‐‐‐‐");
// String concat (String str):将将指定的字符串连接到该字符串的末尾.
String s = "helloworld";
String s2 = s.concat("**hello itheima");
System.out.println(s2);// helloworld**hello itheima
// char charAt(int index):获取指定索引处的字符 System.out.println(s.charAt(0)); System.out.println(s.charAt(1));
System.out.println("‐‐‐‐‐‐‐‐");
// int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回‐1
System.out.println(s.indexOf("l")); System.out.println(s.indexOf("owo")); System.out.println(s.indexOf("ak")); System.out.println("‐‐‐‐‐‐‐‐");
// String substring(int start):从start开始截取字符串到字符串结尾
System.out.println(s.substring(0)); System.out.println(s.substring(5));
System.out.println("‐‐‐‐‐‐‐‐");
// String substring(int start,int end):从start到end截取字符串。含start,不含end。 System.out.println(s.substring(0, s.length())); System.out.println(s.substring(3,8));
转换
1)public char[] toCharArray ()
:将此字符串转换为新的字符数组。
2)public byte[] getBytes ()
:使用平台的默认字符集将该 String编码转换为新的字节数组。
3)public String replace (CharSequence target, CharSequence replacement)
:将与target匹配的字符串使 用replacement字符串替换
//创建字符串对象
String s = "abcde";
// char[] toCharArray():把字符串转换为字符数组
char[] chs = s.toCharArray();
for(int x = 0; x < chs.length; x++){
System.out.println(chs[x]);
}
System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
// byte[] getBytes ():把字符串转换为字节数组
byte[] bytes = s.getBytes();
for(int x = 0; x < bytes.length; x++) {
System.out.println(bytes[x]);
}
System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
// 替换字母it为大写IT
String str = "itcast itheima";
String replace = str.replace("it", "IT");
System.out.println(replace); // ITcast ITheima System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
CharSequence
是一个接口,也是一种引用类型。作为参数类型,可以把String对象传递到方法中
分割
1)public String[] split(String regex)
:将此字符串按照给定的regex(规则)拆分为字符串数组。
//创建字符串对象
String s = "aa|bb|cc";
String[] strArray = s.split("|"); // ["aa","bb","cc"]
for(int x = 0; x < strArray.length; x++) {
System.out.println(strArray[x]); // aa bb cc
}