1.String类的两种实例化方式
①直接赋值:String 变量=“字符串”;
public class Test {
public static void main(String[] args) {
String mic = "Go to";//直接赋值
System.out.println(mic);
}
}
以上代码并没有用关键字new进行。在String类里面实际上也定义了一个构造方法。
②构造方法:public String(String str),在构造里面依然要接收一个本类的对象;
利用构造方法实例化:
public class Test {
public static void main(String[] args) {
String mic = new String("Go to");
System.out.println(mic);
}
}
2.字符串的比较
范例:在对象上使用“==”比较
public class Test {
public static void main(String[] args) {
String stra = new String("Amani");
String strb ="Amani";
String strc = stra; //引用传递
System.out.println(stra==strb);//false
System.out.println(strb==strc);//false
System.out.println(strc==stra);//true
}
}
以上三个String对象的内容是一样的,通过分析“==”也进行了比较,但比较的并不是字符串对象所包含的内容,而是它们所在的内存地址的数值,所以“==”是数值比较,比较的是内存地址。
而如果想去比较字符串内容则用 public boolean equals(String str);
范例:实现内容比较
public class Test {
public static void main(String[] args) {
String stra = new String("Amani");
String strb ="Amani";
String strc = stra; //引用传递
System.out.println(stra.equals(strb));//true
System.out.println(strb.equals(strc));//true
System.out.println(strc.equals(stra));//true
}
}
所以如果要是进行字符串相等判断,千万别用“==”。
在字符串相等的判断中“==”和equals的区别?
“==”是Java提供的关系运算符,主要功能是进行数值相等判断的,如果用在String对象上表示的是内存地址数值的比较。
“equals()”是由String提供的一个方法,此方法专门负责进行字符串内容的比较。
3.字符串常量就是String的匿名对象
Java自己创造了字符串,但是这个字符串不属于基本数据类型,它是将字符串作为了String类的匿名对象的形式存在的。