码迷,mamicode.com
首页 > 编程语言 > 详细

java_==和equal方法

时间:2017-08-01 19:06:51      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:int   sys   char   har   调用   输出   string   运算   数值   

java测试两个变量是否相等有两种方式:

  一种是利用“==”运算符 值和对象的判断

  一种是利用equals()方法 只是值的判断

1.如果两个变量是基本类型变量,且都是数值类型(不一定数值类型严格相同),则只要两个变量的值相等,就返回true。

  例如:

    int a=65;

    float b=65.0f;

    char c="A";

    System.out.print("65和65.0f是否相等:"+(a==b));//输出true

    System.out.print("65和A是否相等:"+(a==c));//输出true

2.如果两个变量是引用类型变量,只有它们指向同一个对象时,“==”判断才会返回true,但equals()方法可以比较。“==”不可用于比较类型上没有父子关系的两个对象。

  例如:

    String a=new String("123");

    String b=new String("123");

    System.out.print("a和b是否相等:"+(a==b));//输出false

    System.out.print("a和b是否相等:"+(a.equals(b));//输出true

    //a1直接引用常量池中的“你好java”

    String a1="你好java";

    //b1的“你好”、“java”在编译时就确定下来了,直接引用常量池中的"你好java"

    String b1="你好"+"java";

    String s1="你好";

    String s2="java";

    //c1后面的字符串值不能在编译时就确定下来,所以不能直接引用常量池中的"你好java"

    String c1=s1+s2;

    //关键字new调用构造器,创建一个新的String对象,并引用变量d1指向该对象

    String d1=new String("你好java");

    System.out.print(a1==b1);//输出true

    System.out.print(a1==c1);//输出true

    System.out.print(a1==d1);//输出false

JVM使用常量池

  常量池(constant pool):专门用于管理在编译时被确定并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口中的常量,还包括字符串常量。

  当使用new String("你好java")时,JVM会先使用常量池来管理“你好java”直接量,再调用String类的构造器创建字符串对象。

java_==和equal方法

标签:int   sys   char   har   调用   输出   string   运算   数值   

原文地址:http://www.cnblogs.com/iT-txw/p/7269840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!