string类equals方兴方法null和""的比较区别

string类equals方兴方法null和""的比较区别

'声明

Public Shared Function Equals ( _
 a As String, _
 b As String, _
 comparisonType As StringComparison _
) As Boolean
参数
a
类型:System.String
要比较的第一个字符串,或 Nothing。

b
类型:System.String
要比较的第二个字符串,或 Nothing。

comparisonType
类型:System.StringComparison
枚举值之一,用于指定比较的规则。

返回值
类型:System.Boolean
如果 a 参数的值等于 b 参数的值,则为 true;否则为 false。

String.equals()方法比较的是字符串的内容,使用equals(...)方法会对字符串中的所有字符一个接一个地进行比较,如果完全相等那么返回true。 在这种情况下全部字符串都是相同的,所以当字符串s0 与s1 或s2 比较时我们得到的返回值均为true 。运算符“==”比较的是String 实例的引用。在这种情况下很明显s0 和s1 并不是同一个String 实例,但s0 和s2 是同一个

public class StringTest {
    public static void main(String[] args) {
        String str = null;
        String str2 = "";
        
        System.out.println(""" == str: " + "".equals(str));
        System.out.println(""" == str2: " + "".equals(str2));
        
        try {
            System.out.println(str.equals(""));
        } catch (NullPointerException e) {
            System.err.println("Caught Exception: " + e);
        }
    }
}

运行结果如下:
"" == str: false
"" == str2: true
Caught Exception: java.lang.NullPointerException
在Java中String有很多特别的地方, 推荐比较字符串为空时使用这种方式:
"".equals(str)

下面的示例使用 Equals 方法的三个版本确定 String 对象与 StringBuilder 对象是否相等。

 

Sample for String.Equals(Object)
'            String.Equals(String)
'            String.Equals(String, String)
Imports System
Imports System.Text

Class Sample
   Public Shared Sub Main()
      Dim sb As New StringBuilder("abcd")
      Dim str1 As [String] = "abcd"
      Dim str2 As [String] = Nothing
      Dim o2 As [Object] = Nothing

      Console.WriteLine()
      Console.WriteLine(" *  The value of String str1 is '{0}'.", str1)
      Console.WriteLine(" *  The value of StringBuilder sb is '{0}'.", sb.ToString())

      Console.WriteLine()
      Console.WriteLine("1a) String.Equals(Object). Object is a StringBuilder, not a String.")
      Console.WriteLine("    Is str1 equal to sb?: {0}", str1.Equals(sb))

      Console.WriteLine()
      Console.WriteLine("1b) String.Equals(Object). Object is a String.")
      str2 = sb.ToString()
      o2 = str2
      Console.WriteLine(" *  The value of Object o2 is '{0}'.", o2)
      Console.WriteLine("    Is str1 equal to o2?: {0}", str1.Equals(o2))

      Console.WriteLine()
      Console.WriteLine(" 2) String.Equals(String)")
      Console.WriteLine(" *  The value of String str2 is '{0}'.", str2)
      Console.WriteLine("    Is str1 equal to str2?: {0}", str1.Equals(str2))

      Console.WriteLine()
      Console.WriteLine(" 3) String.Equals(String, String)")
      Console.WriteLine("    Is str1 equal to str2?: {0}", [String].Equals(str1, str2))
   End Sub 'Main
End Class 'Sample
'
'This example produces the following results:
'
' *  The value of String str1 is 'abcd'.
' *  The value of StringBuilder sb is 'abcd'.
'
'1a) String.Equals(Object). Object is a StringBuilder, not a String.
'    Is str1 equal to sb?: False
'
'1b) String.Equals(Object). Object is a String.
' *  The value of Object o2 is 'abcd'.
'    Is str1 equal to o2?: True
'
' 2) String.Equals(String)
' *  The value of String str2 is 'abcd'.
'    Is str1 equal to str2?: True
'
' 3) String.Equals(String, String)
'    Is str1 equal to str2?: True

时间: 2024-10-01 20:47:08

string类equals方兴方法null和""的比较区别的相关文章

编程-String类下的split方法,我截取完字符串后把结果复制给一个数组这个数组长度会加1?

问题描述 String类下的split方法,我截取完字符串后把结果复制给一个数组这个数组长度会加1? 如题,这是代码: String s = ""A1B2C3D4E5F6G7H8""; String[] b = new String[8]; System.out.println(""b:"" + b.length); b = s.split(""[A-Z]""); System.out.

Java面向对象基础--String类中常用的方法

split()和replaceAll()这两个方法需要正则支持. public class StringAPIDemo06{ public static void mian(String args[]){ String str1 = " hello "; //定义字符串 System.out.println(str1.trim());//去掉左右空格后输出 } }

javascript中String类的subString()方法和slice()方法_javascript技巧

在该书2.8.4节中讲到String类中的subString()方法和slice()方法,其用法和返回结果都基本相同,如下示例: 复制代码 代码如下: var strObj = new String("hello world"); alert(strObj.slice(3)); // 输出结果:"ol world" alert(strObj.subString(3)); // 输出结果:"ol world" alert(strObj.slice(

重写equals方法和hashcode方法的作用

 重写equals方法和hashcode方法的作用 作用:区分同一个类的不同对象是否是同一个对象. 应用:在Hibernate 定义 Model实体类的 联合主键的时候用到. 举例说明: 1.数据库中的表teacher表,包括三个字段,id.name.level.其中id和name作为联合主键. 2.类在类的角度,如果想定义一个联合主键,使用多个属性作为实体类的关键字,那么方式为定义一个单独的类,里面包含多个属性,并且将这个类包含在原有类中. public class Teacher{     

Java中Object类的equals()和hashCode()方法深入解析

1.equals() 在初学Java的时候,很多人会说在比较对象的时候,==是比较地址,equals()是比较对象的内容,谁说的? 看看equals()方法在Object类中的定义: public boolean equals(Object obj){ return (this == obj); } 这是比较内容么?明显是比较指针(地址)么... 但是为什么会有equals是比较内容的这种说法呢? 因为在String.Double等封装类中,已经重载(overriding)了Object类的eq

源码-JDK1.7中java.lang.String类的toCharArray方法注释:不能用Arrays.copyOf实现?求解惑

问题描述 JDK1.7中java.lang.String类的toCharArray方法注释:不能用Arrays.copyOf实现?求解惑 JDK1.7重新设计了String类,各个String对象各自维护一个属于自身的char数组,下面是该类中的toCharArray方法的实现源码:public char[] toCharArray() { // Cannot use Arrays.copyOf because of class initialization order issues char

java String类常量池分析及"equals"和"==”区别详细介绍_java

java "equals"和"=="异同 首先简单说一下"equal"和"==" ==操作对于基本数据类型比较的是两个变量的值是否相等, 对于引用型变量表示的是两个变量在堆中存储的地址是否相同, 即栈中的内容是否相同 equals操作表示的两个变量是否是对同一个对象的引用, 即堆中的内容是否相同. 综上,==比较的是2个对象的地址,而equals比较的是2个对象的内容. 再简单介绍一下String类 String类 又称作不可

string-关于Java中 源代码 String 类中的 equals

问题描述 关于Java中 源代码 String 类中的 equals public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String) anObject; int n = value.length; if (n == anotherString.value.length)

java实现利用String类的简单方法读取xml文件中某个标签中的内容_java

1.利用String类提供的indexOf()和substring()快速的获得某个文件中的特定内容 public static void main(String[] args) { // 测试某个词出现的位置 String reqMessage = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" + "<in>" + "<head&g