返回列表 發帖

今日課程重點

一、Eclipse的安裝與使用
   1.在google上尋找eclipse download
   2.進入Eclipse的官網,選擇Classic版本中符合你OS的版本下載
   3.解壓縮後放在硬碟鐘即可執行(執行先要先安裝好JDK)
二、使用Scanner取代Console來取得鍵盤的輸入
請參考:http://ray-android.blogspot.tw/2012/10/java-console.html
三、&&與&、 ||與|的不同
   &與|兩邊的條件式都會執行到
   &&與||前面的條件式若是已經讓條件准成立時不會再執行後面的條件式
四、String類別的介紹

各位同學可以對四的主題發表自己的心得嗎?程式有Copy回家的也歡迎貼上來,若能加入自己的注解或進階的測試程式更好哦~

  1. class MyString  //自行建立一個字串類別
  2. {
  3.         private String mString;  //一個字串屬性,用來儲存產生的物件中的字串內容
  4.        
  5.         public void set(String ss)  //設定方法,設定mString的內容
  6.         {
  7.                 this.mString = ss;
  8.         }
  9.         public String get()   //取用方法,讀取mString的內容
  10.         {
  11.                 return this.mString;
  12.         }
  13. }

  14. public class MyStringTest
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 String stringA,stringB;  //建立兩個String物件:stringA,stringB
  19.                 stringA = "hello";       //將stringA的內容設定為 "hello"
  20.                 stringB = stringA;       //令stringB等於stringA
  21.                 if(stringA == stringB)   //判斷stringA是否等於stringB並印出結果
  22.                         System.out.println("stringA = stringB");
  23.                 else
  24.                         System.out.println("stringA != stringB");
  25.                
  26.                 stringA = "bye bye";    //將stringA的內容改為 "bye bye"
  27.                 if(stringA == stringB)  //判斷stringA是否等於stringB並印出結果
  28.                         System.out.println("stringA = stringB");
  29.                 else
  30.                         System.out.println("stringA != stringB");
  31.                
  32.                
  33.                 MyString myStringA,myStringB; //建立兩個MyString物件:myStringA,myStringB
  34.                 myStringA = new MyString();   //建立myStringA的實體
  35.                 myStringA.set("hello");       //將myStringA的內容設定為 "hello"
  36.                
  37.                 myStringB = myStringA;       //令myStringB等於myStringA
  38.                 if(myStringA == myStringB)   //判斷myStringA是否等於myStringB並印出結果
  39.                         System.out.println("myStringA = myStringB");
  40.                 else
  41.                         System.out.println("myStringA != myStringB");
  42.                
  43.                 myStringA.set("bye bye");
  44.                 if(myStringA == myStringB)  //判斷myStringA是否等於myStringB並印出結果
  45.                         System.out.println("myStringA = myStringB");
  46.                 else
  47.                         System.out.println("myStringA != myStringB");
  48.         }

  49. }
複製代碼

TOP

有時間做作業的同學請完成下面作業~
請大家寫一個程式:
1.使用new的方式來產生兩個字串,內容均為"Hello"
2.使用==來判斷這兩個字串是否相同並輸出結果
3.使用equals來判斷這兩個字串是否相同並輸出結果(利用Eclipse的程式提示來學習用法)
4.將結果也貼上來並說明你對結果的解釋!

TOP

老師不好意思 , "使用equals來判斷"  , 這句有點忘了怎麼做 .

TOP

  1. public class MyClass_test
  2. {
  3.         public static void main(String args[])
  4.         {
  5.                 String str1 = new String("hello");  
  6.                 String str2 = new String("hello");
  7.                
  8.                 if(str1==str2)
  9.                 {
  10.                         System.out.println("str1==str2");
  11.                 }
  12.                 else
  13.                 {
  14.                         System.out.println("str1!=str2");
  15.                 }
  16.                
  17.                 if(str1.equals(str2))
  18.                 {
  19.                         System.out.println("str1 equal str2");
  20.                 }
  21.                 else
  22.                 {
  23.                         System.out.println("str1 not equal str2");
  24.                 }
  25.                
  26.                 System.out.println("str1 =" + str1);
  27.                 System.out.println("str2 =" + str2);               
  28.         }
  29. }
複製代碼
  1. 執行結果
  2. str1!=str2
  3. str1 equal str2
  4. str1 =hello
  5. str2 =hello
複製代碼
"=="為比較是否為同一物件,若指向同一物件則傳回true
"equals"比較了2個物件的屬性(?),若相同則傳回true
那若是基本型態的比較(非物件)是否"=="和"equals"都會傳回一樣結果 是這樣嗎??

TOP

有聰:你的問題尚哲的程式裡有答案了,我就不多說了~
尚哲:你實在太認真了,給你一個"讚",至於你的問題:
1."equals"比較了2個物件的屬性(?) --> 比較正確的說法是比較兩個物件的"內容"~
2.基本形態沒有指標只有實體(不會講物件),所以沒有比較是否為同一物件(應該稱之為實體)的可能性(絕對不是同一個實體),因此這時的==就是在比較內容了,所以就沒有equals了哦~

TOP

  1. package My_20121012;

  2. class MyStrLoris
  3. {
  4. String mString; //自訂值
  5. void set (String ss)  //set 放入
  6. {
  7.   mString=ss;
  8. }
  9. public String get()  //get 取出
  10. {
  11.   return mString;
  12. }
  13. }

  14. public class MyString2 {

  15.         /**
  16.          * @param args
  17.          */
  18.         public static void main(String[] args) {
  19.                 // TODO Auto-generated method stub
  20.                
  21.                 String str1 = new String("Hello");
  22.                 String str2 = new String("Hello");
  23.                 //str2 = str1;
  24.                
  25.                 if (str1==str2) //比較是否為同一實體!!
  26.                     System.out.println("str1==str2");
  27.             else
  28.                     System.out.println("str1!=str2");
  29.                
  30.                 if (str1.equals(str2))    //使用equals,比較屬性(內容)!!
  31.                     System.out.println("msl1==msl2");
  32.             else
  33.                     System.out.println("msl1!=msl2");
  34.                
  35.                 str2 = str1; //指派str2等於str1!!
  36.                 if (str1==str2)
  37.                     System.out.println("str1==str2");
  38.             else
  39.                     System.out.println("str1!=str2");
  40.                
  41.                
  42.                 if (str1.equals(str2))    //再使用equals,比較屬性(內容)!!
  43.                     System.out.println("msl1==msl2");
  44.             else
  45.                     System.out.println("msl1!=msl2");

  46.         }

  47. }
複製代碼

TOP

  1. class MyString  
  2. {
  3.         private String mString;  
  4.         
  5.         public void set(String ss)  
  6.         {
  7.                 this.mString = ss;
  8.         }
  9.         public String get()   
  10.         {
  11.                 return this.mString;
  12.         }
  13. }

  14. public class Homework
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                                 
  19.                 MyString myStringA,myStringB;
  20.                 myStringA = new MyString();   
  21.                 myStringA.set("Hello");  
  22.                 myStringB = new MyString();   
  23.                 myStringB.set("Hello");                 
  24.                  
  25.                 System.out.println("myStringA ="+myStringA);
  26.                 System.out.println("myStringB ="+myStringB);
  27.                
  28.                 if(myStringA == myStringB)   
  29.                         System.out.println("myStringA = myStringB");
  30.                 else
  31.                         System.out.println("myStringA != myStringB");
  32.                
  33.                 System.out.println("----------------------------------------------------------------");
  34.                
  35.                 System.out.println("myStringA ="+myStringA);
  36.                 System.out.println("myStringB ="+myStringB);
  37.                 if(myStringA.equals(myStringB))  
  38.                         System.out.println("myStringA equal myStringB");
  39.                 else
  40.                         System.out.println("myStringA not equal myStringB");
  41.         }

  42. }
複製代碼
結果:

myStringA =MyString@2830803a
myStringB =MyString@8327473
myStringA != myStringB
----------------------------------------------------------------
myStringA =MyString@2830803a
myStringB =MyString@8327473
myStringA not equal myStringB

TOP

  1. class MyString  //自行建立一個字串類別
  2. {
  3.         private String mString;  //一個字串屬性,用來儲存產生的物件中的字串內容
  4.         
  5.         public void set(String ss)  //設定方法,設定mString的內容
  6.         {
  7.                 this.mString = ss;
  8.         }
  9.         public String get()   //取用方法,讀取mString的內容
  10.         {
  11.                 return this.mString;
  12.         }
  13. }

  14. public class my_test1
  15. {
  16.         public static void main(String[] args)
  17.         {               
  18.                     Boolean x;
  19.                 MyString myStringA,myStringB,myStringC; //建立兩個MyString物件:myStringA,myStringB
  20.                 myStringA = new MyString();   //建立myStringA的實體
  21.                 myStringA.set("hello");       //將myStringA的內容設定為 "hello"
  22.                
  23.                 myStringC = new MyString();
  24.                 myStringC.set("hello");
  25.                
  26.                 System.out.println("myStringA ="+myStringA);               
  27.                
  28.                 myStringB = myStringA;       //令myStringB等於myStringA
  29.                
  30.                 System.out.println("myStringB ="+myStringB);
  31.                 System.out.println("myStringC ="+myStringC);
  32.                
  33.                 System.out.println("myStringA ="+myStringA.get());
  34.                 System.out.println("myStringB ="+myStringB.get());
  35.                 System.out.println("myStringC ="+myStringC.get());
  36.                 if(myStringA == myStringB)   //判斷myStringA是否等於myStringB並印出結果
  37.                         System.out.println("myStringA = myStringB");
  38.                 else
  39.                         System.out.println("myStringA != myStringB");
  40.                
  41.                 myStringA.set("bye bye");
  42.                
  43.                 if(myStringA == myStringB)
  44.                         System.out.println("myStringA = myStringB");
  45.                 else
  46.                         System.out.println("myStringA != myStringB");
  47.                
  48.                
  49.                 x=myStringA.equals(myStringC);
  50.                
  51.                 System.out.println("x="+x);
  52.                
  53.                 if(myStringA.equals(myStringC))
  54.                     System.out.println("myStringA equal myStringC");
  55.                 else
  56.                     System.out.println("myStringA not equal myStringC");                              
  57.         }
  58. }
複製代碼
回復 6# ray

TOP

老師不好意思 , 您在上面有提到
1."equals"比較了2個物件的屬性(?) --> 比較正確的說法是比較兩個物件的"內容"~
但是我的程式 X = false  , 如果是比較兩個物件的內容 , X應該是等於 true . 不知您能幫我解惑嗎 ?

運算結果如下 :
myStringA =MyString@3d689405
myStringB =MyString@3d689405
myStringC =MyString@1ccdf3c2
myStringA =hello
myStringB =hello
myStringC =hello
myStringA = myStringB
myStringA = myStringB
x=false
myStringA not equal myStringC

TOP

返回列表