1.如果两个变量说基本数据类型,且都是数值类型,eg.65f,65(不一定要求数据类型严格相同),只要两个变量的值相等,就将返回true

int it=65;
float fl=65.0f;
char ch='A';
System.out.println(it==fl);   //true;
System.out.println(it==ch);  //true;


 


   2.对于两个引用类型变量,只有它们指向同一个对象时,==判断才会返回true,==不可用于比较类型上没有父子关系的两个对象

    引用类型变量:Integer  (基本数据类型 自动装箱/拆箱)

Integer ina=2;
Integer inb=2;
System.out.println(ina==inb);//true;
//两个2自动装箱了
Integer biga=128;
Integer bigb=128;
System.out.println(biga=bigb);//false;
/* java.lang.Integer类的源代码
* static final Integer[] cache=new Integer[-(-128)+127+1];
* static {
* //执行初始化,创建-128到127的Integer实例,并放到cache数组中
* for(int i=0;i<cache.length;i++)
* cache[i]=new Integer(i-128);
* }

* */
/*所以,-128-127之间的同一个整数自动装箱成Integer实例时,永远都是引用cache数组的同一个数组元素,所以它们全部相等
* 但每次把一个不在-128-127范围内的整数自动装箱成Integer实例时,系统总是重新创建一个Integer实例,所以运行结果是false
*/

------------------------------------------------------------------------------------------------------------------------------------------------------------

  //valueOf()
  //如果采用new构造器来创建Integer对象,则每次返回全新的Integer对象
  //如果采用valueOf()方法来创建Integer对象,则会缓存该方法创建的对象

//生成新的Integer对象
Integer in1=new Integer(6);
//生成新的Integer对象,并缓存该对象
Integer in2=Integer.valueOf(6);
//直接从缓存中取出Integer对象
Integer in3=Integer.valueOf(6);
System.out.println(in1==in2);//false
System.out.println(in2==in3);//false
//由于Integer只缓存-128-127之间的值
//因此200对应的Integer对象没有被缓存
Integer in4=Integer.valueOf(200);
Integer in5=Integer.valueOf(200);
System.out.println(in4==in5);//false

-----------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------

    引用类型变量:String

String str1=new String ("hello");
String str2=new String ("hello");
System.out.println(str1==str2);//false;
System.out.println(str1.equals(str2));//ture;
//str1和str2是引用型变量,通过new 关键字创造的String对象,故不想等
/*("hello"和new String("hello")的区别:
* 当java程序直接使用形如“hello”的字符串直接量(包括在编译时就直接计算出来的字符串值)时,
* JVM将会使用常量池来管理这些字符串
* 当使用new String("hello")时,JVM会先使用常量池来管理"hello"直接量,再调用String类的构造器
* 来创造一个新的String对象,新创造的String 对象被保存在堆内存中。
* 也就是:new String("hello")一共产生了两个字符串对象)
*/

---------------------------------------------------------------------------------------------------------------------------------------------------

String s1="xuexijava";
String s2="xuexi";
String s3="java";
//s4后面的字符串值可以在编译时就确定下来,s4直接引用常量池的"xuexi java"
String s4="xuexi"+"java";
//s5和s4一样的
String s5="xue"+"xi"+"java";
//s6后面的字符串值不能在编译时就确定下来,所以不能引用常量池镇南关的字符串
String s6=s2+s3;
//s7在堆内容中,不在常量池中
String s7=new String("xuexijava");
System.out.println(s1==s4);//true;
System.out.println(s1==s5);//true;
System.out.println(s1==s6);//false;
System.out.println(s1==s7);//false;

  //JVM常量池保证相同的字符串直接值只有一个,不会产生多个副本
  //String已经重写了Object的equals()方法,String的equals()方法判断相等的标准:
  //只要两个字符串所包含的字符序列相等,通过equals()比较将返回true



//题目
String s="hello";
String t="hello";
char c[]={'h','e','l','l','o'};
s.equals(t); //true;
t.equals(c); //false;
s==t; //true;
t.equals(new String("hello"));//true;
//t.equals(c)这个语句在instanceof String 这一步就不会通过,也就是char[]压根不能和String比较,类型不同

----------------------------------------------------------------------------------

public class Test{
public static void main(String[] args){
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operator(a,b);
System.out.println(a+","+b);
}
public static void operator(StringBuffer x,StringBuffer y){
x.append(y);
y=x;
}
}

输出结果:AB,B

(java)==和equals()的使用小结的更多相关文章

  1. Java实战equals()与hashCode()

    一.equals()方法详解 equals()方法在object类中定义如下: 代码 public boolean equals(Object obj) { return (this == obj); ...

  2. Java的equals方法的使用技巧

    Java的equals方法的使用技巧 1.业务场景: 在某个社交软件中,要求每个用户的用户名(name)必须独一无二,那么在每次增加新用户的时候,都要对该用户的注册名进行判断,如果当前用户名已经被占用 ...

  3. 【Java】equals()与hashCode()方法详解 (转)

    java.lang.Object类中有两个非常重要的方法: 1 2 public boolean equals(Object obj) public int hashCode() Object类是类继 ...

  4. java keytool证书工具使用小结

    java keytool证书工具使用小结 在Security编程中,有几种典型的密码交换信息文件格式: DER-encoded certificate: .cer, .crt    PEM-encod ...

  5. Java中equals与==和comparaTo的区别

    一.先说说Java中equals和==的区别: Java中的数据类型,可分为两类: 1.基本数据类型(也叫原始数据类型) 八大基本数据类型 char byte short int long doubl ...

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

    java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...

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

    [转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...

  8. Java关键字transient和volatile小结(转)

    Java关键字transient和volatile小结(转) transient和volatile两个关键字一个用于对象序列化,一个用于线程同步,都是Java中比较高阶的话题,简单总结一下. tran ...

  9. JAVA 变量 数据类型 运算符 知识小结

    ---------------------------------------------------> JAVA 变量 数据类型 运算符 知识小结 <------------------ ...

随机推荐

  1. Install .NET Framework 4.5.2 on a Cloud Service Role

    October Guest OS rollout is starting today October 15 2015, and projected to be released on November ...

  2. (Abstract Factory)抽象工厂

    定义: 抽象工厂同工厂方法有相似处:都提供了对子类创建的封装,都是有工厂方法的接口实现类的中决定了子类被创建为什么对象. 不同于工厂方法之处:工厂方法创建的对象只是一个类型的子类,而抽象工厂创建的对象 ...

  3. redhat 6.7 安装nvidia显卡驱动时出现的问题

    一.给Redhat装Nvidia驱动时,出现类似ERROR: The Nouveau kernel driver is currently in use by your system. 的错误,这是应 ...

  4. iptables使用

    iptables规则的查看.添加.删除和修改 1.查看 iptables -nvL --line-number (这个命令跟/etc/init.d/iptables status 输出差不多) -L ...

  5. OLTP与OLAP的差异

    OLTP与OLAP的差异 系统类型 OLTP(在线交易系统) OLAP(联机分析系统),DW(数据仓库) 数据来源 操作数据,OLTP通常是原始性数据源 联合型数据:OLAP数据来源于其他OLTP系统 ...

  6. 网易免费邮件开启smtp教程

    网易免费邮件开启smtp教程     作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们在部署zabbix邮件报警中可能会用到163.com.那么我们如何去开启smtp服务呢? 1 ...

  7. CentOS 7 下引导 Windows7 启动

    Win7/CentOS7 u盘安装后会覆盖硬盘上已有系统的’引导‘ CentOS7下恢复Win7引导 编辑 # vim /etc/grub.d/40_custom 添加 menuentry 'Wind ...

  8. fences(桌面整理软件)与eDiary3.3.3下载链接

    fences:  http://www.jb51.net/softs/309746.html http://jingyan.baidu.com/article/e8cdb32b6e958337042b ...

  9. fackbook的Fresco (FaceBook推出的Android图片加载库-Fresco)

    [Android开发经验]FaceBook推出的Android图片加载库-Fresco   欢迎关注ndroid-tech-frontier开源项目,定期翻译国外Android优质的技术.开源库.软件 ...

  10. ajax“显示弹窗详情”和“删除”功能练习

    1.查看详细信息,以弹窗的形式显示,使用ajax 2.批量删除 “查询”功能可以参考前面的文章,这里只讲解ajax“显示弹窗详情”和“删除”功能 第一:在body中的代码 <title>a ...