String s = "1";
String s1 = "1";
我们知道,我们可以使用 s==s1; 来判断是否指向同一内存地址。那么,int i = 1;
int j = 1;如何判断 i 和 j 是指向同一个内存地址?
我们使用 i==j; 只是能比较值是否相等,但是如何判断他们是指向同一个地址?也就是说 内存里其实只存一个“1”,而不是两个。
String s1 = "1";
我们知道,我们可以使用 s==s1; 来判断是否指向同一内存地址。那么,int i = 1;
int j = 1;如何判断 i 和 j 是指向同一个内存地址?
我们使用 i==j; 只是能比较值是否相等,但是如何判断他们是指向同一个地址?也就是说 内存里其实只存一个“1”,而不是两个。
int j = 1;
i和j指向的是栈里的同一地址
例如,在成员方法内定义,则在栈上分配;
作为类成员变量,则在类实例的内存中……
传递、=赋值都是值语义,没有判断内存地址的操作符。Interger才是对象类型。
所以说刚开始 Java 的面向对象还不是很纯粹
后来加了 Interger 之类的几个就差不多了
如果==则i指向;否则新建个地址指向这个地址;所以 i 与j 指向同一个地址我想java运行慢这也许就是个原因; 呵呵,老师这两天刚讲的,没想到用上了;
Integer i = 3; Integer j = 3; 这时就可以判断: i == j 答案是true因为它和String类型一样先在池中分配空间.
int j = 1;如何判断 i 和 j 是指向同一个内存地址? 楼主概念错误了,int i; 和 String str; 是完全不同的,
str是引用,于是指向一个对象
而i不是引用,故不存在“指向”这一说法。
int j = 1;
int是属于基本数据类型,不存在内存地址
// -128 到 127 为true,其它为false
for (int i = -256; i <= 256; ++i)
{
Integer i7 = i;
Integer i8 = i;
System.out.println("i:" + i + "||" +(i7 == i8));
}