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

【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”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: