`
xwood
  • 浏览: 102968 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java中equal()与==的区别

阅读更多
一般情况下:

      
引用

equa: 比较“地址+内容”

==:比较地址

String为final类型,其对象按常量处理,final字段对变量指向的存储地址负责,创建后变量所指向的存储地址就不能再改变。另外,字符串对象与字符串常量在进行“+”运算时,效果是不一样的,常量在进行“+”运算时是在编译时进行的,直接将运算结果存储到常量池中,只要在译时可以确实引用的值不会再变化的情况下,都可以在编译完成操作。变量的“+”则是在运行时完成,调用append()方法新建一个对象。具体例子如下:     
引用

String sa = new String("hello");

String sb = new String("hello");//注意,new时创建新对象,对象存放在堆里,故这里产生了两个对象

sa == sb;//false,sa和sb分别存放了两个字符串对象的引用及地址,肯定不同


String sa = "hello";

String sb = "hello";

sa == sb;//true,sa和sb存放的是字符串常量在栈中的地址,是一样的。"hello"与{'h','e','l','l','o'}是一样的。根据栈数据的存储原则,在第二个"hello"存入栈之前,会自动在栈中寻找是否包含了这个字符串。如果已经有了,则直接引用地址就行,如果还没有再添加。


String sa = "hello" + "world";

String sb = "hello world";

sa == sb;//true,编译器会直接在编译时对字符串常量进行连接,因此sa和sb存储的是一样的,常量池中只有“hello world”


String s1 = "hello";

String s2 = "world";

String sa = s1 + s2;

String sb = "hello world";

sa == sb;//false,java程序运行时,对于字符串连接操作符‘+’,是将其转为StringBuilder()类或StringBuffer()类的append()方法进行连接,相当于new了一个新的字符串对象



注:
File类为包装类型,其equal方法已经重写故以下代码返回true.

引用

File f1=new File("c:\\"); 

File f2=new File("c:\\"); 

System.out.println(f1.equals(f2));


分享到:
评论

相关推荐

    equal与==区别

    ### equal与==的区别 在Java编程语言中,`equal`方法和`==`操作符都是用来比较对象之间是否相等的工具,但它们之间存在重要的差异。本文将从三个方面进行详细的对比分析:字符串的比较、非字符串对象的比较以及基本...

    3 Java中关于==和equal的区别 以及equals()方法重写

    但是 Java 中的 == 与 equal 是有区别的。 == 操作符是 Java 语言中的一个二元操作符,用于比较两个操作数的值是否相等。它可以用于基本类型和对象的比较。在基本类型中,== 操作符比较的是变量的值是否相等,而在...

    java中==与equal()区别

    Java 中 == 与 equals() 的区别 Java 中的 == 和 equals() 是两个不同的比较方法,它们之间有着很大的区别。== 操作符专门用来比较两个变量的值是否相等,也就是比较变量所对应的内存中所存储的数值是否相同。用于...

    浅谈java 中equals和==的区别

    在Java编程语言中,`equals()` 和 `==` 运算符经常被用来比较对象,但它们之间存在着显著的区别。理解这些差异对于编写正确、健壮的代码至关重要。以下是关于 `equals()` 和 `==` 在Java中的详细解释。 首先,`==` ...

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

    JAVA 中的 Integer 比较 在 Java 中,我们经常需要比较两个 Integer 对象是否相等,但是在使用 "==" 运算符时,可能会出现一些意外的结果。本文将深入探讨 Java 中的 Integer 比较,了解为什么使用 "==" 运算符可能...

    【Java面试题】equals与==的区别

    【Java面试题】equals与==的区别

    浅析java中String类型中“==”与“equal”的区别

    "浅析Java中String类型中“==”与“equal”的区别" Java 中的 String 类型是一个基本数据类型,然而在使用 String 类型的时候,我们经常会遇到“==”和 “equal” 两个操作符的使用问题。这两个操作符都是用于比较...

    java中 == 与 equal 的区别讲解

    在Java编程语言中,`==` 和 `equals()` 是两种常用的比较操作符,它们在不同情况下有着不同的含义和用途。本文将深入探讨这两者之间的差异,并通过实例代码和理论解释来帮助理解。 首先,`==` 操作符主要用于基本...

    Java_详解_1、==和Equal

    Java_详解_1、==和Equal用法与比较

    java 字符串中文判断

    在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...

    equals与==之间的区别

    在Java编程语言中,`equals`方法与`==`操作符是进行对象比较时最常用的两种方式,但它们之间存在着显著的区别。理解这些差异对于正确地处理对象比较至关重要。 ### `==` 操作符 `==`操作符主要用于比较两个基本...

    与==的区别.docxequal与==的区别.docx

    在Java编程语言中,`equals()`方法和`==`运算符是用于比较对象之间关系的两种常见方式,但它们有着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`==`运算符主要用于比较基本类型(如int、char、...

    java-leetcode题解之Equal Rational Numbers.java

    java java_leetcode题解之Equal Rational Numbers.java

    关于Java中的“==”与equals()

    书上的一个例子说明了“==”与equals()方法的区别。 以下是例子代码(摘自《Java核心技术》卷一): Employee.java package equals; import java.time.*; import java.util.Objects; /* * 一个{@Employee}代表

    java-leetcode题解之Partition Equal Subset Sum.java

    java java_leetcode题解之Partition Equal Subset Sum.java

    细数java中Long与Integer比较容易犯的错误总结.docx

    ### Java中Long与Integer比较易犯错误总结 #### 一、引言 在Java编程过程中,经常需要对数值进行比较操作。对于基本数据类型如`int`和`long`,可以直接使用`==`进行比较。然而,当涉及到它们的包装类`Integer`和`...

    java基础if选择题练习题

    根据提供的信息,我们可以总结出这份文档是关于Java基础的学习材料,特别聚焦于...通过这些知识点的学习和实践,你可以更加熟练地掌握Java中的基本流程控制和运算符使用方法,为进一步深入学习Java编程打下坚实的基础。

    java-leetcode题解之Get Equal Substrings Within Budget.java

    java java_leetcode题解之Get Equal Substrings Within Budget.java

    java-leetcode题解之Partition to K Equal Sum Subsets.java

    java java_leetcode题解之Partition to K Equal Sum Subsets.java

    Java-Java中的判断与关系运算教程

    在Java编程语言中,判断与关系运算构成了程序逻辑的基础,它们是控制程序流程的关键元素。在本教程中,我们将深入探讨这些概念,并了解如何在实际编程中应用它们。 首先,让我们了解一下关系运算符。Java提供了以下...

Global site tag (gtag.js) - Google Analytics