《Java基礎(chǔ)入門》_課后題答案
《《Java基礎(chǔ)入門》_課后題答案》由會員分享,可在線閱讀,更多相關(guān)《《Java基礎(chǔ)入門》_課后題答案(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 《Java基礎(chǔ)入門》習(xí)題答案 第1章 Java開發(fā)入門 一、填空題 1、 Java EE、Java SE、Java ME 2、 JRE 3、 javac 4、 bin 5、 path、classpath 二、選擇題 1、ABCD 2、C 3、D 4、B 5、B 三、簡答題 1、 面向?qū)ο?、跨平臺性、健壯性、安全性、可移植性、多線程性、動態(tài)性等。 2、 JRE(Java Runtime Environment,Java運(yùn)行時環(huán)境),它相當(dāng)于操作系統(tǒng)部分,提供了Java程序運(yùn)行時所需要的基本條件和許多Java基礎(chǔ)類,例如,IO類、GUI控件類、網(wǎng)絡(luò)類等。JRE是提供給
2、普通用戶使用的,如果你只想運(yùn)行別人開發(fā)好的Java程序,那么,你的計算機(jī)上必須且只需安裝JRE。 JDK(Java Development Kit,Java開發(fā)工具包),它包含編譯工具、解釋工具、文檔制作工具、打包工具多種與開發(fā)相關(guān)的工具,是提供給Java開發(fā)人員使用的。初學(xué)者學(xué)習(xí)和使用Java語言時,首先必須下載和安裝JDK。JDK中已經(jīng)包含了JRE部分,初學(xué)者安裝JDK后不必再去下載和安裝JRE了。 四、編程題 public class HelloWorld { public static void main(String[] args) { System.out.pri
3、ntln("這是第一個Java程序!"); } } 第2章 Java編程基礎(chǔ) 一、填空題 1、 class 2、 true和false 3、 單行注釋、多行注釋、文檔注釋 4、 基本數(shù)據(jù)類型、引用數(shù)據(jù)類型 5、 1、2、4、8 6、 & && | || 7、 0 8、 5 9、 34 10、 56 二、判斷題 1、 錯 2、對 3、錯 4、對 5、錯 三、選擇題 1、 AD 2、AD 3、C 4、ABCD 5、C 6 、A 7、AC 8、A 9、B 10、A 四、程序分析題 1、 編譯不通過。int值4和b相加時,
4、由于變量b的類型為byte,取值范圍沒有int類型大,存不下int類型的值,因此編譯不通過。 2、 編譯不通過。這是因為y是在最里層的代碼塊中定義的一個變量,只有在那個代碼塊中才可使用,在使用y = x;語句時已經(jīng)超過了y變量的作用域,所以編譯無法通過。 3、 打印結(jié)果為:3。 4、 打印結(jié)果為: 9 8 7 五、問答題 1、Java語言的八種基本數(shù)據(jù)類型有:byte字節(jié)型,占一個字節(jié)。short短整型,占兩個字節(jié)。int整型,占4個字節(jié)。long長整型,占8個字節(jié)。float單精度浮點型,占4個字節(jié)。double雙精度浮點型,占8個字節(jié)。char字
5、符型,占兩個字節(jié)。boolean型,表示邏輯值,有true和false兩個值,分別占一個字節(jié)。 2、如果使用“&”在表達(dá)式之間進(jìn)行連接,那么無論任何情況,“&”兩邊的表達(dá)式都會參與計算。如果使用“&&”進(jìn)行連接,當(dāng)“&&”左邊的表達(dá)式為false,則不會執(zhí)行其右邊的表達(dá)式。例如定義int x = 2,y = 0; boolean b = x < y & x / 2 > 0表達(dá)是會發(fā)生被0除異常,因為x / y的表達(dá)式執(zhí)行了。而boolean b = x < y & x / 2 > 0是不會出現(xiàn)這種異常的,因為x < y為false,表達(dá)式x / y不會執(zhí)行。 3、方法重載指的是在一個類中可
6、以聲明多個同名的方法,而方法中參數(shù)的個數(shù)或者數(shù)據(jù)類型不一致。調(diào)用這些同名的方法時,JVM會根據(jù)實際參數(shù)的不同綁定到不同的方法。 六、編程題 1、參考答案 public class Test01 { public static void main(String[] args) { int sum = 0; for (int i = 1; i < 100; i++) { if (i % 2 != 0) sum += i; } System.out.println(sum); } } 2、參考答案 public class Test02
7、{ public static void main(String args[]) { int y = function(0); System.out.println(y); } public static int function(int x) { int y; if (x > 0) { y = x + 3; } else if (x == 0) { y = 0; } else { y = x * x - 1; } return y; } } 3、參考答案 public class Test03 {
8、 public static void main(String[] args) { int[] arr = { 25, 24, 12, 76, 101, 96, 28 }; for (int i = 0; i < arr.length - 1; i++) { // 定義內(nèi)層循環(huán) for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { // 比較相鄰元素 // 下面的三行代碼用于交換兩個元素 int temp = arr[j];
9、arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); // 打印元素和空格 } } } 第3章 面向?qū)ο螅ㄉ希? 一、填空題 1、封裝、繼承、多態(tài) 2、new 3、成員變量、局部變量 4、類、類 5、this 6、finalize() 7、靜態(tài)變量 8、內(nèi)部類 9、javadoc 10、private 二、判斷題 1、對
10、2、對 3、錯 4、對 5、錯 三、選擇題 1、B 2、D 3、B 4、ABC 5、ABCD 6、ACD 7、ABCD 8、ABCD 9、D 10、D 四、程序分析題 1、程序不能編譯通過,因為在類A中的成員變量secret用private修飾,所以在類Test1中無法訪問。 2、程序不能編譯通過,因為在靜態(tài)方法method()中不能訪問非靜態(tài)成員變量x。 3、程序能夠編譯通過,運(yùn)行的結(jié)果為“inner”。 五、簡答題 1、構(gòu)造方法是類的一個特殊成員,它會在類實例化對象時被自動調(diào)用。而普通方法只有在使用的時 候才會被調(diào)用。在定義構(gòu)造方法時要求方
11、法名與類名相同、在方法名的前面沒有返回值類型的聲 明、在方法中不能使用return語句返回一個值 2、單例模式可以保證在整個程序運(yùn)行期間針對該類只存在一個實例對象。 六、編程題 1、參考答案 class Student { private String name; private double grade; public Student() { } public Student(String name, double grade) { this.name = name; this.grade = grade; } public Strin
12、g getName() { return name; } public void setName(String name) { this.name = name; } public double getGrade() { return grade; } public void setGrade(double grade) { this.grade = grade; } } public class Test01 { public static void main(String[] args) { Student stu1 = n
13、ew Student(); stu1.setName("zhangsan"); stu1.setGrade(99); Student stu2 = new Student("lisi", 100); } } 2、參考答案 class Father { private String name = "zhangjun"; class Child { public void introFather() { System.out.println("My Father's name is " + name); } } } public cl
14、ass Test02 { public static void main(String[] args) { Father.Child child = new Father().new Child(); child.introFather(); } } 第4章 面向?qū)ο螅ㄏ拢? 一、填空題 1、繼承 2、方法,抽象類 3、import 4、子類、父類、基類 5、Exception 6、final 7、super 8、 Object 9、try、catch 10、jar –cvf,java –jar 二、判斷題 1、錯 2、對 3、錯
15、 4、對 5、對 三、選擇題 1、B 2、C 3、ABC 4、 ABCD 5、C 6、AC 7、C 8、D 9、A 10、B 四、程序分析題 1、程序編譯能通過,這是因為int x = 2 / 0; System.out.println(x);這兩條語句使用了try塊,捕獲了程序因為除以0而產(chǎn)生的異常情況,之后程序會繼續(xù)向下執(zhí)行,輸出“進(jìn)入catch代碼塊”,“進(jìn)入finally代碼塊”。 2、程序編譯不通過,這是因為在程序中使用了final關(guān)鍵字修飾Animal類,使得Animal類不能被繼承。shout()方法中同樣使用了final關(guān)鍵字,
16、使得該方法不能被重寫。 3、程序編譯能通過,輸出結(jié)果為“動物叫!”和“汪汪……”,因為在程序中調(diào)用shout()方法時,首先會通過super.shout()調(diào)用父類的方法說出“動物叫!”之后再輸出“汪汪……” 4、程序編譯不通過,因為接口中定義的方法不能有方法體,所以定義的eat()方法是錯誤的。接口中的方法必須在子類中全部實現(xiàn),由于run()方法在子類中并沒有重新實現(xiàn),所以這也是錯誤的。 五、簡答題 1、在繼承關(guān)系中,子類的方法與父類的某一方法具有相同的方法名、返回類型和參數(shù)列表,則稱子類的該方法重寫(覆蓋)父類的方法。 2、多態(tài)意味著一個對象有著多種形態(tài),可以在特定的情況下,表現(xiàn)
17、不同的狀態(tài),從而對應(yīng)著不同的屬性和方法。簡單的說,多態(tài)就是使用父類類型的變量引用子類對象,根據(jù)被引用子類對象的特性,程序會得到不同的運(yùn)行效果。 3、在Java中,使用abstract關(guān)鍵字修飾的類稱之為抽象類。抽象類是不能被實例化的,通常需要寫一個子類來繼承抽象類,同時實例化子類來獲得該類的對象。抽象類通常用于表示一種抽象的概念。 接口可以說是一種特殊的抽象類,接口中只能定義常量和抽象方法。由于接口的特殊性,在定義時需要使用interface關(guān)鍵字。 六、編程題 1、參考答案 class Student { public String name; public int age
18、; public Student(String name,int age){ this.name=name; this.age=age; } public void show(){ System.out.println("name: "+name+" age: "+age); } } class UnderGraduate extends Student{ public String degree; public UnderGraduate(String name,int age,String degree){ super(name, age
19、); this.degree=degree; } public void show(){ System.out.println("name: "+name+" age: "+age+" degree: "+degree); } } public class Test01{ public static void main(String[] args) { Student student = new Student("zhangsan", 16); student.show(); UnderGraduate underGraduate = new
20、UnderGraduate("lisi", 20, "bechalor"); underGraduate.show(); } } 2、參考答案 interface Shape { double area(double givenValue); } class Square implements Shape{ public double area(double sideLength) { return sideLength*sideLength; } } class Circle implements Shape{ public doubl
21、e area(double r) { return Math.PI*r*r; } } public class Test02 { public static void main(String[] args) { Shape square = new Square(); Shape circle = new Circle(); System.out.println(square.area(2)); System.out.println(circle.area(3)); } } 3、參考答案 class NoThisSongExcept
22、ion extends Exception{ public NoThisSongException(){ super(); } public NoThisSongException(String message){ super(message); } } class Player{ public void play(int index)throws NoThisSongException{ if(index>10){ throw new NoThisSongException("您播放的歌曲不存在"); } System.out.p
23、rintln("正在播放歌曲"); } } public class Test03 { public static void main(String[] args) { Player player = new Player(); try { player.play(13); } catch (NoThisSongException e) { System.out.println("異常信息為: "+e.getMessage()); } } } 第5章 多線程 一、填空題 1、 線程、通信 2、 Thread、Runnable
24、 3、 就緒 4、 synchronized、對象、this 5、 進(jìn)程 6、 新建狀態(tài)(New)、就緒狀態(tài)(Runnable)、運(yùn)行狀態(tài)(Running)、阻塞狀態(tài)(Blocked)、死亡狀態(tài)(Terminated) 7、 10、1 8、 開啟一個新線程、run()方法 9、 wait()、notify()、notifyAll() 10、setDaemon(true)、start() 二、判斷題 1、錯 2、對 3、對 4、錯 5、錯 三、選擇題 1、B 2、AC 3、ABC 4、BC 5、ABD 6、ABC 7、C 8、D
25、 9、AB 10、ABCD 四、程序分析題 1、程序不能編譯通過,因為RunHandler類沒有實現(xiàn)Runnable接口,因此RunHandler的實例對象不能作為參數(shù)傳遞給Thread的構(gòu)造方法。 2、程序不能編譯通過,因為Thread的子類A重寫的run()方法的訪問級別不能低于父類run()方法的。訪問級別 3、程序不能編譯通過,因為同步方法中調(diào)用wait()方法的對象必須為同步鎖對象。 4、t.start(); 五、簡答題 1、一種是繼承java.lang包下的Thread類,覆寫Thread類的run()方法,在run()方法中實現(xiàn)運(yùn)行在線程上的代碼。 new
26、Thread() { public void run(){} }.start(); 另一種就是實現(xiàn)java.lang.Runnable接口,同樣是在run()方法中實現(xiàn)運(yùn)行在線程上的代碼。 new Thread(new Runnable(){ public void run(){} }).start() 2、調(diào)用sleep()方法,正在執(zhí)行的線程主動讓出CPU去執(zhí)行其他線程,在sleep()方法指定的時間過后,CPU才會回到這個線程上繼續(xù)往下執(zhí)行,如果當(dāng)前線程進(jìn)入了同步鎖,sleep()方法并不會釋放鎖,即使當(dāng)前線程使用sleep()方法讓出了CPU,但
27、其它被同步鎖擋住了的線程也無法得到執(zhí)行。wait()在一個已經(jīng)進(jìn)入了同步鎖的線程內(nèi)進(jìn)行調(diào)用,讓當(dāng)前線程暫時讓出同步鎖,以便其它正在等待此鎖的線程可以得到同步鎖并運(yùn)行。當(dāng)其它線程調(diào)用了notify()方法后,調(diào)用wait()方法的線程就會解除wait狀態(tài),當(dāng)再次獲得同步鎖后,程序可以繼續(xù)向下執(zhí)行。 六、編程題 1、參考答案 public class MyThread extends Thread{ public MyThread(String name) { super(name); } public void run() {
28、 System.out.println(this.getName()); } public static void main(String[] args) { new MyThread("Thread1").start(); new MyThread("Thread2").start(); } } 2、參考答案 public class MyRunnable implements Runnable { public void run() { for (int i = 0; i < 50; i++) { System.out.println(
29、"new"); } } public static void main(String[] args) { new Thread(new MyRunnable()).start(); for (int i = 0; i < 100; i++) { System.out.println("main"); } } } 3、參考答案 public class Test01 { public static void main(String[] args) { Teacher t = new Teacher(); new Thread(t,
30、 "陳老師").start(); new Thread(t, "高老師").start(); new Thread(t, "李老師").start(); } } class Teacher implements Runnable { private int notes = 80; public void run() { while (true) { dispatchNotes(); // 調(diào)用售票方法 if (notes <= 0) { break; } } } private synchronized void
31、 dispatchNotes() { if (notes > 0) { try { Thread.sleep(10); // 經(jīng)過的線程休眠10毫秒 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "---發(fā)出的筆記" + notes--); } } } 4、參考答案 public class Accumulator extends T
32、hread { private int stratNum; public static int sum; public Accumulator(int startNum) { this.stratNum = startNum; } public static synchronized void add(int num) { sum += num; } public void run() { int sum = 0; for (int i = 0; i < 10; i++) { sum += stratNum + i; }
33、add(sum); } public static void main(String[] args) throws Exception { Thread[] threadList = new Thread[10]; for (int i = 0; i < 10; i++) { threadList[i] = new Accumulator(10 * i + 1); threadList[i].start(); } for (int i = 0; i < 10; i++) { threadList[i].join(); } Sy
34、stem.out.println("Sum is : " + sum); } } 第6章 JavaAPI 一、填空題 1、 String、StringBuffer 2、 Date、Calendar、DateFormat 3、 getRuntime() 4、 sqrt() 5、 DateFormat 6、 π、e 7、 Random、java.util 8、 length() 9、 靜態(tài) 10、edcba 二、判斷題 1、錯 2、錯 3、對 4、錯 5、對 三、選擇題 1、C 2、C 3、D 4、C 5、C 6、B 7、C
35、 8、A 9、A 10、B 四、程序分析題 1、程序編譯能通過,輸出結(jié)果如下 5 7.0 -8.0 -5 8.1 -6.1 2、程序編譯能通過,輸出結(jié)果如下 str.length():15 str.charAt(0):d lastIndexOf(m):10 substring(2,4):fe indexOf(g):5 五、簡答題? 1、String類是不可變類,即字符串值一旦初始化后就不可能改變。StringBuffer是可變字符串類,類似String的緩沖區(qū),可以修改字符串的值。 2、Date類用來表示某個特定的瞬間,能夠精確到毫秒。而在實際應(yīng)用中
36、,往往需要把一個日期中的年、月、日等信息單獨返回進(jìn)行顯示或處理,這個類中的大部分方法都已被標(biāo)記過時。Calender類基本取代了Date類,該類中定義了一系列用于完成日期和時間字段操作的方法。 Calendar的getTime()方法,getTime()返回一個表示Calendar時間值的Date對象,同時Calendar有一個setTime(Date date)方法,setTime()方法接收一個Date對象,將Date對象表示的時間值設(shè)置給Calendar對象,通過這兩個方法就可以完成Date和Calendar對象之間的轉(zhuǎn)換。 六、編程題 1、 參考答案 public class
37、 Test01 { public static void main(String[] args) { String str = "HelloWorld"; // 字符串轉(zhuǎn)成char數(shù)組 char[] ch = str.toCharArray(); StringBuffer buffer = new StringBuffer(); for (int i = str.length() - 1; i >= 0; i--) { if (ch[i] >= 'A' && ch[i] <= 'Z') { buffer.append(String.value
38、Of(ch[i]).toLowerCase()); } else if (ch[i] >= 'a' && ch[i] <= 'z') { buffer.append(String.valueOf(ch[i]).toUpperCase()); } } System.out.println(buffer.toString()); } } 2、 參考答案 import java.text.DateFormat; import java.util.Calendar; import java.util.Date; public class Test0
39、2 { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, 100); Date date = calendar.getTime(); DateFormat format = DateFormat.getDateInstance(DateFormat.FULL); String string = format.format(date); System.out.println(stri
40、ng); } } 3、 參考答案 import java.util.Random; public class Test03 { public static void main(String[] args) { Random rand = new Random(); int[] num = new int[5]; for (int i = 0; i < num.length; i++) { num[i] = 20 + rand.nextInt(31); Syst
41、em.out.println(num[i]); } } } 第7章 集合類 一、填空題 1、集合 2、Comparator 3、有序、可重復(fù),無序、不可重復(fù) 4、hashNext()、next() 5、Collection、Map 6、鍵、值 7、ListIterator 8、ArrayList、LinkedList,HashSet、TreeSet,HashMap、TreeMap 9、put()、get() 10、Collections、Arrays 二、判斷題 1、錯 2、對 3、對 4、錯 5、對
42、 三、選擇題 1、BC 2、A 3、D 4、ABD 5、C 6、AB 7、D 8、AB 9、ABC 10、B 四、程序分析題 1、程序可以編譯通過,輸出結(jié)果是“a、b、c”,因為TreeSet集合不允許存放重復(fù)元素,第2次增加的元素c會覆蓋之前存入的元素c,所以輸出結(jié)果是“a、b、c”,而不是“a、b、c、c”。 2、程序不可以編譯通過,這是由于向ArrayList集合中存入元素時,集合并不能記住元素的類型,因此在取出元素時,只能使用Object類型,而不能使用String類型。 3、程序可以編譯通過,但是什么也沒有打印。使用ListIterato
43、r進(jìn)行從后向前的遍歷集合,可以使用以下兩種方法,一是使用listIterator(int index)方法將索引index的值設(shè)置為集合元素的數(shù)目,也就是ListIterator it = list.listIterator(3);,二是將程序先從前向后遍歷,然后再從后向前遍歷。 4、程序編譯不通過,由于Map集合在遍歷的過程中不能使用集合對象本身刪除元素,這會導(dǎo)致并發(fā)修改異常,若想刪除集合中的元素,可以使用Iterator的remove()方法。 五、簡答題 1、為了使程序能方便的存儲和操作數(shù)目不固定的一組數(shù)據(jù),JDK提供了一套類庫,這些類都位 于java.util包中,統(tǒng)稱為集合。
44、集合框架中包含3個接口,分別是List、Set、Map。 2、List的特點是元素有序、元素可重復(fù)。List接口的主要實現(xiàn)類有ArrayList和LinkedList。Set的特點是元素?zé)o序、元素不可重復(fù)。Set接口的主要實現(xiàn)類有HashSet和TreeSet。Map的特點是存儲的元素是鍵(Key)、值(Value)映射關(guān)系,元素都是成對出現(xiàn)的。Map接口的主要實現(xiàn)類有HashMap和TreeMap。 3、Collection是一個單例集合接口。它提供了對集合對象進(jìn)行基本操作的通用方法。Collections是一個工具類。它包含各種有關(guān)集合操作的方法。 六、編程題 1、參考答案 im
45、port java.util.*; public class Test01 { public static void main(String[] args) { ArrayList list = new ArrayList(); for(int i = 0; i < 10; i++) { list.add("A"+i); } Iterator it = list.iterator(); while(it.hasNext()) { Object obj = it.next();
46、 System.out.println(obj); } } } 2、參考答案 import java.util.*; public class Test02 { public static void main(String[] args) { HashSet hashSet = new HashSet(); Person p1 = new Person("Jack",25); Person p2 = new Person("Rose",23); Person p3 = new Person("Jack",27); hashSet.ad
47、d(p1); hashSet.add(p2); hashSet.add(p3); for(Object obj:hashSet){ Person p=(Person)obj; System.out.println(p.name+":"+p.age); } } } class Person{ String name; int age; public Person(String name, int age) { super(); this.name = name; this.age = age; } public
48、 int hashCode() { return name.hashCode(); } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; Person other = (Person) obj; return other.name.equals(this.name); } } 3、參考答案 import java.util.*; public class Test03 { pu
49、blic static void main(String[] args) { TreeMap map = new TreeMap(new MyComparator()); map.put("1", "Lucy"); map.put("2", "Lucy"); map.put("3", "John"); map.put("4", "Smith"); map.put("5", "Amanda"); for (Object key : map.keySet()) { System.out.println(key + ":" + map.get(key
50、)); } } } class MyComparator implements Comparator { public int compare(Object obj1, Object obj2) { String ele1 = (String) obj1; String ele2 = (String) obj2; return pareTo(ele1); } } 第8章 IO(輸入輸出) 一、填空題 1、 字節(jié)流、字符流 2、 File、java.io 3、 SequenceInputStream 4、 RandomAccessFile
51、 5、 管道流 6、 LineNumberReader、BufferedReader、setLineNumber(int)、getLineNumber() 7、 字節(jié)流、字符流 8、 PrintStream、setOut(PrintStream out) 9、 Unicode 10、newLine() 二、判斷題 1、 錯 2、對 3、對 4、對 5、錯 三、選擇題 1、AB 2、C 3、C 4、ABCD 5、AB 6、ACD 7、A 8、A 9、D 10、A 四、程序填空題 1、InputStreamReader、br.readL
52、ine()、運(yùn)行結(jié)果為2 2、FileInputStream(file1)、FileOutputStream、fis.available() 五、問答題 1、Java程序通過流來完成輸入和輸出,流是輸入或輸出信息的抽象。流通過Java的輸入/輸出系統(tǒng)與外設(shè)連接進(jìn)行數(shù)據(jù)通信。流是抽象的對象,具體實現(xiàn)代碼在java.io包中。 2、字節(jié)流的兩個基類是InputStream和OutputStream,字符流的兩個基類是Reader和Writer,它們都是Object類的直接子類,字節(jié)流是處理以8位字節(jié)為基本單位的字節(jié)流類;Reader和Writer類是專門處理16位字節(jié)的字符流類。 3
53、、管道流分為管道輸入流(PipedInputStream)和管道輸出流(PipedOutputStream),通常由一個PipedInputStream實例對象和一個PipedOutputStream實例對象相互連接而實現(xiàn)管道通信,PipedOutputStream向管道寫入數(shù)據(jù),PipedInputStream從管道中讀取PipedOutputStream寫入的數(shù)據(jù),管道流主要用來完成線程之間的通信。 六、編程題 1、參考答案 import java.io.*; public class Test01 { public static void main(String[] ar
54、gs) throws Exception { // 字節(jié)流拷貝 FileInputStream in = new FileInputStream("E:/src.txt"); FileOutputStream out = new FileOutputStream("E:/des1.txt"); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) != -1) { out.write(buf, 0, len); } in.close(); out.clos
55、e(); // 字符流拷貝 BufferedReader bf = new BufferedReader(new FileReader("E:/src.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("E:/des2.txt")); String str; while ((str = bf.readLine()) != null) { bw.write(str); bw.newLine(); } bf.close(); bw.close(); } }
56、 2、參考答案 import java.io.*; public class Test02 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String password = ""; boolean b = false; for (int i = 0; i < 5; i++) { System.out.println("請輸入密碼:")
57、; password = br.readLine(); if (password.equals("123456")) { System.out.println("恭喜你進(jìn)入游戲"); b = true; break; } } if (!b) { System.out.println("密碼錯誤,游戲結(jié)束"); System.exit(0); } } } 第9章 GUI(圖形用戶界面) 一、填空題 1、 GUI、java.awt、javax.swing 2、 適配器 3、 Graphics
58、 4、 事件監(jiān)聽器 5、 JComponent 6、 窗體事件、鍵盤事件、鼠標(biāo)事件、動作事件 7、 WindowListener、windowClosing(WindowEvent e) 8、 模態(tài)對話框、非模態(tài)對話框 9、 setLayout(null) 10、JMenuBar、JMenu、JMenuItem 二、判斷題 1、對 2、錯 3、對 4、錯 5、錯 三、選擇題 1、D 2、D 3、ABD 4、A 5、D 6、ABCD 7、ABD 8、ABC 9、D 10、C 四、程序分析題 1、參考答案 ex
59、tends Stdno = new JTextField(); Name = new JTexxtField(); 2、參考答案 card.next(cp); cp.add(jbt); 五、簡答題 1、參考答案 l 通過實現(xiàn)XxxListener接口或者繼承XxxAdapter類實現(xiàn)一個事件監(jiān)聽器類,并對處理監(jiān)聽動作的方法進(jìn)行重寫 l 創(chuàng)建事件源對象和事件監(jiān)聽器對象 l 調(diào)用事件源的addXxxLisntener()方法,為事件源注冊事件監(jiān)聽器對象 2、參考答案 AWT 是Abstract Window ToolKit (抽象窗口工具包)的縮寫,這個工具包提供了一套
60、與本地圖形界面進(jìn)行交互的接口。AWT 中的圖形函數(shù)與操作系統(tǒng)所提供的圖形函數(shù)之間有著一一對應(yīng)的關(guān)系,當(dāng)我們利用 AWT 來構(gòu)件圖形用戶界面的時候,我們實際上是在利用操作系統(tǒng)所提供的圖形庫。由于不同操作系統(tǒng)的圖形庫所提供的功能是不一樣的,在一個平臺上存在的功能在另外一個平臺上則可能不存在。為了實現(xiàn)Java語言所宣稱的"一次編譯,到處運(yùn)行"的概念,AWT 不得不通過犧牲功能來實現(xiàn)其平臺無關(guān)性,也就是說,AWT 所提供的圖形功能是各種通用型操作系統(tǒng)所提供的圖形功能的交集。由于AWT 是依靠本地方法來實現(xiàn)其功能的,我們通常把AWT控件稱為重量級控件。 Swing 是在AWT的基礎(chǔ)上構(gòu)建的一
61、套新的圖形界面系統(tǒng),它提供了AWT 所能夠提供的所有功能,并且用純粹的Java代碼對AWT 的功能進(jìn)行了大幅度的擴(kuò)充。由于在Swing 中沒有使用本地方法來實現(xiàn)圖形功能,我們通常把Swing控件稱為輕量級控件。 AWT和Swing之間的基本區(qū)別:AWT 是基于本地方法的C/C++程序,其運(yùn)行速度比較快;Swing是基于AWT 的Java程序,其運(yùn)行速度比較慢。對于一個嵌入式應(yīng)用來說,目標(biāo)平臺的硬件資源往往非常有限,而應(yīng)用程序的運(yùn)行速度又是項目中至關(guān)重要的因素。在這種矛盾的情況下,簡單而高效的AWT 當(dāng)然成了嵌入式Java的第一選擇。而在普通的基于PC或者是工作站的標(biāo)準(zhǔn)Java應(yīng)用中
62、,硬件資源對應(yīng)用程序所造成的限制往往不是項目中的關(guān)鍵因素,所以在標(biāo)準(zhǔn)版的Java中則提倡使用Swing,也就是通過犧牲速度來實現(xiàn)應(yīng)用程序的功能。 六、編程題 1、參考答案 import java.awt.*; import java.awt.event.*;import javax.swing.*; public class MyMouseHandler extends JFrame { public MyMouseHandler() { final JLabel label = new JLabel("此處顯示鼠標(biāo)右鍵點擊的坐標(biāo)"); label.setOpaqu
63、e(true); label.setBackground(Color.PINK); this.add(label, BorderLayout.NORTH); this.setSize(300, 200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == e.BUTTON1) {
64、 int x = e.getX(); int y = e.getY(); String banner = "鼠標(biāo)當(dāng)前點擊位置的坐標(biāo)是" + x + "," + y; label.setText(banner); } } }); this.setVisible(true); } public static void main(String[] args) { new MyMouseHandler(); } } 2、參考答案 import java.awt.*; import java.util.*;
65、 import javax.swing.*; import java.awt.event.*; public class Information extends JFrame { // 窗口NORTH部的JPanel面板 private JPanel panel = new JPanel(); // 愛好標(biāo)簽 private JLabel lb1 = new JLabel("愛好"); // 三個表示愛好的JCheckBox復(fù)選框 private JCheckBox cb1 = new JCheckBox("羽毛球"); private JCheckBox
66、cb2 = new JCheckBox("乒乓球"); private JCheckBox cb3 = new JCheckBox("唱歌"); // 性別標(biāo)簽 private JLabel lb2 = new JLabel("性別"); // 表示性別的JRadioButton單選框 private JRadioButton rb1 = new JRadioButton("男"); private JRadioButton rb2 = new JRadioButton("女"); // ButtonGroup添加JRadioButton,實現(xiàn)單選功能 private ButtonGroup bg = new ButtonGroup(); // 文本域組件 private JTextArea area = new JTextArea(); // 窗口CENTER部的JScrollPane面板,其中放置area文本域 private JScrollPane pane = new JScrollPane(area); /
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中西方家庭教育的對比ppt課件
- 《運(yùn)籌學(xué)教程》第五版運(yùn)籌學(xué)6對策論矩陣對策課件
- (部編版)統(tǒng)編版四年級語文下冊第2課《鄉(xiāng)下人家》ppt課件
- 全等三角形1--公開課一等獎ppt課件
- 《會跳舞樹葉娃娃》課件
- 9兒童詩兩首_人教版五年級的語文下冊課件
- 綠色植物是食物之源(我的課件)0
- 河南專版2022春八年級語文下冊第四單元16慶祝奧林匹克運(yùn)動復(fù)興25周年習(xí)題課件新人教版
- 全國xx杯說課大賽機(jī)械類一等獎作品:鉗工車模的制作說課ppt課件
- 六年級下冊數(shù)學(xué)ppt課件-總復(fù)習(xí)(1)數(shù)的認(rèn)識-整數(shù)∣北師大版
- 牛頓第二定律優(yōu)秀完整公開課ppt課件
- 調(diào)脂與卒中防治課件
- 點到平面的距離課件
- 聚焦新醫(yī)改形勢下的醫(yī)院發(fā)展戰(zhàn)略
- 四肢血管超聲基礎(chǔ)