Java 字符串
在Java中初始化字符串
1.直接初始化(字符串常量):在这种方法中,一个String常量对象将被创建在存储器内堆区内的String池中。因为它是一个常量,所以我们不能修改它,即String类是不可变的。
例子:
String str =“GeeksForGeeks”;
str =“geeks”; //这个声明将使str
//指向新的String常量(“geeks”)
//而不是修改前一个
//字符串常量。
String str =“GeeksForGeeks”;
str =“geeks”;
注意:如果我们再次将str =“GeeksForGeeks”写为下一行,那么它首先检查String String池中是否存在给定的String常量。如果它存在,则str将指向它,否则创建一个新的String常量。
2.对象初始化(动态):在此方法中,将在堆区中创建一个String对象(不在大写字符串池区内)。我们可以对它进行修改。同样的值,在字符串池区也会创建一个String常量,但是这个变量只会指向堆区的String对象。
例子:
String str = new String(“very”);
str =“good”;
String str = new String(“very”)
str =“good”
现在这是一个直接赋值,所以在字符串合并区域中创建带有值“good”的字符串常量,str将指向该字符串。
注意:如果我们再次写入str = new String(“very”),那么它将创建一个值为“very”的新对象,而不是指向堆区中具有相同值的可用对象。但是如果我们写str =“very“,那么它将指向String常量对象,其值为”very“,出现在String池区域中。
比较字符串及其引用
1. equals()方法:它比较字符串的值是否相等。返回类型是布尔值。在几乎所有的情况下,你都可以使用useObjects.equals()。
2. ==运算符:它比较引用而不是值。返回类型是布尔值。==用于你知道你正在处理字符串的罕见情况。
3. compareTo()方法:它按照字典顺序进行比较,并返回一个整数值,该值描述第一个字符串是否小于,等于或大于第二个字符串。例如,如果str1和str2是两个字符串变量,则if
str1 == str2:返回0
str1> str2:返回正值
str1
注意:compareTo方法返回的正值和负值是两个字符串中第一个不匹配字符的差异。
// Java program to show how to compare Strings
public class Test
{
public static void main(String[] args)
{
String s1 = "Ram";
String s2 = "Ram";
String s3 = new String("Ram");
String s4 = new String("Ram");
String s5 = "Shyam";
String nulls1 = null;
String nulls2 = null;
System.out.println(" Comparing strings with equals:");
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s1.equals(s5));
System.out.println(" Comparing strings with ==:");
System.out.println(s1==s2);
System.out.println(s1==s3);
System.out.println(s3==s4);
System.out.println(" Comparing strings with compareto:");
System.out.println(s1.compareTo(s3));
System.out.println(s1.compareTo(s5));
}
}
输出:
Comparing strings with equals:
true
true
false
Comparing strings with ==:
true
false
false
Comparing strings with compareto:
0
-1