java中==和equals()方法

  java 程序中测试两个变量是否相等有两种方法:

  • ==
  • equals()方法

当使用==判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不一定要求数据类型严格相同),则只要两个变量的值相等时,才会返回true

public class m{
10     public static void main(String[] args){
11         String str1 = "abc";
12         String str2 = "abc";
13         System.out.println(str1 ==str2);
14         String str3 = new String("hello");
15         String str4 = new String("hello");
16         System.out.println(str3 == str4);                           
17         System.out.println(str3.equals(str4));
18     }
19 }

运行结果

String 有一个非常容易迷惑的地方:"hello"直接量和new String("hello")有什么区别?

当我们直接将形如"hello"的字符串直接量时,JVM将会使用常量池来管理这些字符串;

当使用new String("hello")时,JVM会先使用常量池来管理"hello"直接量,在调用String 类的构造器来创建一个新的String对象,新创建的String对象被保存在堆内存当中。

常量池专门用于管理在编译时被确认并保存在已经编译的.class文件中的一些数据。

笨鸟先飞
原文地址:https://www.cnblogs.com/zoutingrong/p/14203607.html