自己写的demo---equals()跟==的区别

 1 package equals;
 2
 3 /*public class equals {
 4     //基本数据类型跟引用数据类型(复合数据类型),
 5      //在引用数据类型中equals方法被重写,一般用来比较内存地址
 6     public static void main(String args[])
 7     {
 8         String a="zengzhiwei";
 9         String b="zengzhiwei";//指向同一个引用
10         if(a==b)//比较内存地址
11         {
12             System.out.println("a==b");
13         }
14         else{
15             System.out.println("a!=b");
16         }
17         if(a.equals(b))//比较值
18         {
19             System.out.println("a equals b");
20         }
21         else{
22             System.out.println("a not equals b");
23         }
24
25     }
26         *//**
27      *         a==b
28             a equals b
29      *//*
30
31 }*/
32 /*public class equals{
33     public static  void main(String args[])
34     {
35         String a="zengzhiwei";
36         String b=new String("zengzhiwei");
37         if(a==b)//比较内存地址
38         {
39             System.out.println("a==b");
40         }
41         else{
42             System.out.println("a!=b");
43         }
44         if(a.equals(b))//比较值
45         {
46             System.out.println("a equals b");
47         }
48         else{
49             System.out.println("a not equals b");
50         }
51
52     }
53     *//**
54      *         a!=b
55             a equals b
56      *//*
57
58
59 }*/
60 //对于复合型数据,如果没有覆盖(重写)equals()方法的话还是是比较的“内存地址”
61 public class equals{
62     public static void main(String args[])
63     {
64         String a="zengzhiwei";
65         String b=new String("zengzhiwei");
66         b.intern();//检查字符串池里是否存在"zengzhiwei"这么一个字符串,如果存在,就返回池里的字符串;
67                    //如果不存在,该方法会 把"zengzhiwei"添加到字符串池中,然后再返回它的引用。
68         if(a==b)//比较内存地
69         {
70             System.out.println("a==b");
71         }
72         else{
73             System.out.println("a!=b");
74         }
75         if(a.equals(b))//比较值
76         {
77             System.out.println("a equals b");
78         }
79         else{
80             System.out.println("a not equals b");
81         }
82
83     }
84     /***
85      *     a!=b
86         a equals b
87         但是在
88         http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html#undefined
89         中是:说什么内存缓冲池。可是我见不到这种效果
90         s1 == s2
91         s1 equals s2
92      */
93 }

还有有几点疑惑的东西:

1.怎么我用了intern()之后还是 a!=b;

2.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean

时间: 2024-10-13 00:15:49

自己写的demo---equals()跟==的区别的相关文章

【转】Java中equals和==的区别

[转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,

equals和==的区别小结

==: == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象.比较的是真正意义上的指针操作. 1.比较的是操作符两端的操作数是否是同一个对象.2.两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过.3.比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如:int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆. equals: equals

[转] equals和==的区别小结

==: == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象.比较的是真正意义上的指针操作. 1.比较的是操作符两端的操作数是否是同一个对象.2.两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过.3.比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如:int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆. equals: equals

equals和==的区别

package day07; public class Test1227 { public static void main(String[] args) { String a = "hello2"; final String b = "hello"; String d = "hello"; String f = "hello"; String c = b + 2; String e = d + 2; System.out.p

java中equals和==的区别 (转)

java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同. equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同.  ==比较的是2个对象的地址,而equals比较的是2个对象的内容. 显然,当equals为true时,==不一定为true: 一.String中

==与equals()区别

equals和==的区别? 经常被简单的理解为equals方法用来比较两个对象是否相同, 而==比较运算符用来比较两个基本数据类型的数值是否相同. 这样的理解无可厚非,但还要透过简单看看本质,才会更清晰. 1,基本数据类型的值. int x = 3; int y = 3; System.out.println(x==y);//true 对于基本数据类型的值只能用 == 比较运算符进行比较是否相等. 那么对于引用数据类型呢? 2,引用数据类型的比较. Demo d1 = new Demo(); D

Java 中 Equals和==的区别

equals和==的区别 equals方法最初是在所有类的基类Object中进行定义的,源码是 1 2 3 public boolean equals(Object obj) {     return (this == obj);     } 由equals的源码可以看出这里定义的equals与==是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String.Integer等类)对equals进行了重写,但是没有对equals进行重写的类(比如我们自己写的类)就只

equals与==的区别

深入理解equals和==的区别: 代码如下: public class IntegerTest { public static void main(String[] args) { Integer a = new Integer(1); Integer b = a; Integer c = new Integer(1); System.out.println(a==b); //true System.out.println(a==c); //false } }

c#中 ==与equals有什么区别(转载)

c#中 ==与equals有什么区别 对于值类型.引用类型来说比较过程怎样的? using System;using System.Collections.Generic;using System.Text; namespace ConsoleApplication1{    class Person    {        private string name; public string Name        {            get { return name; }      

==、equals、hashCode区别?

[==.equals().hashCode()区别?] 1)== 运算符用来比较两个变量的值是否相等. 即该运算符用于比较变量对应得内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用"=="运算符. 2)equals 是Object类提供的方法之一. 每一个Java类都继承自Object类,所以每一个对象都具有equals这个方法. Object类中定义的equals(Object)方法是直接使用"=="运算符比较的两个对象,所以在没