`
ncs123
  • 浏览: 103409 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 基本数据类型 ==和equals()比较

    博客分类:
  • J2SE
阅读更多
1.基本类型的存储
  Java 8种基本类型都是存储在堆栈中,例:int i = 1;String str = "hello world";也是存储在堆栈中。
   new基本类型的包装器类型和new String()都是存储在堆内存中。例Integer i = new Integer(1);String str = new String("hello world");

2.==和equels()比较的含义
  1.==是比较对象的内存地址,基本类型就是比较值
  2.java对象的equals()方法都是继承Object.equals(Object o)方法的。比较的内容其实就是使用了“==”比较对象内存地址。
public boolean equals(Object obj) {
        return (this == obj);
    }

  java8种基本类型包装器类和String类都重写了equals()方法,先比较类型在比较值,例如Long.equals(Object obj)
 public boolean equals(Object obj) {
        if (obj instanceof Long) {
            return value == ((Long)obj).longValue();
        }
        return false;
    }


3.实例==和equels()比较
int int3 = 3;
Integer integer3 = new Integer(3);
Integer integer3_2 = new Integer(3);
Integer integer3_3 = 3;
Integer integer3_4 = 3;
Integer integer321 = 321;
Integer integer321_2 = 321;
int int321 = 321;
int int321_2 = 321;
Long long3 = 3l;
System.out.println(integer3==integer3_2);          //false #1
System.out.println(integer3_3==integer3_4);        //true  #2 
System.out.println(integer3==int3);               //true   #3
System.out.println(integer3_3.equals(integer3_4)); //true   #4
		
System.out.println(integer321==integer321_2);      //false #5
System.out.println(int321==int321_2);              //true  #6 
		
System.out.println(long3==int3);                  //true  #7
System.out.println(long3.equals(int3));           //false #8


#1  new两个Integer对象,分配内存在堆中,两个地址块不同
#2 Integer integer3_3 = 3;java编译后的代码为
Integer integer3_3 = Integer.valueOf(3);

查看java Integer.valueOf(int)源码
public static Integer valueOf(int i) {
        assert IntegerCache.high >= 127;
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
原来-128<=int<=127的值java栈中有缓存都指向同一个地址,不在这个范围内的int值都是new一个新的Integer,所以#2为true,#5为false
#3 基础类型和包装类运算时,包装类会拆包,所以就是两个值运算
#7 btye,short,int,long运算时,都会向上转型到同一类型运算
#8 equals()比较是先比较类型在比较值,类型不一样所以为false
分享到:
评论

相关推荐

    Java中的==和equals区别

    当用于基本数据类型时,它比较的是两个操作数的值是否相等;而当用于引用类型时,它比较的是两个引用是否指向内存中的同一对象。 ##### 示例: ```java int a = 5; int b = 5; System.out.println(a == b); // ...

    ==和equals的区别

    Java 中的 == 和 equals 方法的区别 在 Java 中,比较值大小有两种方法:...== 用于比较基本数据类型和引用数据类型的值,而 equals 用于比较对象的内容是否相等。在实际开发中,需要根据具体情况选择合适的比较方法。

    ==与equals的比较

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

    java 资料 equals 与== 的区别

    Java 是一种面向对象的编程语言,其中有两种数据类型:基本数据类型和引用数据类型。基本数据类型包括整数类型、浮点数类型、字符类型、布尔类型等,共有八种;而引用数据类型则包括 String、数组、类等。 在 Java ...

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

    在Java编程语言中,字符串是比较常见的数据类型,用于存储文本信息。在处理字符串时,我们经常需要比较两个字符串是否相等。"=="和"equals()"是两种常用的字符串比较方法,但它们之间存在一定的区别和使用场景。这篇...

    java中==和equals的区别

    == 比较的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址 equals:在Object中模式采用==比较,通常会重写 String对象重写了 equals,比较的是变量值 从上面我们笼统的来说明了一下两者的不同,...

    == and equals() 的比较 绝对值得看

    这两个运算符在比较基本数据类型(如int、char)时表现相同,但当涉及到对象时,它们的行为就有所不同。 首先,我们要知道在Java中,值类型(如int、char)是存储在内存的栈中,而引用类型(如类实例)的变量实际上...

    java中的比较运算符== 与 equals()方法 ..doc

    Java中的数据类型可以分为两大类:**值类型**和**引用类型**。 - **值类型**:主要包括所有的基本数据类型(如`int`、`char`、`boolean`等),这些类型的变量存储的是具体的数值。值类型的变量直接存储数据,通常...

    浅谈java 中equals和==的区别

    对于基本数据类型(如 int、double、char),`==` 直接比较它们的值是否相等。而对于引用类型(如对象),`==` 比较的是它们在内存中的引用地址,也就是说,它检查两个引用是否指向同一个对象实例。 例如,当我们...

    java中equals和==的区别.pdf

    虽然两者都可以用于比较,但它们有着本质的区别,特别是在比较对象和基本数据类型值时。 首先,我们来了解"=="运算符。在Java中,"=="运算符用于比较两个对象的引用是否指向同一个实例,或者比较两个基本数据类型的...

    知识点 比较运算符==和equals方法的比较

    它主要用于基本数据类型的比较,如整型、浮点型和字符型等。对于这些类型,`==`直接比较数值是否相等。然而,当用来比较对象时,`==`并不比较对象的内容,而是比较它们在内存中的引用是否相同,也就是它们是否指向同...

    java教程课件5基本数据类型与引用类型

    - Java提供了如`Integer`、`Double`这样的封装类,它们是基本数据类型对应的类形式,提供了额外的方法和功能,如格式化输出、比较等。 8. **Runtime类与Process类** - `Runtime`类提供了运行时环境的访问,可以...

    Java常见笔试、面试题目深度剖析 相等性(==及equals方法)详解

    首先,“==”运算符在Java中用于比较基本类型变量的值是否相等,例如int、char或boolean。对于引用类型,它比较的是两个引用是否指向内存中的同一个对象实例。例如: ```java String str1 = new String("Hello"); ...

    java中equals和==的区别.docx

    == 操作符通常用于比较基本数据类型、枚举类型或对象的引用。 例如,在 Java 中,以下代码将比较两个字符串变量的值是否相同: ```java String s1 = "Monday"; String s2 = "Monday"; if (s1 == s2) { System.out....

    java 基本数据类型及基本操作.ppt

    在Java程序设计中,基本数据类型和基本操作是编程的基础。本篇将详细阐述这些关键概念。 2.1 引言 在Java中,程序是由数据和对数据进行操作的指令组成的。基本数据类型是构建程序的基础,它们包括数值、字符和布尔...

    Java中equals,hashcode和==的区别

    对于基本数据类型,==号比较的是它们的值;对于引用类型,==号比较的是它们在内存中的存放地址。因此,除非是同一个对象,否则比较后的结果为 false。 例如,在 Java 中,我们可以定义两个整数变量 num1 和 num2,...

    java中equals和==的区别.

    在Java编程语言中,`equals()`方法和`==`运算符是用于比较对象的两种不同方式,它们在处理不同类型的数据时有不同的行为。了解这两者的区别对于编写正确的代码至关重要。 `==`运算符: 1. `==`用于比较基本类型的...

    equals与==之间的区别

    - **适用性**:`==`适用于基本类型和引用类型的地址比较,而`equals`主要适用于对象的内容比较。 - **行为**:`==`比较的是内存地址,而`equals`在某些类中比较的是对象的状态(内容)。 - **性能**:通常来说,`==`...

Global site tag (gtag.js) - Google Analytics