- 论坛徽章:
- 0
|
本帖最后由 navydg 于 2011-12-16 10:26 编辑
- //Person.java
- public class Person
- {
- //年龄
- private int age;
- //身高
- private double height;
- private String name;
-
- public Person(String name){
- if (name==null||name==""){
- System.out.println("人都有名字,初始化时请指定人名");
- this.name=null;
- }else this.name=name;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- //重写toString方法
- public String toString()
- {
- return("Name:"+name+",Age:" + age + ",Height:" + height);
- }
- //重写equals方法
- public boolean equals(Person person){
- if(person!=null&&person.getName()!=null&&this.name==person.getName()){
-
- return true;
- }
- return false;
- }
- public static void main(String[] args){
- Person[] persons=new Person[5];
- persons[0]=new Person("One");
- persons[1]=new Person("Two");
- persons[2]=new Person("Three");
- //按我的想法,这里应该返回1,但是结果是返回-1,发现在调用equals方法时,总是调用
- //Object对象的equals方法,为什么不调用Person类的equals方法呢?怎么不表现多态了?请高手指点!
- int result= ArraysUitls.search(persons,new Person("Two"))
-
- }
- }
- }
复制代码- //ArraysUitls.java
- public class ArrayUitls
- {
- /**
- * 定义一个工具方法,工具方法从字符串数组中找到对应的字符串元素的位置
- * @param array 搜索的数组
- * @param target 搜索的对象
- * @return 目标字符串出现的位置,-1表明找不到
- */
- public static int search(String[] array, String target)
- {
- for (int i = 0 ; i < array.length ; i++ )
- {
- if (array[i]!= null && array[i].equals(target))
- {
- return i;
- }
- }
- return -1;
- }
- public static int search(Object[] array,Object target){
- for(int i=0;i<array.length;i++){
- if(array[i]!=null&&array[i].equals(target)){
- return i;
- }
- }
- return -1;
- }
-
- }
复制代码 |
|