課程名稱:程式設計II472205

指導老師:蔡佳麟

學生:吳丞婷

學號: 40207045

組別:7

週次:第10-14[回首頁]

 

Part I指定作業:

作業題目

3.JAVA參數傳遞有幾種方式?試舉例說明其差異?

4.何謂執行緒(Thread)試舉例說明兩個Java執行緒常用的方法。

回答內容

3.JAVA參數傳遞有幾種方式?

根據參考來源1:

Java的參數傳遞總結:JAVA的參數傳遞總是傳"值",

但是傳值方式也分為兩種方式,它們是靠傳遞參數的類型區分的。

這兩種類型分別為JAVA的基礎類型和Object(對象)類型;

基礎類型包括boolean,byte,short,char,int,long,float,double,而Object就是對象 ,

如數組.在參數為基礎類型時,見代碼:

public class A{ public static void main(String arg[]){

int a=3; method1(a); System.out.println(a); } public static void method1(int a){ a= 4; } }

此時結果的輸出將是1, 而且只要你的值在Main函數中沒變,

a的值不管怎麼傳都不回變,這是因為a是傳值, 而這個"值"是a的一個拷貝,

a的值在傳遞後的改變只是改變了a的拷貝的內容, 並沒有改變真正的a的值;

對於參數為對象 public class A{ public class A { public static void main(String arg [])

{ public static void main(String arg[])

{ int[] a=new int[1]; int[] a=new int[1]; a[0]=3; a[0]=3 ;

method1(a); method1(a); System.out.println(a[0]); System.out.println(a[0]); } }

public static void method1(int[] a){ public static void method1(int[] a){ a[0]--; a=new int[0]; }

a[0]=4; } } } 左邊的結果將是2, 右邊的結果將是3(未變),

原因是:在傳遞的參數為對象時,

這個傳遞的"值"中放的內容實際上是對向所在的地址,

左邊的情況是指針定位到對象的地址後,在上面把內容給改了,

所以數組的值後會改變,而右邊的情況為給對像新分配了一個指針到新的地址上面去

, 所以所有的操作都在新的地址上面,並不會影響原來的值。

注:對於String,Interger,Boolean,Double等的系統對象, 它們雖然是Object,

但是任何方式的傳遞參數的值得改變並不會影響原來的值。

2.試舉例說明其差異?

根據參考來源2:

數傳遞之比較範例:

procuder sub(var A, B, C, Dinteger)

begin

    B=A+A

    D=A+C

End

 

 

x=1

y=2

z=7

sub(X, X, X+Y, Z) 

write(Z)←??

(1)   call by value7(若無var)

B=2, D=4, Z=7 (NOT CHANGE)

(2)   call by reference5  

  (3)   call by result4

(a)    SUB(1 , 1 , 3 , 7)

       A  B C D

(b)   B=1+1=2

D=1+3=4

 

4.何謂執行緒(Thread)

根據參考來源1:

執行緒(英語:thread)是作業系統能夠進行運算排程的最小單位。它被包含在行程之中,是行程中的實際運作單位。一條執行緒指的是行程中一個單一順序的控制流,一個行程中可以並行多個執行緒,每條執行緒並列執行不同的任務。在Unix System V及SunOS中也被稱為輕量行程(lightweight processes),但輕量行程更多指核心執行緒(kernel thread),而把用戶執行緒(user thread)稱為執行緒。

執行緒是獨立排程和分派的基本單位。執行緒可以作業系統核心排程的核心執行緒,如Win32執行緒;由用戶行程自行排程的用戶執行緒,如Linux平台的POSIX Thread;或者由核心與用戶行程,如Windows 7的執行緒,進行混合排程。

同一行程中的多條執行緒將共享該行程中的全部系統資源,如虛擬位址空間,檔案描述符和訊號處理等等。但同一行程中的多個執行緒有各自的呼叫棧(call stack),自己的暫存器環境(register context),自己的執行緒本地儲存(thread-local storage)。

一個行程可以有很多執行緒,每條執行緒並列執行不同的任務。

在多核或多CPU,或支援Hyper-threading的CPU上使用多執行緒程式設計的好處是顯而易見,即提高了程式的執行吞吐率。在單CPU單核的電腦上,使用多執行緒技術,也可以把行程中負責IO處理、人機互動而常備阻塞的部分與密集計算的部分分開來執行,編寫專門的workhorse執行緒執行密集計算,從而提高了程式的執行效率。

2.試舉例說明兩個Java執行緒常用的方法

根據參考來源2:

1.繼承Thread類別:直接產生執行緒。

2. 實作Runnable介面:間接產生執行緒。」

參考來源

參考來源1

參考來源2

 

參考來源1

參考來源2

 

 

Part II 10-14週學習心得彙整

週別

10

11

12

13

14

截圖

Ex10.1 檢討期中考

Ex10.2 輸出輸入(寫入檔案)

Ex10.3 輸出輸入(讀取檔案)

Ex11.1寫入檔案(呼叫類別:s40207045_輸出輸入)

Ex11.2 套件-規劃製作

Ex11.3 執行緒

Ex12.1 多執行緒
Ex12.2實作2多執行緒
Ex12.3實作3多執行緒

Ex13.1 集合介面
Ex13.2 介面Set
Ex13.3 介面Set
Ex13.4 介面List

Ex14.1集合2呼叫類別myQueue
Ex14.2集合呼叫類別mySet
EX14.3
實作自訂集合

課後心得

複習期中考的題目,覺得當初怎麼沒有試考看看

程式碼沒有很熟,所以沒有跟上

複習上周的內容,慢慢就有更上,其實打幾個短短的程式碼就可以跑出現時間

每想到今天竟然可以跟上老師的進度,打完全部

超開心,可以完成所有的進度