`
zhangcong170
  • 浏览: 71749 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java的equeals方法和==方法的比较

    博客分类:
  • j2se
阅读更多

      我们知道,在java中,equals()方法和==方法是有比较大的区别的,equals()方法执行的是值的比较,而==方法执行的是地址的比较,也就是对象的引用的比较。现在我们来看一段代码

   

Integer a=new Integer(1);
Integer b=new Integer(1);
System.out.println("测试equals方法 "+a.equals(b));
System.out.println("测试==方法 "+(a==b));
System.out.println("******************");
String a1="a";
String a2="a";
System.out.println("测试equeals方法 "+a1.equals(a2));
System.out.println("测试==方法  "+(a1==a2));

 输出结果如下:

测试equals方法 true
测试==方法 false
******************
测试equeals方法 true
测试==方法  true

      对于Integer对象,由于a和b是两个不同的Integer对象,但是它们的值是相同的,所以执行equals方法为true,而执行==方法明显为false,两个对象不同,当然它们在内存中的地址就不相同了。

      但是,当我们以这种方式去看String时,就开始困惑了,其实这就是String对象和普通的java对象不同之所在。当执行String a1="a";String a2="a";时,a1和a2是指向共同的内存的!他们指向相同的地址,所以无论是equals方法还是==方法,二者的结果均为true。但是,如果我们修改其中的一个String对象,会不会对另一个对象的值有影响呢?请看如下代码:

      

a1="a1";
System.out.println(a1);
System.out.println(a2);

 输出结果如下:

 

a1=a1
a2=a

      a1与a2的值又不同了!这真是奇怪了,在执行a1="a1"之前,a1与a2明明指向相同的内存地址,为什么当a1改变时却对a2没有任何的影响呢?

      原来,当执行a1="a1";时,系统会在内存中重新划分一块区域存放“a1”这个字符串,并将Sting变量a1指向这个地址,也就是说,a1指向的地址发生了改变!这就是String与一般类型的区别,当Stiring的值发生改变时,它会重新分配内存区域。所以a1和a2的值不相同,改变它们的任何一个,都不会对另外一个产生影响。

0
0
分享到:
评论

相关推荐

    java 资料 equals 与== 的区别

    在上面的例子中,str1 和 str2 是两个字符串对象,equals 方法比较的是它们的值,因为它们的值相等,所以输出“对象 str1 和对象 str2 的值相等”。 == 运算符比较的是变量的值或内存地址,而 equals 方法比较的是...

    java中equals和==的区别.pdf

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象的工具,但它们之间有着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`equals()`方法是`java.lang.Object`类的一个成员方法...

    java中equals和==的区别[文].pdf

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象的工具,但它们之间存在着显著的区别。理解这些差异对于编写...在使用自定义类时,如果希望`equals()`方法比较对象的内容,记得在类中重写它。

    JAVA Integer == equal 比较 doc 比较大小 是否相等

    使用 equals() 方法比较 Integer 对象 为了正确地比较两个 Integer 对象,我们应该使用 equals() 方法,而不是使用 "==" 运算符。equals() 方法将比较两个对象的实际值,而不是它们的引用。 例如,在下面的代码中...

    浅谈Java中的equals和==Java开发Java经验

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别和用法对于任何Java开发者来说都至关重要,特别是对于那些正在积累Java开发经验的人来说。 首先,让我们...

    java基础之 “==”与“equals”区别详解

    对于引用类型来说,“==”操作符比较的是对象的引用是否相同,而equals()方法比较的是对象的值是否相同。 5. String类中的equals()方法: 在String类中,equals()方法被重写,以便比较字符串的值。String类中的...

    浅谈java 中equals和==的区别

    因此,即使 `str1` 和 `str3` 是不同的对象,它们的 `equals()` 方法比较内容后也会返回 `true`,因为它们包含相同的字符序列。 `intern()` 方法是 `String` 类的一个特殊方法,它会检查字符串常量池中是否存在与...

    ==和equals方法究竟有什么区别

    在Java编程语言中,`==`和`equals()`方法是用来比较对象之间关系的两种常见方式,但它们在使用上有着显著的区别。 首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型...

    JAVA常用类和方法

    ### JAVA常用类和方法知识点详解 #### 一、字符串处理 **1. 获取字符串长度** - **方法**: `length()` - **用途**: 返回字符串的长度。 - **示例**: ```java String str = "Hello"; int len = str.length...

    java 通过反射获取类上注解,方法上注解,注解里的值及方法参数

    反射(Reflection)是Java的一个强大特性,允许程序在运行时检查类、接口、字段和方法等信息。本教程将深入探讨如何通过反射获取类、方法上的注解以及注解中的值和方法参数。 1. **注解的定义与使用** 注解以`@`...

    ==与equals的比较

    "Java中的==和equals方法比较" 在Java中,`==`和`equals`是两种不同的比较方法,前者比较引用地址,而后者比较对象的实际内容。 首先,让我们来看看`==`运算符的用法。`==`运算符可以用来比较基本数据类型和引用...

    java 泛型方法使用示例

    Java 泛型是Java SE 5.0引入的一...以上就是关于Java泛型方法的基本介绍和使用示例,希望对你有所帮助。如果你想要进一步了解或实践,可以参考提供的`GenericMethod.java`源代码文件,或者查阅`Java.jpg`中的相关图片。

    XSLT 调用 Java 的类方法

    xmlns:java="cc.unmi.commons" exclude-result-prefixes="java"> ``` 2. **调用Java方法**:在XSLT模板中通过指定的前缀和完整的类名加方法名来调用Java方法,并传入相应的参数。 ```xml ...

    java中main方法发送httpPost请求

    这里我们将深入探讨如何在Java的main方法中实现这个功能,以及相关的HTTP请求和响应处理。 首先,Java中发送HTTP POST请求通常会用到`HttpURLConnection`类或者第三方库如Apache HttpClient或OkHttp。下面我们将...

    Java解析wsdl文档获取具体的方法与参数

    Java作为一种广泛使用的编程语言,提供了处理WSDL文档的能力,帮助开发者获取服务中的方法和参数信息。本篇将深入探讨如何在Java中解析WSDL文档并提取关键细节。 首先,理解WSDL文档的结构至关重要。WSDL文档包含了...

    java解析wsdl文档获取方法与参数

    本文将深入探讨如何使用Java来解析WSDL文档,提取其中的方法和参数。 首先,理解WSDL的基本结构是必要的。一个WSDL文件通常包含服务定义、消息定义、端点(port)定义以及绑定定义。服务定义指明了服务的名称,消息...

    Java方法实例

    ### Java方法实例详解 #### 获取环境变量与系统属性 在Java中,我们可以通过`System`类来获取环境变量以及系统的一些基本属性。 1. **获取环境变量:** ```java String path = System.getenv("PATH"); // 获取...

    java反射,获取所有属性、方法以及List集合类

    对于私有字段和方法,可以使用`setAccessible(true)`来绕过访问限制。这需要谨慎使用,因为可能破坏封装性。 ```java field.setAccessible(true); field.set(obj, newValue); ``` 总结来说,Java反射提供了一...

Global site tag (gtag.js) - Google Analytics