[Java 基础]-- java装箱和拆箱已及"=="与"equals"的区别

一、装箱和拆箱举例

装箱

Integer m=5;

实际上详细解释是:Integer m=Integer.valueOf(5); 调用方法  public static Integer valueOf(String s) throws NumberFormatException{}

注意:Integer.parentInt()是将String类型转化为int(基本数据类型)public static int parseInt(String s) throws NumberFormatException {}

    Integer.valueOf()是可以接受int参数,转化int成为Integer(封装类)

拆箱

int p=new Integer(5);

注意:自动装箱和拆箱是由编译器来完成的,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。

package web.md.util;
import org.junit.Test;
public class rrr {
@Test
public  void test(){
int m=9;
String mm="9";
//转换成为Integer
System.out.println(Integer.valueOf(m));                                               //转换成为Integer      
System.out.println(Integer.valueOf(mm).getClass());                                 //转换成为int型         
System.out.println(Integer.parseInt(mm));                                            //基本类型int和封装类比较                 false                
System.out.println(Integer.valueOf(mm)==Integer.valueOf(m)); 
 //基本类型int和基本类型int比较         true                      
System.out.println(Integer.valueOf(mm)==(int)Integer.valueOf(m));               
  //基本类型int和基本类型int比较         true
System.out.println(Integer.valueOf(mm)==Integer.parseInt(mm));                

System.out.println(Integer.valueOf(m).equals((int)Integer.parseInt(mm)));   
}
}

二、“==”与"equals"比较

int m=9;

int m2=9;

Integer n=8;

Integer n2=9;

double d=8.3d;

        String  ms="01022001";

1、“equals”只能是对象和基本类型比较

     正确:n2.equals(m2)------>可以实现比较返回true或者false

     错误:m2.equals(n2)------>不可实现比较

2、“==”只能比较基本类型和同类型间的比较(如Integer 和int或者int与Double之间,而int和String不能比较)

     正确:m==n,d==m  可以实现比较

     错误:m==ms          不可实现比较

特别指出:速度比较   ”==“ 大于 "equals" 比较的速度

   原因:"=="只是比较地址(引用)是否相同,而"equals"比较地址中的值是否相同,不是比较地址

 

三、注意

使用equals方法时,建议如下方式

@Test
public void testString(){
String str=null;
//强制使用该方式!原因是该方式在str为null时,不抛出异常
System.out.println("".equals(str));
//不要使用该方式!原因是该方式在str为null时,会抛出异常,导致又一次地处理异常
System.out.println(str.equals(""));
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往事随风ing

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值