`

java中==和equals的区别

阅读更多
1.==和equals的区别
  ==是运算符 用来比较两个数据是否相等
  比较的是变量所代表的内存地址是否一样
  equals是object类提供的的一个方法
  equals是否相等取决于类中的这个方法是如何实现【重写】的
  String类中的equals方法是比较值是否相等
  object类是Java中类层次结构的根类
  用来比较两个数据是否相等
  Java中所有的类都默认是object的子类
  数组类型也是object的子类



public class f {
       public static void main(String[] args) {
		  int a=0;
		  int b=0;
		  String s1="ABCDEFGj";
		  String s2="ABCDEFG";
		  if(a==b){
		  System.out.println("这两个数相等!");
		  }
		  System.out.println(s1.equals(s2));
	}
		  
}


public class g {
	public static void main(String[] args) {
		
	
	    //String s1,s2,s3 = "abc", s4 ="abc" ;

	      String  s1 = "abc";

	       String s2 = "abc";

	     if(s1==s2){
	    	 System.out.println("这两个变量的内存地址不一样,它们指向的对象不一样");
	     }
	     //两个变量的内存地址不一样,也就是说它们指向的对象不 一样,
            System.out.println(s1.equals(s2));
	//故不相等。
	}
}

栈内存:用来存放变量的由系统管理  用来存放变量的由系统管理
堆内存:由程序申请使用和管理     栈内存由程序申请使用和管理
常量池:基本类型的值和字符串值(不能出现重复的值
)      
基本类型和对应的类类型在进行运算的时候,类类型会自动的拆箱【拆包】

equals 方法是 java.lang.Object 类的方法。
有两种用法说明:

(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。

“==”比较两个变量本身的值,即两个对象在内存中的首地址。

“equals()”比较字符串中所包含的值是否相等

public class h {
     public static void main(String[] args) {
		StringBuffer s1=new StringBuffer("a");//地址StringBuffer缓冲器
		StringBuffer s2=new StringBuffer("a");//地址StringBuffer缓冲器
		System.out.println(s1.equals(s2));
		//比较地址的
	     	
    	System.out.println(s1.equals(s2));
	
	}
}


解释:StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,
          

          而Object类中的equals方法是用来比较“地址”的,所以等于false.



(2)对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其

对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。

比如:

class A

{

      A obj1   =   new  A();

      A obj2   =   new  A();

}
class main{
   public static void main(String[] args){
      if(obj1==obj2){
           System.out.println("这两个对象在堆内存的首地址相等,两个引用变量不是指向同一个对象的");
          }
      System.out,println(obj1.equals(obj2));
}

那么:obj1==obj2是false

            obj1.equals(obj2)是false



但是如加上这样一句:obj1=obj2;

那么  obj1==obj2  是true

          obj1.equals(obj2) 是true



总之:equals方法对于字符串来说是比较内容的,而对于非字符串来说是比较

其指向的对象是否相同的。

             == 比较符也是比较指向的对象是否相同的也就是对象在对内存中的的首地址。

 



String类中重新定义了equals这个方法,而且比较的是值,而不是地址。所以是true。

关于equals与==的区别从以下几个方面来说:

(1) 如果是基本类型比较,那么只能用==来比较,不能用equals

比如:
public class TestEquals {
public static void main(String[] args)
{
int a = 3;
int b = 4;
int c = 3;
System.out.println(a == b);//结果是false
System.out.println(a == c);//结果是true
System.out.println(a.equals(c));//错误,编译不能通过,equals方法
//不能运用与基本类型的比较
}
}

String(char[],startwith,endwith)
String(char[] c)
String:底层是基于char[]的实现 ,一旦定义,长度就不可变 ,改变长度需要重新创建字符串
StringBuffer:缓冲字符串,长度是可变的,当改变长度时,效率最高是线程安全的 可以在多线程中使用
StringBuilder:缓冲字符串,长度是可变的,当改变长度时,效率最高,线程不安全
分享到:
评论

相关推荐

    Java中的==和equals区别

    ### Java中的`==`与`equals`方法的区别详解 在Java编程中,比较对象的相等性是一个常见的需求,但很多初学者对于`==`运算符与`equals`方法的区别容易混淆。本文将深入探讨两者之间的差异,以及它们在不同场景下的...

    java中equals和==的区别

    Java 中 equals 和 == 的区别 Java 中的 equals 和 == 是两个不同的概念,很多开发者容易混淆它们。理解这两个概念的区别是非常重要的,因为它们对编程的正确性和性能都有很大的影响。 首先,我们需要了解 Java ...

    ==和equals的区别

    Java 中的 == 和 equals 方法的区别 在 Java 中,比较值大小有两种方法:== 和 equals,这两个方法的使用场景和比较规则不同,下面我们将详细探讨它们的区别。 基本数据类型和引用数据类型 在 Java 中,有两种...

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

    "java基础之“==”与“equals”区别详解" 根据java基础之“==”与“equals”区别详解,以下是相关知识...学习java基础之“==”与equals()需要充分理解它们的区别和应用场景,并且需要通过实践和练习来熟悉它们的使用。

    java中的==和equals()方法1

    在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...

    ==与equals的比较

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

    java中equals和==的区别.doc

    Java 中 equals 和 == 的区别 Java 中的 equals 和 == 是两个不同的运算符,它们之间的区别是非常重要的。 首先,我们需要了解 Java 中的内存模型。在 Java 中,变量可以分为两种:基本类型(primitive type)和...

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

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

    简单介绍java中的“==”和equals

    简单介绍java中的“==”和equals

    浅谈java 中equals和==的区别

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

    Java中==与equals的区别小结

    在Java编程语言中,了解`==`和`equals()`的区别是非常重要的,这涉及到对基本类型和对象的正确比较。下面我们将详细探讨这两个操作符的工作原理及其在不同情况下的使用。 首先,`==`操作符主要用于比较基本类型的...

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

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

    Java中==运算符与equals方法的区别及intern方法详解

    ==运算符、equals方法和intern方法都是Java中的重要概念,它们之间的区别和联系是Java程序设计语言中的一個非常重要的知识点。 知识点: 1. ==运算符:比较两个对象是否是同一个对象。 2. equals方法:比较两个...

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

    Java 中关于 == 和 equal 的区别 及其 equals() 方法重写 Java 语言是 Sun 公司的开发成果,其主要特点是可以执行强,与平台的无关性使其实用性更强。但是 Java 中的 == 与 equal 是有区别的。 == 操作符是 Java ...

    字符串比较之 “==”和 “equals”

    "=="和"equals()"是两种常用的字符串比较方法,但它们之间存在一定的区别和使用场景。这篇博客将深入探讨这两个方法的工作原理以及何时应该使用它们。 首先,"=="运算符在Java中主要用于比较基本类型变量的值,如...

    Java中==符号与equals()的使用详解(测试两个变量是否相等)

    Java中==符号与equals()的使用详解是Java程序中的一个重要概念,它们都是用来测试两个变量是否相等的,但是它们的使用方法和应用场景是不同的。下面我们将详细介绍Java中==符号与equals()的使用详解。 一、使用==...

    String中==与equals区别验证

    在Java编程语言中,`==` 运算符与 `equals()` 方法被广泛用于比较对象,尤其是当处理字符串(`String` 类)时。这两者之间的区别是理解Java内存管理和对象引用的关键。以下是对给定代码片段中所展示概念的详细解析。...

    java中==与equal()区别

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

Global site tag (gtag.js) - Google Analytics