String类也是JDK先好的类,让你直接使用
1.String类表示字符串
"HelloWorld"
定义一个字符串变量来接收
String str = "HelloWorld";
2.一切双引号包裹起来的内容都是字符串对象
String str = new String("HelloWorld");
3.字符串是常量,不可以改变的
如果你发现字符串发生改变,那么程序创建了新字符串
4.构造方法:
String() 空参,创建一个字符串,没有内容
String(String original) 有参构造,使用指定的一个字符串创建一个字符串对象
String(char[] value) 有参构造,使用字符数组创建一个字符串对象
String(byte[] bytes) 有参构造,使用字节数组创建一个字符串对象
在JDK9之前 字符串的底层是一个字符数组
在JDK9及之后 字符串的底层是一个字节数组
public class Demo { public static void main(String[] args) { //定义一个字符串变量来接收 String str = "HelloWorld"; System.out.println(str); //使用new创建字符串对象 String str2 = new String("HelloWorld"); System.out.println(str2); //"改变" String s = "hello"; //s = s+"world"; System.out.println(s); s+="world"; System.out.println(s);//引用类型的变量保存的是内存地址,但是(String继承Object对toString()) } }
直接赋值与构造方法创建字符串的区别
直接赋值可以创建字符串对象,保存在字符串常量池里面的
构造方法创建的字符串对象,保存在堆里面
String的判断方法
== 是比较运算符
如果==比较的是基本类型的话,比较的是值
如果==比较的是引用类型的话,比较的是地址值
1. boolean equals(String anObject):与另一个字符串内容相同,区分大小写
执行之后返回一个boolean值,true表示与另一个字符串内容相同,false不同。
在开发中,不能使用==来比较字符串的内容,只能使用equals方法。
2.boolean equalsIgnoreCase(String anotherString):与另一个字符串内容相同,不区分大小写
执行之后返回一个boolean值,true表示与另一个字符串内容相同(不看大小写),false不同。
代码如:
public class String_Demo01 {
public static void main(String[] args) {
// 创建字符串对象
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("‐‐‐‐‐‐‐‐‐‐‐");
}
}
--------------
获取功能的方法
int length() 获取字符串的长度
"abc" 3
"a b c" 5
跟数组对象无关
arr.length
数组长度
String concat(String str) 拼接另外一个字符串,放在尾部
"abc" "nba"返回 "abcnba"
在开发中,如果拼接字符串,使用 +
char charAt(int index) 获取指定索引对应的字符
"abc" 2 'c'
int indexOf(int ch) 获取指定字符在字符串中的字符,返回的第一次出现的索引
"hello" 'l' 在字符串中的索引有2 , 3
如果没有出现呢?返回-1,大家看到-1即是没有找到这个字符
byte,short,char三者在参数运算时,自动提升为int
int ch = 'a';
String substring(int beginIndex): 获取字符串的一个小串.
"abcdefg" 索引从3开始 默认到结束 "defg"
String substring(int beginIndex, int endIndex) : 获取字符串的一个小串.少一个字符
"abcdefg" 索引从3开始 到5结束的 "de"。
-------------
转换功能
char[] toCharArray() 将字符串转换成字符数组
返回的一个字符数组,包含字符串的所有字符
"abc" a,b,c
byte[] getBytes() 将字符串转换成字节数组
返回的一个字节数组,包含字符串每个字符的数字表示
String replace(String oldStr, String newStr)
CharSequence:字符序列 就是字符串
将字符串中的指字旧的符串,全部换成新的字符串
"javadfdsjavadsfsjava" "#dfds#dsfs#"
切割方法
String[] split(String regex)
方法会将字符串按照小括号里面的符号进行切割,生成多个小字符串,放进一个字符串数组返回。
public class Demo { public static void main(String[] args) { //定义一个字符串 /* String s = "aa,bb,cc"; String[] arr = s.split(",");*/ String s = "aa.bb.cc"; String[] arr = s.split("\\.");//java中对特殊的字符,进行转译 //数组遍历 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }