您的位置:首页 > 编程语言 > Java开发

java装箱和拆箱已及"=="与"equals"的区别

2015-09-24 14:58 441 查看
一、装箱和拆箱举例

装箱

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";

System.out.println(Integer.valueOf(m)); //转换成为Integer

System.out.println(Integer.valueOf(mm).getClass()); //转换成为Integer

System.out.println(Integer.parseInt(mm)); //转换成为int型

System.out.println(Integer.valueOf(mm)==Integer.valueOf(m)); //基本类型int和封装类比较 false

System.out.println(Integer.valueOf(mm)==(int)Integer.valueOf(m)); //基本类型int和基本类型int比较 true

System.out.println(Integer.valueOf(mm)==Integer.parseInt(mm)); //基本类型int和基本类型int比较 true

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(""));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: