首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

类中属性的小疑点

2012-09-07 
类中属性的小问题,在线等已知类Student的定义如下:public class Student {String nameStudent(String nam

类中属性的小问题,在线等
已知类Student的定义如下:
  public class Student {
  String name;
  Student(String name) {
  this.name = name;
  }
  《插入代码》
  }
  main方法代码:
  Student stu1=new Student(new String(“tom”));
  Student stu2=new Student(“tom”);
  System.out.print(stu1==stu2);
  System.out.println(stu1.equals(stu2));
如果控制台的输出结果是false true,那么《插入代码》处填入的代码正确的是:

A.public boolean equals(Object obj) {
  if (obj instanceof Student) {
  Student stu = (Student) obj;
  return stu.name==this.name;
  } else {
  return false;
  }
  }

B.public boolean equals(Object obj) {
  if (obj instanceof Student) {
  Student stu = (Student) obj;
  return stu.name.equals(this.name);
  } else {
  return false;
  }
  }

C.public boolean equals(Object obj) {
  if (obj instanceof Student) {
  return obj.name.equals(this.name);
  } else {
  return false;
  }
  }

D.public boolean equals(Object obj) {
  if (obj instanceof Student) {
  return obj.name==this.name;
  } else {
  return false;
  }
  }

答案:B
现问,为什么选b呢,其它选项为何不可呢,thanks

[解决办法]
A 由于new的和直接写的String 不是一个内存地址 == 比的只是变量的内存地址 所以错(具体见String的地址问题 你百度一下)

B正确的

C obj.name.equals(this.name); obj 没强制转换类型 这写法过不了编译

D 同C
[解决办法]
自己把代码都写好,在机器上试试,就能选出来了。
[解决办法]
百度的关键字应该是 string equals

http://zhidao.baidu.com/question/322203833.html
[解决办法]
A 由于new的和直接写的String 不是一个内存地址 == 比的只是变量的内存地址 所以错(具体见String的地址问题 你百度一下)

B正确的

C obj.name.equals(this.name); obj 没强制转换类型 这写法过不了编译

D 同C

热点排行