當前位置:首頁 » 編程語言 » java的實驗報告

java的實驗報告

發布時間: 2025-05-20 10:02:06

『壹』 java實驗報告總結

源代碼:
public class Exe1_1 {
public static void main (String args[]){
byte a1=127;
int a2=12345;
long a3=123456789L;
float a4=1.23e-5f;
double a5=1.4567e3;
char a6=65;
boolean a7=true;
System.out.println("a1="+a1+"\na2="+a2+"\na3="+a3+"\na4="+a4+"\na5="+a5+"\na6="+a6+"\na7="+a7);
}
}運行結果:
2.編寫Java小應用程序,輸出兩行字元串:「Java很有趣。」和「努力學習Java編程。」,輸出的起點坐標是(20,20),行距是50像素。源程序代碼:
import java.awt.Graphics;
import java.applet.Applet;
public class Exe1_2 extends Applet{
public void paint(Graphics g){
g.drawString("Java很有趣。",20,20);
g.drawString("努力學習Java編程。",20,70);
}
}運行情況:
3.使用算術運算符得到一個4位十進制數的各位數字並輸出,然後輸出該數的逆序數和各位數字平方後相加的和。
源程序代碼:
public class Exe1_3 {
public static void main (String args[]){
int n=3756,a,b,c,d,n1;
a=n/1000;
b=(n-1000*a)/100;
d=n%10;
c=(n%100-d)/10;
System.out.println("3756的逆序數為:"+d+" "+c+" "+b+" "+a);
System.out.print("各位數字平方後相加的和為:");
System.out.print(a*a+b*b+c*c+d*d);
}
}
運行結果:

三、實驗總結(是否完成實驗、實驗過程中的問題以及解決方法分析等)
本次是我第一次使用JAVA來進行編程,感覺很是不一樣,在前兩節課中我們學習了有關Java的一些簡單知識。然後這次的實驗是對最初的一種練習。
在第一題中,我們重要是認識java的運行環境,並且了解各種變數的數據類型。只要通過簡單的語句就可以通過運行。其中出現了一些單詞的拼寫錯誤,這些是可以修改正確的。第二題我們練習的十一個小的applet應用程序,需要設置一個網頁來顯示,這是一個很不一樣的地方,最後成功測試,裡面需要注意的是顯示位置的問題。第三題我們做的是一個有演算法要求的解決問題,在測試中出現了一點小問題,程序的演算法出了錯。還有一個問題是有關於顯示問題,最後的數據輸出需要用到兩行分別顯示字元和數據,這樣才不會出錯。

『貳』 Java程序設計實驗報告 繼承與多態

package MyShape;


public class Test {


/**

* @param args

*/

public static void main(String[] args) {

Circle c = new Circle(2,4,3);

c.printItMyWay();

}


}

abstract class Shape{

public abstract float getCir();

public abstract float getArea();

}

class Point extends Shape implements Printable{

public int x;

public int y;

public Point(int x, int y){

this.x= x;

this.y=y;

}

public Point (){

}


@Override

public float getCir() {

// TODO Auto-generated method stub

return 0;

}

@Override

public float getArea() {

// TODO Auto-generated method stub

return 0;

}

public int getX() {

return x;

}

public void setX(int x) {

this.x = x;

}

public int getY() {

return y;

}

public void setY(int y) {

this.y = y;

}

@Override

public void printItMyWay() {

System.out.println(" Point ("+x+","+y+")");

System.out.println(" Point Area:"+this.getArea());

System.out.println(" Point Circle:"+this.getCir());

}

}


class Circle extends Point implements Printable{

public float r ;

public Circle(){

}

public Circle(float r,int x, int y ){

if(r>0){

this.r =r;

this.x =x;

this.y=y;

}

}

public float getR() {

return r;

}

public void setR(float r) {

this.r = r;

}

@Override

public float getArea() {

return (float) (r*r*3.14/2);

}

@Override

public float getCir() {

return (float) (3.14*r*2);

}

@Override

public void printItMyWay() {

System.out.println(" Circle ("+x+","+y+")");

System.out.println(" Circle R:"+r);

System.out.println(" Circle Area:"+this.getArea());

System.out.println(" Circle Circle:"+this.getCir());

}

}


interface Printable {

public void printItMyWay();

}

『叄』 求JAVA的實驗報告

一、實驗目的1.掌握類的聲明。2.掌握對象的創建。3.掌握方法的定義和調用。4.掌握構造函數的使用。二、實驗內容1.編程創建一個Box類,在其中定義三個變數表示一個立方體的長、寬和高,再定義一個方法setDemo對這三個變數進行初始化,然後定義一個方法求立方體的體積。創建一個對象,求給定尺寸的立方體的體積。2.將上題的方法setDemo改用構造函數實現初始化。三、實驗步驟1.創建一個box類,在其中定義三個變數表示立方體的長、寬、高,再定義構造函數setDemo對三個變數進行初始化,然後定義一個方法求立方體的體積。關鍵代碼如下: class Box{protected int length,width,height;public void setDemo(int l,int w,int h){length=l;width=w;height=h;}public void Cub(){int cub=length*width*height; System.out.println("立方體的體積為:"+cub);}

『肆』 問: java中多分支語句和普通的if語句有什麼不同,在使用時應該注意什麼這是實驗報告,別告訴

switch與if..else 的執行的效率問題
今天讀一前輩的程序,發現其在串口中斷裡面為了分析協議的報文類型,在中斷函數裡面使用if..else語句。因為報文類型在現在看來只有兩種,以後有可能還會增加,不確定。
本人以為這樣用有些不妥,為什麼不用switch語句呢?猜想是不是因為效率方面的考慮呢,畢竟我們應該盡量是中斷的處理代碼更加簡潔,時間效率更高才好。
所以本人就查找相關資料,資料顯示switch語句反而比ifelse的執行效率要高。
下面來詳細描述switch與ifelse的區別。
switch...case
與if...else的根本區別在於,switch...case會生成一個跳轉表來指示實際的case分支的地址,而這個跳轉表的索引號與switch
變數的值是相等的。從而,switch...case不用像if...else那樣遍歷條件分支直到命中條件,而只需訪問對應索引號的表項從而到達定位分
支的目的。
具體地說,switch...case會生成一份大小(表項數)為最大case常量+1的跳錶,程序首先判斷switch變數是否大於
最大case
常量,若大於,則跳到default分支處理;否則取得索引號為switch變數大小的跳錶項的地址(即跳錶的起始地址+表項大小*索引號),程序接著跳
到此地址執行,到此完成了分支的跳轉。
//

int main()
{
unsigned int i,j;
i=3;
switch (i)
{
case 0:
j=0;
break;
case 1:
j=1;
break;
case 2:
j=2;
break;
case 3:
j=3;
break;
case 4:
j=4;
break;
default:
j=10;
break;
}

}

用gcc編譯器,生成匯編代碼(不開編譯器優化)
.file "shiyan.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $20, %esp
movl $3, -8(%ebp)
cmpl $4, -8(%ebp)
ja .L2
movl -8(%ebp), %eax
sall $2, %eax
movl .L8(%eax), %eax
jmp *%eax
.section .rodata
.align 4
.align 4
.L8:
.long .L3
.long .L4
.long .L5
.long .L6
.long .L7
.text
.L3:
movl $0, -12(%ebp)
jmp .L11
.L4:
movl $1, -12(%ebp)
jmp .L11
.L5:
movl $2, -12(%ebp)
jmp .L11
.L6:
movl $3, -12(%ebp)
jmp .L11
.L7:
movl $4, -12(%ebp)
jmp .L11
.L2:
movl $10, -12(%ebp)
.L11:
addl $20, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (Ubuntu 4.3.3-5ubuntu4) 4.3.3"
.section .note.GNU-stack,"",@progbits

由此看來,switch有點以空間換時間的意思,而事實上也的確如此。
1.當分支較多時,當時用switch的效率是很高的。因為switch是隨機訪問的,就是確定了選擇值之後直接跳轉到那個特定的分支,但是if。。else是遍歷所以得可能值,知道找到符合條件的分支。如此看來,switch的效率確實比ifelse要高的多。
2.由上面的匯編代碼可知道,switch...case佔用較多的代碼空間,因為它要生成跳錶,特別是當case常量分布范圍很大但實際有效值又比較少的情況,switch...case的空間利用率將變得很低。
3.switch...case
只能處理case為常量的情況,對非常量的情況是無能為力的。例如 if (a > 1 && a <
100),是無法使用switch...case來處理的。所以,switch只能是在常量選擇分支時比ifelse效率高,但是ifelse能應用於更
多的場合,ifelse比較靈活。

由此看來,上面前輩的中斷處理程序中用switch是比較合適的,即節省了時間,而且對於以後程序的擴展也是很方便。因為報文類型這個值基本上都是用整形常量來表示的。

熱點內容
androidurl判斷 發布:2025-05-20 13:50:11 瀏覽:259
共享文件夾沒有啟動伺服器服務 發布:2025-05-20 13:43:38 瀏覽:803
天龍八部游戲怎麼切換伺服器 發布:2025-05-20 13:42:36 瀏覽:631
亞馬遜免費主機是什麼配置 發布:2025-05-20 13:40:10 瀏覽:696
存儲類型默認分配 發布:2025-05-20 13:32:26 瀏覽:663
qq信息加密 發布:2025-05-20 13:31:32 瀏覽:341
文件夾嗅探器foldersniffer 發布:2025-05-20 12:33:36 瀏覽:912
編譯裝入 發布:2025-05-20 12:32:48 瀏覽:563
萬勝壓縮機價格 發布:2025-05-20 12:20:00 瀏覽:987
判斷雲伺服器是否誠實的存放數據 發布:2025-05-20 12:11:07 瀏覽:378