1.String概述
String类在java.lang包下,所以使用的时候不需要导包
String类代表字符串,Java程序中所有字符串文字(例如"abc")都被实现为此类的实例
也就是说,Java程序中所有的双引号字符串,都是String类的对象
字符串的特点
- 字符串不可变,它们的值在创建后不能被更改
- 虽然String的值是不可变的,但是它们可以被共享
- 字符串效果上相当于字符数组**(char[])**,但是底层原理是字节数组(byte[])
2.String构造方法
方法名 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] bys) | 根据字节数组的内容,来创建字符串对象 |
String s=“abc”; | 直接赋值的方法创建字符串对象,内容就是abc |
String s1=new String();
System.out.println("s1:"+s1);
char[] chs={'a','b','c'};
String s2=new String(chs);
System.out.println("s2:"+s2);
byte[] bys={98,98,99};
String s3=new String(bys);
System.out.println("s3:"+s3);
String s4="abc";
System.out.println("s4:"+s4);
3.String对象特点
- 通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同
char[] chs={'a','b','c'};
String s1=new String(chs);
String s2=new String(chs);
上面的代码中,JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过是
和s2参考的字符串内容是相同的
- 以" "方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护
String s3="abc";
String s4="abc";
在上面的代码中,针对第一行代码,JVM会建立一个String对象放在字符串池中,并给s3参考;
第二行则让s4直接参考字符串池中的String对象,也就是说它们本质上是同一个对象
4.字符串比较
使用 == 做比较
- 基本类型:比较的是数据值是否相同
- 引用类型:比较的是地址值是否相同
字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals()
- public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串
5. 遍历字符串
需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
思路:
1. 键盘录入一个字符串,用Scanner实现
2. 遍历字符串,首先要能够获取到字符串中的每一个字符
- public char charAt(int index):返回指定索引处的char值,字符串的索引也是从0开始的
- 范例:
System.out.println(line.charAt(0));
System.out.println(line.charAt(1));
3. 遍历字符串,其次要能够获取到字符串的长度
- public int length():返回此字符串的长度
- 数组的长度:数组名.length
- 字符串的长度:字符串对象.length()
4.遍历字符串的通用格式
for(int i=0;i<s.length();i++){
s.charAt(i);//就是指定索引处的字符值
}
示例:
//键盘录入一个字符串,用Scanner实现
Scanner sc=new Scanner(System.in);
//
System.out.println("请输入一个字符串");
String line = sc.nextLine();
//遍历字符串,首先要能够获取到字符串中的每一个字符
// for(int i=0;i<line.length();i++){
// System.out.println(line.charAt(i));
// }
//遍历字符串,其次要能够获取到字符串的长度
// System.out.println(line.length());
for(int i=0;i<line.length();i++){
System.out.println(line.charAt(i));
}
理想的咸鱼猿©个人笔记