1、获取键盘输入
1.import java.util.Scanner
2.Scanner scanner = new Scanner(System.in);
3.String str = scanner.next();
4.查看成员方法
public String next() :
获取键盘录入的字符串(不能包含空白字符),遇到空白字符/回车换行就认为录入结束
public String nextLine() :
获取键盘录入的一行字符串(可以包含空白字符),遇到回车换行就认为录入结束
2、String类的介绍
java.lang.String类: 用来描述的字符串的
说白了: String 类代表字符串。
Java 程序中的所有字符串字面值(字符串常量)都作为此类的实例对象。
字符串是常量;它们的值在创建之后不能更改(但凡是你感觉它要变化的时候,其实都是创建了一个新的字符串)。
String类的对象的体现形式:
1.所有双引号""引起来的内容,都是String类的对象,都可以调用String类中定义的方法
2.和前面一样,使用new关键字创建String类的对象
3.String str = new String("Hello World") ;
注意:
""引起来的叫做字符串常量对象,这种东西被存储在常量池中(专门用来存储字符串常量对象的),在创建一个字符串对象的时候,它先会到字符串常量池中去查找看是否有该字符串对象,如果没有就创建字符串对象,如果有就引用常量池中对象的地址。通过第二种new的形式创建字符对象时,如果常量池中没有要创建的字符串,那么就相当于开辟了两块空间。一块是在常量池中,一块在堆内存空间中。
例:
String str = new String("Hello World"); 此时常量池中和堆内存中分别有开辟空间存储"Hello World",但是str指向的是堆内存空间开辟的空间,所以此时的常量池中的空间没有指向就会变成一块垃圾空间。
但是如果此时str1 = "Hello World" ,str1就会指向常量池中的空间。
4. "abc" 等效于 char[] data={ 'a' , 'b' , 'c' }
jdk8及以前: String内部使用的就是字符数组
jdk9及以后: String内部使用的就是字节数组
例如:
String str = "abc";
相当于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
5. 创建字符串对象两种方式的区别(理解)
1.直接new的方式: 字符串变量中直接保存的堆内存空间的地址值
2.直接""的方式: 字符串变量中直接保存的常量池中字符串常量对象的地址值
==的使用:
1.基本类型: 比较的是具体的数据值是否相同
2.引用类型: 比较的是地址值是否相同
String类的对象一旦创建就不能改变,因为不能改变,所以在常量池中会被共享
3、String类的构造方法
public class Demo01{
public static void main(String[] args) {
String s1 = new String();
System.out.println("Hello"+s1+"World");
char[] chs = {'a','b','c'};
String s2 = new String(chs);
System.out.println(s2);
byte[] bs = {97,98,99};
String s3 = new String(bs);
System.out.println(s3);
String s4 = "abc";
System.out.println(s4);
}
}
4、String类的判断方法
判断功能的方法
- public boolean equals(Object anObject) :
将此字符串(调用分的对象)与指定对象(传递给方法的参数)进行比较内容是否相同, 区分大小写。
举例:
s1.equals(s2):比较s1和s2的内容是否一模一样,如果一样返回true,否则返回false
- public boolean equalsIgnoreCase (String anotherString) :
将此字符串与指定对象进 行比较内容是否相同,忽略大小写。
举例:s1.equalsIgnoreCase(s2):比较s1和s2的内容是否相同,但是不区分大小写
- public boolean contains(String str) : 当且仅当此字符串包含指定的str时,返回 true。
举例:s1.contains(s2): s1中包含s2,返回true,不包含返回false
5、String类的获取方法
获取功能的方法
- public int length () :返回此字符串的长度。
举例:s.length() 获取s中的字符的数量
- public String concat (String str) :将指定的字符串连接到该字符串的末尾。
举例:s1.concat(s2) 把s2连接到s1的末尾 等价于 s1 += s2
- public char charAt (int index) :返回指定索引处的 char值。
举例:s1.charAt(5) 获取s1中索引为5的字符
- public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
举例:s1.indexOf(s2) 查找s2在s1中第一次出现的位置,如果不存在,返回-1
- public String substring (int beginIndex) :
返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
举例:s1.substring(5) 截取s1字符串从索引5开始一直到最后的内容
- public String substring (int beginIndex, int endIndex) :
返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。
举例:s1.substring(5,10) 截取s1字符串从索引5开始一直到索引10之间的内容(包含5,不包含10)
- public char[] toCharArray()
将此字符串转换为新的字符数组。
6、String类的转换方法
转换功能的方法
- public char[] toCharArray () :把字符串变成对应的字符数组。
举例:s1.toCharArray() 把s1变成字符数组
- public byte[] getBytes () :把字符串变成对应的字节数组。
举例:s1.getBytes() 把s1变成字节数组
- public String replace (String oldStr, String newStr) :
把字符串中的所有的oldStr替换成newStr。
举例:s1.replace("a","A") 把s1中的所有的"a"替换成"A"
7、String类的切割方法
"aa bb cc dd"
分割功能的方法
- public String[] split(String regex) :
将此字符串按照给定的regex(规则)拆分为字符串数组
举例:
String[] "a,b,c,d".split(",")
把"a,b,c,d"按照逗号切割,将切割后的多个子字符串存入String[] 中