String s = "1";
String s1 = "1";
我们知道,我们可以使用 s==s1; 来判断是否指向同一内存地址。那么,int i = 1;
int j = 1;如何判断 i 和 j 是指向同一个内存地址? 
我们使用 i==j; 只是能比较值是否相等,但是如何判断他们是指向同一个地址?也就是说 内存里其实只存一个“1”,而不是两个。

解决方案 »

  1.   

    int i = 1;
    int j = 1;
    i和j指向的是栈里的同一地址
      

  2.   

    int是基本变量,直接在当前内存环境中分配,
    例如,在成员方法内定义,则在栈上分配;
    作为类成员变量,则在类实例的内存中……
    传递、=赋值都是值语义,没有判断内存地址的操作符。Interger才是对象类型。
      

  3.   

    正解
    所以说刚开始 Java 的面向对象还不是很纯粹 
    后来加了 Interger 之类的几个就差不多了
      

  4.   

    先要java存储原理 给你个例子 如声明int i=1,现在虚拟机内存中找一个地址中的内容是否==1;
    如果==则i指向;否则新建个地址指向这个地址;所以  i 与j 指向同一个地址我想java运行慢这也许就是个原因; 呵呵,老师这两天刚讲的,没想到用上了;
      

  5.   

    Java操作内存不行啊,还是用c试试吧
      

  6.   

    如果你确定你的老师说的是int。。那么你的老师实在是。
      

  7.   

    如果只是基本类型如:int i = 3; int j = 5;的话不存在内存地址这一说.只能是包装类类型,即
    Integer i = 3; Integer j = 3; 这时就可以判断: i ==  j 答案是true因为它和String类型一样先在池中分配空间.
      

  8.   

    int i = 1;
    int j = 1;如何判断 i 和 j 是指向同一个内存地址?  楼主概念错误了,int i; 和 String str; 是完全不同的,
    str是引用,于是指向一个对象
    而i不是引用,故不存在“指向”这一说法。
      

  9.   

    int i = 1;
    int j = 1;
    int是属于基本数据类型,不存在内存地址
      

  10.   

            也不完全对,大家可以试验一下以下程序片段   
            // -128 到 127 为true,其它为false
            for (int i = -256; i <= 256; ++i)
            {
                Integer i7 = i;
                Integer i8 = i;
                System.out.println("i:" + i + "||" +(i7 == i8));
            }
      

  11.   

    然后,麻烦去看看源码,这个是JAVA做了优化
      

  12.   

    java- - 基本类型。比较撒子-。-?你们老师就差没教你们用java去比较寄存器的值了
      

  13.   

    无法比较。Java 语言不操作内存。
      

  14.   

    http://blog.csdn.net/ZangXT/archive/2009/08/05/4410246.aspx