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(""));
}
装箱
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(""));
}
相关文章推荐
- spring上传文件
- J2ee开发环境搭建之(一)JDK
- struts2 文件上传 三种方式
- java测试运行时间
- java学习3-冒泡排序对数组进行排序
- Spring实现数据库读写分离
- Java HashMap工作原理
- struts2前台页面传值到action的三种方式
- eclipse集成jetty开发web项目(不采用maven方式)
- java file类实现List生成本地文件与续写本地文件
- JAVA实现AES加密
- JAVA基础--db09_java继承-final-抽象类-接口
- 深入理解Java:SimpleDateFormat安全的时间格式化
- 基于spring,Atomikos,mybatis的分布式动态数据源JTA实现
- java 冒泡算法和选择算法的比较
- Struts2中的值栈--ValueStack
- struts2的核心和工作原理
- Java中的ReentrantLock和synchronized两种锁定机制的对比分析
- Struts2的默认配置文件:struts-default.xml
- Struts2中的拦截器