【java】Integer == Integer?
2015-07-26 00:00
671 查看
Integer a = 1; Integer b = 1; Integer c = 128; Integer d = 128; System.out.println(a == b); //true System.out.println(c == d); //false
原因:
Integer里弄了一个缓存,对于在 -128—127 之间的数值,会直接使用该缓存里的对象 也就是说 Integer c = 1 或者 Integer a = Integer.valueOf(1) ,最终 a 得到的是Integer里的缓存对象 同理,b也是获得该相同对象因此 进行 a == b 比较时,a和b引用的是同一个对象,因此就true 而对于128,已经超出缓存范围了,因此 valueOf 方法会生成一个新的Integer对象因此c和d就引用不同 的对象了,进行==比较,当然就false了 另外,对Integer的缓存,我们在日常开发时,对于小的整型值应该充分利用Integer的缓存对象省去过多的对象创建,回收的操作,这样会极大的提高程序性能
详细博文介绍:http://blog.csdn.net/zhoumingp/article/details/8298566
1. equals与 == 的区别?
== 用于比较变量的值,引用类型变量比较地址信息,判断是否指向相同对象;
Object默认的equals方法与 == 比较规则相同;
equals是Object类的方法,重写以后,用于比较两个对象的内容是否“相等”;
2、包装类
包装类的意义
意义:基本类型int没有继承关系,它不是Object的子类。使用包装类对象来描述基本类型数据,而类又是继承自Object的。从而可以让基本类型参与面向对象的开发。
所有基本类型都有一个与之对应的类,即包装类(wapper);
包装类提供了基本类型与字符串类型的相互转换的方法:
包装类是final;
1、抽象类Number
Number 是Byte、Double、Float、Integer、Long和Short类的父类;
Number 的子类必须提供将表示的数值转换为byte、double、float、int、long、short的方法:
—> doubleValue() 以double形式返回指定的数值
—> intValue() 以int形式返回指定的数值
—> floatValue() 以float形式返回指定的数值
注:Number d = 1.23;
System.out.println(d.getClass().getName());
//java.lang.Double 获取变量类型
1) 将基本类型包装为对象
Object o = new Integer(1);
Object o = Integer.valueOf(1);
Object b = new Double(3.6);
Object b = Double.valueOf(3.6);
2) 拆包为基本类型:
Integer i = Integer.valueOf(5);//包装
int n = i.intValue();//拆包,调用父类Number方法返回值
System.out.print(n);//5
3) 自动包装拆包
(java利用编译器进行的语法替换,1.5以后支持)
Integer i = 5; //自动包装
Double d = 5.4;
int n = i + 3; //自动拆包
2、 parseInt()方法
parseInt():将字符串的数据向基本类型转换的算法;
Eg:String s = "123";
int t = Integer.parseInt(s); //字符串转换为int型
double d = Double.parseDouble(s); //字符串转换为double型
“true” -> true Boolean.parseBoolean()
......
如果输入数据(字符串)格式有误,转换不能成功,
会抛出运行异常:NumberFormatException
3、toString()方法
toString():将基本类型转换为字符串String的方法
这个方法是用于输出基本类型的数据
如:int i = 5340;
String s = Integer.toString(i); //值为“5340”
相关文章推荐
- 暴力的java版微型计算器
- JAVA死锁和避免死锁
- JAVA内存泄露和内存溢出
- Java堆内存的10个要点
- 性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(一)
- 性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(二)
- 性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(三)
- 一见钟情!Java闭包
- java使用jdic组件调用ie内核-实现调用本地操作系统文件
- java多线程学习笔记——相关名词介绍
- java web项目中将数据库从SQL Server转为Access出现的常见错误
- javaIO流之字节流的四种方式复制文件方式总结
- java学习笔记(四)networkStream
- Struts2、Spring4、Hibernate4整合 超详细教程
- Java 十进制 向二进制 十六进制 转化
- 第二篇Java语法总结
- JAVA学习笔记--集合
- java获取当前运行路径
- java IO图
- 在java项目开发中要加入的spring的jar包(以spring 3.1版本为例)