2011年1月21日 星期五

進階程式設計期中考

進階程式設計果然比較複雜點,很多東西都好抽象喔="=

聽了都霧颯颯



看老師都很賣力的在講解,不認真聽就很對不起他了!

老師說的比我自己看的還簡單,老師果然厲害!




下面是我自己打的,註解也是自己寫上去的,加減參考看看吧!



雖然這次考試分數不是很好看,但是我會越挫越勇的!!哇哈哈哈~



自己學多少懂多少才是王道!哎呀~廢話這麼多分數還是一樣低




第一題


=================
程式內容=================

public class test1{

 public static void main(String[] args){

 String str = "Dot^saw^I^was^Tod";

 //str輸入字串



 int len = str.indexOf('I')+1;

 //抓出str字串中的"I"位置(8+1=len)



 char[] tempCharArray = new char[len];

 //定義tempCharArray為字元陣列,長度為len的值(9)



 char[] charArray = new char[len];

 //定筧harArray為字元陣列,長度為len的值(9)



 for (int i = 0; i< len; i++)  tempCharArray[i] = str.charAt(i);

 //使用charAt取出str字串的字元,把字元放入tempCharArray陣列裡



 for (int j = 0; j<len; j++) charArray[j] = tempCharArray[len-1-j];

 //把tempCharArray陣列裡的字元從len-1-j倒著取出字元放入charArray陣列裡



 String resultStr = new String (charArray);

 //單純把charArray陣列裡的字元轉成字串後放入resultStr



 System.out.println(resultStr);

 //印出JresultStr   答案為 "I^was^toD"

 }

}

=============執行後結果範例=============

I^was^toD

Finished executing




第二題

=================
程式內容=================

public class test2{

 private String nickname;

 public test2(String nickname) {this.nickname =nickname;}

 //test2的建構子


 public String myCat() {return nickname +" is my nickname";}

 //主程式沒有myCat.myCat(),所以這行程式是障眼法!!



 public String toString() {return "My nickname is "+nickname;}

 //沒有這行程式會印出"test2@de6ced"
 //"test2@de6ced"就是該物件所屬類別名稱+@+該物件hash code的16進位值
 //有這行程式toString()為boject物件toString顧名思義就是轉成字串



 public static void main(String[] args){

 test2 myCat= new test2("Java");

 //使用test2為資料型態定義myCat,new值"Java"給myCat

 System.out.println(myCat);

 //印出myCat  答案為"My nickname is Java"

 }

}

=============執行後結果範例=============

My nickname is Java

Finished executing





第三題

=================
程式內容=================

public class test3{

 public static void main(String[] args){

 String a = new String("Java 2");

 //記憶體new一個位址空間儲存"Java 2"傳給a



 StringBuffer b =new StringBuffer("Java 2");

 //記憶體new一個位址空間儲存"Java 2"傳給b



 String c = b.toString();

 //把b的內容轉成字串傳給c



 if (a.equals(c))System.out.println("ture");

 //用equals比較a和c的內容



 else System.out.println("false");

 if (a == c) System.out.println("ture");

 //用==比較a和c的位址



 else System.out.println("flase");

 }

}

=============執行後結果範例=============

ture

flase

Finished executing






第四題

=================
程式內容=================

public class test4{

 public static void main(String[] args){

 String s1 = "A" , s2 = " B ";

 StringBuffer s3 = new StringBuffer("C");

 s2.trim();

 //用trim清除s2字串的空格,但是因為s2宣告為String,所以不能修改



 s3.append("D");

 //用append來連接s3的字串,因s3為StringBuffer,所以可以更改為"CD"

 System.out.print(s1 + s2 +s3);

 //印出答案為"A B CD"

 }

}

=============執行後結果範例=============

A B CDFinished executing




第五題

=================
程式內容=================

public class test5{

 static void m1(StringBuffer s1) {

 s1.append("B");

 //使用append後,s1的值變為"AB"。(PS.append適用在StringBuffer)

 System.out.print(s1);}

 static void m2(String s2) {

 s2 = s2.concat("C");

 //使用concat後,s2的值變為"ABC"。(PS.concat適用在String)

 System.out.print(s2);}

 public static void main(String[] args){

 StringBuffer s1 = new StringBuffer("A");

 //s1宣告成StringBuffer,new一個值"A"

 m1(s1);

 //呼叫m1類別方法傳s1="A",經過這行程式後s1變成"AB"

 String s2 = s1.toString();

 //把s1"AB"轉成字串傳給s2,因為宣告為String所以S2

 m2(s2);

 System.out.println(s1+s2);

 }

}

=============執行後結果範例=============

ABABCABAB

Finished executing




第八題

=================
程式內容=================

class Super{

public int i = 10;

//類別變數編譯前決定



public String show1() {return "super.show1";}

//實例方法run time決定



public static String show2() {return "super.show2";}

//類別方法編譯前決定

}

class sub extends Super{

public int i = 20;

//類別變數編譯前決定



public String show1() {return "sub.show1";}

//實例方法run time決定



public static String show2() {return "sub.show2";}

//類別方法編譯前決定

}

public class test8{

 public static void main(String[] args){

 sub x = new sub();

 Super y = new sub();

 System.out.println("x.i= "+x.i+" "+x.show1());

 System.out.println("y.i= "+y.i+" "+y.show2());

 }

}

//實例方法:是run time決定。簡單說就是(public String show(){})這些。
//類別方法:是編譯前決定。簡單說就是有加static和類別變數(int x;)這些。
//
A x = new B();    編譯前就是看A,run time就是看B

=============執行後結果範例=============

x.i= 20 sub.show1

y.i= 10 super.show2

Finished executing




第十題

=================
程式內容=================

abstract class A{//抽象類別A

 abstract public void draw();

 //抽象實例方法,有如範本。
 //宣告為abstract就不能{Sys...};,就是不能有內容。

}

class B extends A{

 public void draw(){

 System.out.println("B");

 }

}

class C extends A{

 public void draw(){

 System.out.println("C");

 }

}

public class test10{

 public static void main(String[] args){

 A x;

 x= new B();

//呼叫B類別,就使用B的類別(有如覆寫父類別)

 x.draw();

 x = new C();

//呼叫C類別,就使用C的類別

 x.draw();

 }

}

=============執行後結果範例=============

B

C

Finished executing



※有錯誤,歡迎回應唷︿︿!!


沒有留言:

張貼留言