測試了一下,用equals和==都能出現相同的結果,老師講錯了么?
public?boolean?equals(Object?obj){
if(this==obj){
System.out.print("你好1");
return?true;
}
if(obj==null){
System.out.print("你好2");
return?false;
}
if(!(obj?instanceof?subjects)){
System.out.print("你好3");
return?false;
}
subjects?subject=(subjects)obj;
if(this.name==null){
if(subject.name==null){
System.out.print("你好4");
return?true;}
else?return?false;
}else{
if(this.name==subject.name){
System.out.print("你好5");
return?true;}
else?return?false;
}運行結果:
subjectsToList得到一個課程數據:1 語文 王老師
subjectsToList得到一個課程數據:2 數學 劉老師
subjectsToList得到一個課程數據:3 政治 陳老師
取得課程:政治
你好1備選課程中是否包含課程:政治,true
新創建課程:政治
你好5備選課程中是否包含課程:政治,true
你好5備選課程中是否包含課程:語文,true
2017-04-19
package?test; public?class?Student?{ ????String?name; ???? ????public?Student(String?name)?{?this.name?=?name;?} ???? ????@Override ????public?boolean?equals(Object?obj)?{ ????????Student?stu?=?(Student)?obj; ????????if?(this.name==stu.name)?return?true;?//?a ????????//?if?(this.name.equals(stu.name))?return?true;?//?b ????????return?false; ????} ???? ????public?static?void?main(String[]?args)?{ ????????String?name0?=?"ddd"; ????????String?name1?=?"ddd"; ????????//?name0?=?new?String("ddd");?//?c ????????//?name1?=?new?String("ddd");?//?d ????????Student?stu0?=?new?Student(name0); ????????Student?stu1?=?new?Student(name1); ????????System.out.println(stu0.equals(stu1)); ????} ????/* ?????*?現在簡化模擬了你的寫法,?控制臺會打印true; ?????*?如果解開c,d兩行的注釋,?控制臺會打印false; ?????*?如果注釋a行,?解開b行注釋,? ?????*?則無論c,d兩行是否注釋,?結果都會是true,? ?????*?這也是我們期待的結果,?所以應該使用equals比較字符串. ?????*?為什么會這樣,?去百度"Java字符串池". ?????*/ }2017-04-13
//測試list的contains方法 ??public??void?testContains(){ subjects?subject=subjectsToList.get(0); System.out.println("取得課程:"+subject.name); System.out.println("備選課程中是否包含課程:"+subject.name+","+subjectsToList.contains(subject)); subjects?subject2=new?subjects(subject.id,subject.name,subject.teacher); System.out.println("新創建課程:"+subject2.name); System.out.println("備選課程中是否包含課程:"+subject2.name+","+subjectsToList.contains(subject2)); subjects?sub=new?subjects("12","語文","王老師"); System.out.println("備選課程中是否包含課程:"+sub.name+","+subjectsToList.contains(sub)); ??} public?static?void?main(String[]?args){ ListTest?list=new?ListTest(); list.subjectsAdd(); list.testContains(); /*list.testInt(); list.listAddArray(); //list.stringTest(); list.listAddIdArray(); list.modifyTest(); list.addChildSubjects(); list.testForEach1();*/ //list.testForEach(); //list.removeTest(); //list.removeIdTest(); //list.removeArray(); }這個是部分的!可能你們更想看這個
2017-04-13
import?java.util.ArrayList; import?java.util.Arrays; import?java.util.Iterator; import?java.util.List; public?class?ListTest?{ public?List<subjects>?subjectsToList; public?ListTest(){ this.subjectsToList=new?ArrayList(); this.list=new?ArrayList(); } public?List<Integer>?list; //測試添加整型變量 public?void?testInt(){ list.add(1); System.out.println("基本類型數據必須用包裝類作"+list.get(0)); } public?void?subjectsAdd(){ //為subjectsToList添加數據! subjects?ar=new?subjects("1","語文","王老師"); subjectsToList.add(ar); //從subjectsToList中得到一個數據 subjects?ar1=(subjects)subjectsToList.get(0); System.out.println("subjectsToList得到一個課程數據:"+ar1.id+"?"+ar1.name+"?"+ar1.teacher); ?????ar1=new?subjects("2","數學","劉老師"); ?????//再往subjectsToList中添加一個數據,之前的數據往后推 ????subjectsToList.add(ar1); ?????ar1=(subjects)subjectsToList.get(1); System.out.println("subjectsToList得到一個課程數據:"+ar1.id+"?"+ar1.name+"?"+ar1.teacher); ar1=new?subjects("3","政治","陳老師"); //在指定位置添加數據,該位置上原來的數據往后移動 subjectsToList.add(0,ar1); ar1=(subjects)subjectsToList.get(0); System.out.println("subjectsToList得到一個課程數據:"+ar1.id+"?"+ar1.name+"?"+ar1.teacher); int?size=subjectsToList.size(); //遍歷方式一 /*for(int?i=0;i<size;i++){ System.out.println("這是List中第"+i+"位的課程信息"); ar1=(subjects)subjectsToList.get(i); System.out.println("課程:"+ar1.id+"?"+ar1.name+"?"+ar1.teacher); } */ //遍歷方式二 /*Iterator?it=subjectsToList.iterator(); System.out.println("有如下課程信息:"); while(it.hasNext()){ ar1=(subjects)it.next(); System.out.println("課程:"+ar1.id+"?"+ar1.name+"?"+ar1.teacher); }*/ } //遍歷方式三?for?each public?void?testForEach(){ for(Object?ar1:subjectsToList){ //subjects?ar1=(subjects)obj; System.out.println("課程:"+ar1.id+"?"+ar1.name+"?"+ar1.teacher); } } //數組內信息整個添加 public?void?testForEach1(){ for(subjects?obj:subjectsToList){ System.out.println("課程:"+obj.id+"?"+obj.name+"?"+obj.teacher); } } public?void??listAddArray(){ subjects[]?subject={new?subjects("4","英語","翟老師"),new?subjects("5","地理","魏老師")}; subjectsToList.addAll(Arrays.asList(subject)); } //添加字符串測試 /*public?void?stringTest(){ String?test="I?love?china!"; ????subjectsToList.add(5,test); ????String?test1=(String)subjectsToList.get(5); ????System.out.println(test1); } */ //添加數組到指定位置 public?void?listAddIdArray(){ subjects[]?subject={new?subjects("6","地理","王老師"),new?subjects("7","社會","劉老師")}; subjectsToList.addAll(0,?Arrays.asList(subject)); } public?void?modifyTest(){ subjectsToList.set(2,?new?subjects("h","heike","hhhhh")); } public?void?removeTest(){ subjects?move=(subjects)subjectsToList.get(0); System.out.println("我即將被刪除,但你刪錯了,我是"+move.name+"?"+move.teacher); subjectsToList.remove(move); testForEach(); } public?void?removeIdTest(){ subjectsToList.remove(0); System.out.println("我再刪除0號??!"); testForEach(); } public?void?removeArray(){ subjects[]?st={(subjects)subjectsToList.get(0),(subjects)subjectsToList.get(1),(subjects)subjectsToList.get(2)}; subjectsToList.removeAll(Arrays.asList(st)); System.out.println("這真是大清除呀!!只剩下這些了!"); testForEach(); } //添加子類對象測試 public?void?addChildSubjects(){ childSubjects?child=new?childSubjects("100","兒子來了","媽媽是誰?"); subjectsToList.add(0,?child); } //測試list的contains方法 ??public??void?testContains(){ subjects?subject=subjectsToList.get(0); System.out.println("取得課程:"+subject.name); System.out.println("備選課程中是否包含課程:"+subject.name+","+subjectsToList.contains(subject)); subjects?subject2=new?subjects(subject.id,subject.name,subject.teacher); System.out.println("新創建課程:"+subject2.name); System.out.println("備選課程中是否包含課程:"+subject2.name+","+subjectsToList.contains(subject2)); subjects?sub=new?subjects("12","語文","王老師"); System.out.println("備選課程中是否包含課程:"+sub.name+","+subjectsToList.contains(sub)); ??} public?static?void?main(String[]?args){ ListTest?list=new?ListTest(); list.subjectsAdd(); list.testContains(); /*list.testInt(); list.listAddArray(); //list.stringTest(); list.listAddIdArray(); list.modifyTest(); list.addChildSubjects(); list.testForEach1();*/ //list.testForEach(); //list.removeTest(); //list.removeIdTest(); //list.removeArray(); } }這個是完整的!
2017-04-13
親把完整代碼貼出來吧,看看。如果用==就可以的話就沒必要重寫equals方法了,this.name是String型的,一般是比較其值是否相等,用equals
2017-04-13
把你的主方法main()里的代碼貼出來看看