美文网首页
== 和 equals

== 和 equals

作者: 机器不能学习 | 来源:发表于2018-09-20 22:19 被阅读0次

这个问题缠绕了很久。
什么时候用==?
基本数据类型时使用==,byte - long -int -short -char double -boolean时候使用

原理是比较他们的值

复合类型变量呢?
复合型变量比如封装过的String,interger
他们使用==是比较其内存地址,对于object对象来说,它的equals是比较的地址,但是String改写了这个方法,改写后的方法是比较值的

那么数据都是存在哪里呢?
这里的引用类型包括类复合变量,以及对象数组等等....
在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。
(1)当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在方法栈中
(2)当声明的是引用变量时,所声明的变量(该变量实际上是在方法中存储的是内存地址值)是放在方法的栈中,该变量所指向的对象是放在堆类存中的。

   同样在类中声明的变量即可是基本类型的变量 也可是引用类型的变量
   (1)当声明的是基本类型的变量其变量名及其值放在堆内存中的
   (2)引用类型时,其声明的变量仍然会存储一个内存地址值,该内存地址值指向所引用的对象。引用变量名和对应的对象仍然存储在相应的堆中

上面说的基本数据类型的值也在堆中,这个不准确
JVM会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,所以当为Integer i=127时,在自动装箱过程中是取自常量池中的数值,而当Integer i=128时,128不在常量池范围内,所以在自动装箱过程中需new 128,所以地址不一样。
所以当小于127时,int用==是相同的,因为它都指向常量池唯一地址

相关文章

  • Java 比较相等

    Java Equals() 特性 Equals() 和 == 的区别 重写Equals方法 重写HashCode方法

  • equals,==和 equals,hashCode

    == : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型==比较的是值,引...

  • Object的基本方法

    一 equals和hashCode equals和== equals的默认实现就是==,既比较两个对象的引用。 最...

  • 【面试1】

    基础 1、equals和==(equals和==的区别)equals:是Object的一个方法,实现对象的比较;复...

  • java容器

    equals和hashCode equals和hashcode间的关系:如果两个对象相同(即equals比较返回t...

  • Java

    equals和hashcode public boolean equals(Object obj){ retur...

  • ==和equals

    在初学Java时,可能会经常碰到下面的代码: 1String str1 =newString("hello");2...

  • ==和equals

    ==和equals的区别: ==和equals方法都是用来比较两个变量/对象是否相等。 如果没有重写equals方...

  • == 和 equals

    这个问题缠绕了很久。什么时候用==?基本数据类型时使用==,byte - long -int -short -ch...

  • ==和equals

    ==: ==: 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是是否相同,即是否是指的...

网友评论

      本文标题:== 和 equals

      本文链接:https://www.haomeiwen.com/subject/sxhonftx.html