黑马程序员技术交流社区
标题:
对象的实例化问题
[打印本页]
作者:
静心远行
时间:
2013-12-26 21:34
标题:
对象的实例化问题
本帖最后由 静心远行 于 2013-12-27 13:19 编辑
学习时遇到问题,代码如下:
public class test4
{
int x;
test4(int i)
{
x = i;
}
public static void main(String args[])
{
test4 m1 = new test4(100);
test4 m2 = new test4(100);
if (m1.equals(m2))
{
System.out.println("Both are equal");
} else
{
System.out.println("Both are not equal");
}
}
}
复制代码
其中对象m1和m2是否在内存中是同一个地址,即它们两个是不是同一个对象。最后的输出结果是?
作者:
(0.0)’
时间:
2013-12-26 21:53
public class Test4
{
int x;
Test4(int i)
{
x = i;
}
public static void main(String args[])
{
Test4 m1 = new Test4(100);
Test4 m2 = new Test4(100);
if (m1.equals(m2))
{
System.out.println("Both are equal");
} else
{
System.out.println("Both are not equal");
}
/*
首先,你使用equals方法,这个类没有复习Object中的equals方法,所以这里的调用的是比较内存引用地址,
而new一个对象,就在内存中创建一个对象,所以结果会是:Soth are not equal
还有,就是注意书写规范,养成好的习惯,类名开头要大写,推荐看毕向东老师的视频
*/
}
}
复制代码
作者:
静心远行
时间:
2013-12-27 13:18
(0.0)’ 发表于 2013-12-26 21:53
懂了,谢谢!
作者:
刘旭升
时间:
2013-12-27 15:59
package test;
public class test4{
int x;
test4(int i){
x = i;
}
public static void main(String args[]){
test4 m1 = new test4(100);
test4 m2 = new test4(100);
if (m1.equals(m2)){
System.out.println("Both are equal");
} else{
// System.out.println("Both are not equal");
}
System.out.println("对象m1内存地址:"+m1);
System.out.println("对象m2内存地址:"+m2);
System.out.println("m2中x的值:"+m2.x);
System.out.println("m2中x的值:"+m1.x);
}
}
复制代码
这个代码你可以运行一下,你会清楚的看到自己的疑惑。1#的哥们讲的很对。两个对象,内存地址定不相同。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2