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 int a = 5; int b = 5; System.out.println(a == b); // ...
Java 中的 == 和 equals 方法的区别 在 Java 中,比较值大小有两种方法:...== 用于比较基本数据类型和引用数据类型的值,而 equals 用于比较对象的内容是否相等。在实际开发中,需要根据具体情况选择合适的比较方法。
"Java中的==和equals方法比较" 在Java中,`==`和`equals`是两种不同的比较方法,前者比较引用地址,而后者比较对象的实际内容。 首先,让我们来看看`==`运算符的用法。`==`运算符可以用来比较基本数据类型和引用...
Java 是一种面向对象的编程语言,其中有两种数据类型:基本数据类型和引用数据类型。基本数据类型包括整数类型、浮点数类型、字符类型、布尔类型等,共有八种;而引用数据类型则包括 String、数组、类等。 在 Java ...
在Java编程语言中,字符串是比较常见的数据类型,用于存储文本信息。在处理字符串时,我们经常需要比较两个字符串是否相等。"=="和"equals()"是两种常用的字符串比较方法,但它们之间存在一定的区别和使用场景。这篇...
== 比较的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址 equals:在Object中模式采用==比较,通常会重写 String对象重写了 equals,比较的是变量值 从上面我们笼统的来说明了一下两者的不同,...
这两个运算符在比较基本数据类型(如int、char)时表现相同,但当涉及到对象时,它们的行为就有所不同。 首先,我们要知道在Java中,值类型(如int、char)是存储在内存的栈中,而引用类型(如类实例)的变量实际上...
Java中的数据类型可以分为两大类:**值类型**和**引用类型**。 - **值类型**:主要包括所有的基本数据类型(如`int`、`char`、`boolean`等),这些类型的变量存储的是具体的数值。值类型的变量直接存储数据,通常...
对于基本数据类型(如 int、double、char),`==` 直接比较它们的值是否相等。而对于引用类型(如对象),`==` 比较的是它们在内存中的引用地址,也就是说,它检查两个引用是否指向同一个对象实例。 例如,当我们...
虽然两者都可以用于比较,但它们有着本质的区别,特别是在比较对象和基本数据类型值时。 首先,我们来了解"=="运算符。在Java中,"=="运算符用于比较两个对象的引用是否指向同一个实例,或者比较两个基本数据类型的...
它主要用于基本数据类型的比较,如整型、浮点型和字符型等。对于这些类型,`==`直接比较数值是否相等。然而,当用来比较对象时,`==`并不比较对象的内容,而是比较它们在内存中的引用是否相同,也就是它们是否指向同...
- Java提供了如`Integer`、`Double`这样的封装类,它们是基本数据类型对应的类形式,提供了额外的方法和功能,如格式化输出、比较等。 8. **Runtime类与Process类** - `Runtime`类提供了运行时环境的访问,可以...
首先,“==”运算符在Java中用于比较基本类型变量的值是否相等,例如int、char或boolean。对于引用类型,它比较的是两个引用是否指向内存中的同一个对象实例。例如: ```java String str1 = new String("Hello"); ...
== 操作符通常用于比较基本数据类型、枚举类型或对象的引用。 例如,在 Java 中,以下代码将比较两个字符串变量的值是否相同: ```java String s1 = "Monday"; String s2 = "Monday"; if (s1 == s2) { System.out....
在Java程序设计中,基本数据类型和基本操作是编程的基础。本篇将详细阐述这些关键概念。 2.1 引言 在Java中,程序是由数据和对数据进行操作的指令组成的。基本数据类型是构建程序的基础,它们包括数值、字符和布尔...
对于基本数据类型,==号比较的是它们的值;对于引用类型,==号比较的是它们在内存中的存放地址。因此,除非是同一个对象,否则比较后的结果为 false。 例如,在 Java 中,我们可以定义两个整数变量 num1 和 num2,...
在Java编程语言中,`equals()`方法和`==`运算符是用于比较对象的两种不同方式,它们在处理不同类型的数据时有不同的行为。了解这两者的区别对于编写正确的代码至关重要。 `==`运算符: 1. `==`用于比较基本类型的...
- **适用性**:`==`适用于基本类型和引用类型的地址比较,而`equals`主要适用于对象的内容比较。 - **行为**:`==`比较的是内存地址,而`equals`在某些类中比较的是对象的状态(内容)。 - **性能**:通常来说,`==`...