一般情况下:
引用
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与==的区别 在Java编程语言中,`equal`方法和`==`操作符都是用来比较对象之间是否相等的工具,但它们之间存在重要的差异。本文将从三个方面进行详细的对比分析:字符串的比较、非字符串对象的比较以及基本...
但是 Java 中的 == 与 equal 是有区别的。 == 操作符是 Java 语言中的一个二元操作符,用于比较两个操作数的值是否相等。它可以用于基本类型和对象的比较。在基本类型中,== 操作符比较的是变量的值是否相等,而在...
Java 中 == 与 equals() 的区别 Java 中的 == 和 equals() 是两个不同的比较方法,它们之间有着很大的区别。== 操作符专门用来比较两个变量的值是否相等,也就是比较变量所对应的内存中所存储的数值是否相同。用于...
在Java编程语言中,`equals()` 和 `==` 运算符经常被用来比较对象,但它们之间存在着显著的区别。理解这些差异对于编写正确、健壮的代码至关重要。以下是关于 `equals()` 和 `==` 在Java中的详细解释。 首先,`==` ...
JAVA 中的 Integer 比较 在 Java 中,我们经常需要比较两个 Integer 对象是否相等,但是在使用 "==" 运算符时,可能会出现一些意外的结果。本文将深入探讨 Java 中的 Integer 比较,了解为什么使用 "==" 运算符可能...
【Java面试题】equals与==的区别
"浅析Java中String类型中“==”与“equal”的区别" Java 中的 String 类型是一个基本数据类型,然而在使用 String 类型的时候,我们经常会遇到“==”和 “equal” 两个操作符的使用问题。这两个操作符都是用于比较...
在Java编程语言中,`==` 和 `equals()` 是两种常用的比较操作符,它们在不同情况下有着不同的含义和用途。本文将深入探讨这两者之间的差异,并通过实例代码和理论解释来帮助理解。 首先,`==` 操作符主要用于基本...
Java_详解_1、==和Equal用法与比较
在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...
在Java编程语言中,`equals`方法与`==`操作符是进行对象比较时最常用的两种方式,但它们之间存在着显著的区别。理解这些差异对于正确地处理对象比较至关重要。 ### `==` 操作符 `==`操作符主要用于比较两个基本...
在Java编程语言中,`equals()`方法和`==`运算符是用于比较对象之间关系的两种常见方式,但它们有着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`==`运算符主要用于比较基本类型(如int、char、...
java java_leetcode题解之Equal Rational Numbers.java
书上的一个例子说明了“==”与equals()方法的区别。 以下是例子代码(摘自《Java核心技术》卷一): Employee.java package equals; import java.time.*; import java.util.Objects; /* * 一个{@Employee}代表
java java_leetcode题解之Partition Equal Subset Sum.java
### Java中Long与Integer比较易犯错误总结 #### 一、引言 在Java编程过程中,经常需要对数值进行比较操作。对于基本数据类型如`int`和`long`,可以直接使用`==`进行比较。然而,当涉及到它们的包装类`Integer`和`...
根据提供的信息,我们可以总结出这份文档是关于Java基础的学习材料,特别聚焦于...通过这些知识点的学习和实践,你可以更加熟练地掌握Java中的基本流程控制和运算符使用方法,为进一步深入学习Java编程打下坚实的基础。
java java_leetcode题解之Get Equal Substrings Within Budget.java
java java_leetcode题解之Partition to K Equal Sum Subsets.java
在Java编程语言中,判断与关系运算构成了程序逻辑的基础,它们是控制程序流程的关键元素。在本教程中,我们将深入探讨这些概念,并了解如何在实际编程中应用它们。 首先,让我们了解一下关系运算符。Java提供了以下...