如何在Java中初始化和比较字符串?

我们都知道字符串在java中是不可变的,所以它产生了两种初始化方式,就像我们有 弦乐池 在爪哇。

null

方法: 在Java中初始化字符串

  1. 直接初始化
  2. 间接初始化

图片[1]-如何在Java中初始化和比较字符串?-yiteyi-C++库

方式1:直接初始化(字符串常量)

在这个方法中,字符串常量对象将在内存中堆区域内的字符串池区域中创建。因为它是一个 常数 ,我们不能修改它,即字符串类是不可变的。

插图:

String str = "GeeksForGeeks"; str = "geeks"; // This statement will make str                // point to new String constant("geeks")               // rather than modifying the previous                // String constant.

图片[2]-如何在Java中初始化和比较字符串?-yiteyi-C++库

左派媒体

String str = "GeeksForGeeks"; 

从右上方的媒体

str = "geeks"; 

注: 如果我们再写信 str=“Geeksforgeks” 作为下一行,它首先检查给定的字符串常量是否存在于字符串池区域中。如果它存在,那么str将指向它,否则将创建一个新的字符串常量。

方式2: 对象初始化(动态)

在这个方法中,一个字符串对象将在堆区域中创建(而不是在字符串池区域中,如大写)。我们不能修改它(如大写)。同样使用相同的值,也会在字符串池区域中创建一个字符串常量,但该变量将仅指向堆区域中的字符串对象。

插图:

String str = new String("very");str = "good";     

我们可以从中得出如下结论:

在左下方的媒体

String str = new String("very"); 

在右下方的媒体中,如下所示:

str = "good" 

图片[3]-如何在Java中初始化和比较字符串?-yiteyi-C++库

现在,这是一个直接赋值,因此在字符串池区域中创建一个值为“good”的字符串常量,str将指向该值。

注: 如果我们再写信 str=新字符串(“非常”) ,然后它将创建一个值为“very”的新对象,而不是指向堆区域中具有相同值的可用对象。但如果我们写信 str=“非常” ,然后它将指向字符串池区域中存在的值为“very”的字符串常量对象。

方法: 比较字符串及其引用

  1. equals()方法: 相比之下 价值观 平等的弦。返回类型为布尔型。在几乎所有情况下,都可以使用useObjects。等于()。
  2. ==操作员: 相比之下 引用而非值 .返回类型为布尔值。==用于极少数情况下,你知道你正在处理的是实习字符串。
  3. compareTo()方法: 它按字典顺序比较值,并返回一个整数值,该整数值描述第一个字符串是否小于、等于或大于第二个字符串。例如,如果str1和str2是两个字符串变量,请参考以下内容:
    • str1==str2: 返回0
    • str1>str2: 返回一个正值
    • str1 返回一个负值

注: 返回的正值和负值 比较函数 方法是两个字符串中第一个不匹配字符的差。

实施: 我们将通过下面的例子讨论如何与字符串进行比较,以证明上述内容的合理性

例子:

JAVA

// Java program to Illustrate Comparison of Two Strings
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Custom input strings to compare
String s1 = "Ram" ;
String s2 = "Ram" ;
String s5 = "Shyam" ;
String s3 = new String( "Ram" );
String s4 = new String( "Ram" );
// Checking whether strings are equal or not
// with help of equals() method
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));
String nulls1 = null ;
String nulls2 = null ;
// NullPointerException will be throws if
// we try to compare nulls strings
// System.out.println(nulls1.equals(nulls2));
// Comparing strings using == operator
System.out.println( " Comparing strings with ==:" );
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println(nulls1 == nulls2);
// Comparing strings via compareTo() method
System.out.println(
" Comparing strings via compareTo() Method :" );
System.out.println(s1.compareTo(s3));
System.out.println(s1.compareTo(s5));
// NullPointerException if we try to compare strings
// with usage of compareTo() method
// System.out.println(nulls1.compareTo(nulls2));
}
}


输出

 Comparing strings with equals:truetruefalse Comparing strings with ==:truefalsefalsetrue Comparing strings via compareTo() Method :0-1

本文由 高拉夫·米格拉尼 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享