黑马程序员技术交流社区

标题: 两段代码的区别 [打印本页]

作者: 田向向    时间: 2012-7-4 14:28
标题: 两段代码的区别
本帖最后由 田向向 于 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,但是大部分人都不屑于说,都只是浅浅的说了一下。我还是不大明白,每一个高手都是从像我们这样的菜鸟一步一步的走过来的。希望你们不要嘲笑我的无知,菜鸟变成雄鹰需要你们的帮助,谢谢。


作者: 李志广    时间: 2012-7-4 14:47
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:51


  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 14:58
Integer是java为int提供的封装类。
int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,
比如int a= 5;
Integer b = 5;

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

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2