目录
1.String
(学完String之后要求能够使用String这个类中的功能完成我们的需求)
1.1String概述
为了了解String先到API中了解一下
String类在java.lang包下,所以在使用的时候不需要导包
String类代表字符串,Java程序中所有的字符串文字(例如“abc”)都被实现为此类的实例;也就是说,Java程序中所有的双引号字符串,都是String类的对象
字符串的特点:
- 字符串不可变,他们的值在创建后不能被更改
- 虽然String的值是不可变的,但是他们可以被共享
- 字符串效果上相当于字符串数组(char[ ]),但是底层原理
是字节数组(byte[ ])
1.2String构造方法
代码
演示:
(验证s1是否为对象,只许输入s1.看到有很多方法够我们使用就代表s1已经是个对象了)
演示:
/*
String构造方法
public String();创建一个空白字符串,不含有任何内容
public String(char[] chs);根据字符数组的内容,来创建字符串对象
public String(byte[] bys);根据字节数组的内容,来创建字符串对象
String s = "abc";直接赋值的方式创建字符串对象,内容就是abc
推荐使用直接赋值的方式得到字符串对象:String s = "abc";
*/
public class StringDemo {
public static void main(String[] args) {
//1.先看第一个public String();创建一个空白字符串,不含有任何内容。首先创建对象
String s1 = new String();
//2.验证
//s1.
//此处我们不做s1验证我们直接输出s1
System.out.println("s1:" + s1);
/*3.输出后没有任何内容也没有地址值,
说明这个对象只输出它里面的内容,只不过它里面没有内容而已
*/
/*4.再来看下一个public String(char[] chs);
根据字符数组的内容,来创建字符串对象
那么首先就要创建字符数组
*/
char[] chs ={'a','b','c'};
//5.有了字符数组之后我们来创建对象,他这里要的参数是字符数组,我们直接传递一个字符数组就可以了
String s2 = new String(chs);
//6.最后输出
System.out.println("s2:" + s2);//s2:abc
/*7.public String(byte[] bys);根据字节数组的内容,来创建字符串对象
他要的是字节数组,那么我们得先有一个字节数组
*/
byte[] bys = {97,98,99};//字节数组是一个整数
//8.创建对象,他这里要得参数是字节数组,我们直接传递一个字节数组就可以了
String s3 = new String(bys);
System.out.println("s3:" + s3);
/*9。这里输出得到abc怎么理解呢?
我们前面学习过字母a,b,c分别对应数字97,98,99
也就是a这个字符在计算机底层存储的是数据97这个值,而我们右键执行是把97这个
值拿出来看让我们到,看到的时候它就把它转成了字符a
*/
/*10.String s = "abc";直接赋值的方式创建字符串对象,内容就是abc
这种方式没有使用构造方法,所以不需要创建对象,可以直接赋值
*/
String s4 = "abc";
System.out.println("s4:" + s4);//s4:abc
}
}
2.4字符串的比较
使用==做比较
如果比较的是基本类型的数据:比较的是数据值是否相同。
如果比较的是引用类型的数据:比较的是地址值是否相同。
我们现在的字符串它是一个类,所以它的对象做==比较的时候,比较的也是地址值是否相同
而我们现在想比较字符串的内容是否相同应该这么办呢?
字符串是对象,他比较内容是否相同,是通过一个方法来实现的,这个方法叫做:equals()
public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串。(调方法得有一个字符串对象,传递过来也得有一个对象)
代码演示:
/*
使用==做比较:
如果比较的是基本类型的数据:比较的是数据值是否相同。
如果比较的是引用类型的数据:比较的是地址值是否相同。
public boolean equals(Object anObject):
将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串。
*/
public class Equals {
public static void main(String[] args) {
//构造方法的方式得到对象
char[] chs = {'a','b','c'};
String s1 = new String(chs);
String s2 = new String(chs);
//直接赋值的方式得到对象
String s3 = "abc";
String s4 = "abc";
//比较字符串对象地址是否相同
System.out.println(s1 == s2);//false;
System.out.println(s1 == s3);//false
System.out.println(s3 == s4);//true
//比较字符串内容是否相同
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//true
System.out.println(s3.equals(s4));//true
}
}