A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田向向 高级黑马   /  2012-7-4 14:28  /  1444 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 田向向 于 2012-7-4 15:00 编辑

第一段:
public static void main(final String[] args) {
  Integer a=new Integer(100);
  Integer b=100;
  System.out.println(a==b);
}
运行结果是false;
第二段
public static void main(final String[] args) {
   Integer a = 100;  
   Integer b = 100;
      
   System.out.println(a==b);
}
运行结果是true,

当我把第一段代码改成

public static void main(final String[] args) {
  int a=new Integer(100);
  int b=100;
  System.out.println(a==b);
}
运行结果也是true,   int和Integer性质不是一样的吗?但是结果为什么不一样呢?谁能给我详细的说说,我也在网上查过int和Integer,但是大部分人都不屑于说,都只是浅浅的说了一下。我还是不大明白,每一个高手都是从像我们这样的菜鸟一步一步的走过来的。希望你们不要嘲笑我的无知,菜鸟变成雄鹰需要你们的帮助,谢谢。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
int 是基本类型,直接存数值
integer是对象,用一个引用指向这个对象
3.int和Integer都可以表示某一个数值;
4.int和Integer不能够互用,因为他们两种不同的数据类型;
所以说: Integer a=new Integer(100);
  Integer b=100;
  System.out.println(a==b);
输出是false的

点评

谢谢对我的帮助  发表于 2012-7-4 14:59

评分

参与人数 1黑马币 +1 收起 理由
田向向 + 1

查看全部评分

回复 使用道具 举报


  1. 第一段:
  2. public static void main(final String[] args) {
  3.   Integer a=new Integer(100);
  4.   Integer b=100;
  5.   /*
  6.   这个问题就和
  7.   String s1 = new String("abc");
  8.   String s2 = "abc";
  9.   是一样的
  10.   */
  11.   System.out.println(a==b);
  12. }
  13. //而
  14. public static void main(final String[] args) {
  15.   int a=new Integer(100);
  16.   /*
  17.   这里有一个自动装箱和自动拆箱的过程.
  18.   整句话被自动拆箱后就变成了
  19.   int a = 100;两句话是"equals"相等的。
  20.   */
  21.   int b=100;
  22.   System.out.println(a==b);
  23. }
复制代码

点评

万分感谢  发表于 2012-7-4 15:00

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
韦念欣 + 1 装箱与拆箱的问题,赞一个!
田向向 + 2 很给力!

查看全部评分

回复 使用道具 举报
Integer是java为int提供的封装类。
int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,
比如int a= 5;
Integer b = 5;

对于a你只能用来做计算。。比如加减乘除,不能操作方法

b你可以用来做很多事情,因为他是一个对象,他有很多方法,你可以像使用String对象那样使用它。

点评

谢谢,  发表于 2012-7-4 15:01
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马