本篇內(nèi)容介紹了“Java應(yīng)用程序的運(yùn)行環(huán)境以及參數(shù)的傳遞”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站成立于2013年,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元武安做網(wǎng)站,已為上家服務(wù),為武安各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
Java應(yīng)用程序是指可以獨(dú)立運(yùn)行在Java虛擬機(jī)上的程序,它是一種中間代碼(byte-code?copy;。比如你的應(yīng)用程序叫my.java,程序里有一個(gè)名稱(chēng)為app1的類(lèi),用Javac或其它編譯器,編譯后將會(huì)生成app1.class,則在命令行狀態(tài)下輸入:javaapp1就可以運(yùn)行此程序。注意,用java命令運(yùn)行的類(lèi)必須有main函數(shù),否則不能執(zhí)行。與普通java應(yīng)用程序不同的另一種另一種Java程序叫JavaApplet。我們把它譯成Java小程序,這種程序后綴也是.class,但它不能直接在java虛擬機(jī)上運(yùn)行,也就是輸入java*.class不能運(yùn)行,這種程序里可以沒(méi)有main函數(shù),它必須由某個(gè)瀏覽器來(lái)運(yùn)行,比如Appletviewer或Netscape2.02以上等。這種程序我們將在后面章節(jié)中介紹。
讓我們來(lái)看一看最簡(jiǎn)單的Java應(yīng)用程序例子,來(lái)理解一下它的結(jié)構(gòu):Filename:1.java
classmyfirst{publicstaticvoidmain(Stringargs[]){System.out,println("ThisismyfirstJavaApplication");}}
這就是一個(gè)完整的Java應(yīng)用程序,將它編譯:Javac1.java在當(dāng)前目錄下,它將生成myfirst.class文件,Javamyfirst屏幕上將會(huì)輸出:ThisismyfirstJavaApplication
讓我們來(lái)一步一步分析每句話含義(1?copy;classmyfirst這一行用關(guān)鍵詞class來(lái)定義名為myfirst的新類(lèi),myfirst是新類(lèi)的名稱(chēng),必須是一個(gè)有效的標(biāo)識(shí)符,有效標(biāo)識(shí)符定義請(qǐng)見(jiàn)程序設(shè)計(jì)基礎(chǔ)章節(jié)。類(lèi)的說(shuō)明包括數(shù)據(jù)說(shuō)明和成員函數(shù)說(shuō)明,都放在類(lèi)后面的大括號(hào)里面。一般類(lèi)定義如下:class類(lèi)名稱(chēng){數(shù)據(jù)定義;函數(shù)定義;}
(2)publicstaticvoidmain(Stringargs[])public是一個(gè)表示訪問(wèn)權(quán)限的關(guān)鍵字,表示此成員函數(shù)是公有的,可以被其他類(lèi)直接調(diào)用,包括java解釋器。相對(duì)應(yīng)的關(guān)鍵字有private和protected,friend。private表示只能被本類(lèi)訪問(wèn),protected表示只能被子類(lèi)訪問(wèn),friend是缺省的訪問(wèn)權(quán)限,表示能被本包(package)中任意類(lèi)訪問(wèn),對(duì)其它包中的類(lèi)是不可訪問(wèn)的。static表示main成員函數(shù)在myfirst類(lèi)的所有對(duì)象中是唯一的,因此如果本程序生成另一個(gè)myfirst類(lèi)對(duì)象,調(diào)用的main函數(shù)將是同一個(gè)函數(shù)。void表示main函數(shù)沒(méi)有返回值,如果有返回類(lèi)型值,則可加上interger或boolean諸如此類(lèi),對(duì)于有返回值的函數(shù),其函數(shù)實(shí)體的最后應(yīng)加上return語(yǔ)句。main這個(gè)函數(shù)是這運(yùn)行應(yīng)用程序的入口點(diǎn),因此編寫(xiě)應(yīng)用程序是必須有main()函數(shù),且是唯一的。
(3?copy;System.out.println一句這一句是main函數(shù)里的功能語(yǔ)句,是調(diào)用Java里System包里的out類(lèi)的println成員函數(shù),是標(biāo)準(zhǔn)輸入輸出。
Java語(yǔ)言很類(lèi)似C和C++語(yǔ)言。在C語(yǔ)言里,通過(guò)在命令行輸入?yún)?shù),C程序可由main函數(shù)讀入這?copy;參數(shù),java程序也一樣,請(qǐng)看下面程序:Filename:2.java
classMy2{publicstaticvoidmain(Stringargs[]){intarc=args.length;if(arc>0){for(inti=0;i<arc;i++)System.out.println(args[i])}else{System.out.println("Applicationhavenoargs!");}}}
編譯:javac2.java將在本目錄下生成My2.class文件。
運(yùn)行:javaMy2輸出:Applicationhavenoargs!
運(yùn)行:javaMy2arg1arg2arg3輸出:arg1arg2arg3這說(shuō)明,java里參數(shù)的傳遞是這樣的,命令行里類(lèi)名后第一個(gè)參數(shù)放在args[0]里,第二個(gè)參數(shù)放在args[1]里,以此類(lèi)推。
Frame介紹在Java語(yǔ)言里,F(xiàn)rame類(lèi)的功能是創(chuàng)建圖形用戶(hù)界面(GUI)的基本窗口。在典型瀏覽器里,F(xiàn)rame類(lèi)是顯示GUI的父類(lèi)。
類(lèi)的層次結(jié)構(gòu)如下:java.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Windowjava.awt.Frame
Frame是從沒(méi)有邊框和菜單條的空白窗口?copy;充來(lái)的。這種窗口主要用在彈出式窗口方式下。Frame給窗口一個(gè)邊框,一個(gè)布局和一個(gè)窗口條。
你可以通過(guò)創(chuàng)建自己的多個(gè)Frame來(lái)創(chuàng)建圖形用戶(hù)界面的應(yīng)用程序。我們已知道怎樣建立獨(dú)立的java應(yīng)用程序,那么怎樣將各種迷人的圖形結(jié)合在一塊呢?我們通過(guò)建立一個(gè)Frame來(lái)實(shí)現(xiàn)這個(gè)功能。Frame讓我們?cè)L問(wèn)窗口,和applet工作區(qū)有許多相同的地方。下面是一個(gè)小的應(yīng)用程序,它彈出一個(gè)框架并且在框架里顯示信息。(信息可以是命令行參數(shù),也可以是缺省的信息?copy;。如果你在窗口里點(diǎn)一下,程序退出。
基本框架程序importjava.awt.*;
/**Memo.java*Asimplestand-alonegraphicalapplication*/
publicclassMemoextendsFrame{publcStringmotd;
publicMemo(Strings){//setourtitlesuper("MemoFrame");
motd=s;resize(300,300);}
publicMemo(){this("ThisisaMemo");}
publicvoidpaint(Graphicsg){g.drawString(motd,15,15);g.drawString("ClickanywheretoExit",15,25);}
publicvoidstart(){show();}
publicbooleanmouseDown(Evente,intx,inty){//hidethewindowhide();//freeupsystemresourcesdispose();//Quittheapp.System.exit(0);returnfalse;}
publicstaticvoidmain(Stringargs[]){Memom;if(args.length>){m=newMemo(args[0]);}else{m=newMemo();}m.start();}}
將Frame聯(lián)系起來(lái)l熟悉的函數(shù)paint()和mouseDown(),看起來(lái)有點(diǎn)眼熟。這?copy;函數(shù)與applet的函數(shù)一樣。實(shí)際上,一個(gè)frame包含各種GUI組件與applet的形式一樣。另一個(gè)熟悉的函數(shù)是start()。這個(gè)函數(shù)并不必要,因?yàn)槲覀儧](méi)有覆蓋任何已存在的函數(shù)。但你想繼承applet編程的風(fēng)格,你還是可以使用start(),stop(),init()與destroy()等函數(shù)。
l新函數(shù)我們熟悉的函數(shù)start()調(diào)用了show()。show()函數(shù)是Window類(lèi)的繼承,它顯示Fame及其所有組件。在mouseDown()函數(shù)里我們看到兩個(gè)函數(shù):hide()和dispose()。hide()只簡(jiǎn)單地使Frame不可見(jiàn)。你可以在任何時(shí)候調(diào)用它來(lái)隱藏窗口。dispose()函數(shù)釋放由Frame占有的系統(tǒng)資源。只有在你不需要Frame時(shí)才調(diào)用它。
l構(gòu)造函數(shù)Memo例子還包含了一個(gè)新函數(shù)Memo()。其實(shí)這個(gè)類(lèi)有兩個(gè)Memo()函數(shù)!任何與類(lèi)名相同的函數(shù)都是構(gòu)造函數(shù)。它在創(chuàng)建一個(gè)新對(duì)象時(shí)被調(diào)用。你可以認(rèn)為它是一個(gè)對(duì)象的init()初始化函數(shù)。為什么需要兩個(gè)構(gòu)造函數(shù)呢?有了兩個(gè)構(gòu)造函數(shù),我們可以利用多態(tài)性的優(yōu)點(diǎn),有兩種方法創(chuàng)建一個(gè)新Memo對(duì)象。我們可以簡(jiǎn)單的創(chuàng)建使用缺省信息的Memo對(duì)象:m=newMemo();或者,我們可以自己提?copy;信息:m=newMemo("Ourmessage");
Frame控制本程序的最后功能是在main()里建立并顯示frame。它由以下兩步實(shí)現(xiàn)://Step1m=newMemo();
//Step2m.start();第一步初始化memo對(duì)象。我們象操作其它對(duì)象一樣操作m。為顯示frame,我們需要調(diào)用show()。這在第二步里實(shí)現(xiàn)。另一個(gè)要注意的是程序的健壯性:我們基本的frame里沒(méi)有包含處理標(biāo)準(zhǔn)WINDOW_DESTROY消息的函數(shù)。這樣,你將不能在窗口的控制菜單里選中"Quit"或"Exit"。為了增加這個(gè)功能,你需要增加以下的處理程序:
publicbooleanhandleEvent(Evente){if(e.id==Event.WINDOW_DESTROY){dispose();System.exit(1);returntrue;}else{//Goaheadanddowhatwenormallywouldhavedonereturnsuper.handleEvent(e);}}
菜單圖形界面依靠菜單來(lái)指導(dǎo)用戶(hù)操作。設(shè)計(jì)獨(dú)立的Java應(yīng)用程序時(shí),Java提?copy;創(chuàng)建和使用菜單的直接方法。象其它組件一樣,new將創(chuàng)建一個(gè)菜單:
MenuoptionMenu;optionsMenu=newMenu("Options");
菜單項(xiàng)一?copy;你創(chuàng)建了一個(gè)菜單,你可以使用add()來(lái)組建菜單項(xiàng):
optionsMenu.add(newMenuItem("Option1");optionsMenu.add(newMenuItem("Option2");
菜單事件當(dāng)你選中某個(gè)菜單項(xiàng)時(shí),你創(chuàng)建此菜單項(xiàng)的字符?reg;將在事件中返回。你可以象測(cè)試按鈕選擇一樣測(cè)試菜單選擇:
publicbooleanaction(Evente,Objectarg){...if(e.targetinstanceofMenuItem){System.out.println((String)arg);}...}
其它菜單項(xiàng)除了上面描述的簡(jiǎn)單菜單項(xiàng)外,你還可增加CheckBox菜單項(xiàng),分割線,以及子菜單。下面是一?copy;例子:Menum,n;m=newMenu("Examples");m.add(newMenuItem("Basic"));m.add(newMenuItem("Simple"));
//addaseparatorm.add(newMenuItem("-"));
//addaCheckboxitemm.add(newCheckboxMenuItem("Check"));
//addasubmenun=newMenu("MoreExamples");n.add(newMenuItem("SubBasic"));n.add(newMenuItem("SubSimple"));m.add(n);
菜單條你創(chuàng)建好菜單后,你應(yīng)將?reg;放在應(yīng)用程序的菜單條上:mb=newMenubar();
mb.add(m);mb.add(optionsMenu);
然后你可為applet設(shè)置菜單條:setMenuBar(mb);
為了看一個(gè)更復(fù)雜的獨(dú)立的圖形界面應(yīng)用程序,下面有一個(gè)數(shù)字轉(zhuǎn)換的例子:
importjava.awt.*;
publicclassd2xextendsFrame{intdecimalValue=0;StringbaseXValue=newString("0");TextFielddDisplay,xDisplay;
//d2xconstructorpublicd2x(){super("DecimalConverter");//setthetitleoftheframeMenuBarmb=newMenuBar();Buttond2Binary=newButton("Binary");Buttond2Octal=newButton("Octal");Buttond2Hex=newButton("Hex");Buttond2Base36=newButton("Base36");Panelp1=newPanel();Panelp2=newPanel();Panelp3=newPanel();
//addasimplemenuMenum=newMenu("Application");m.add(newCheckboxMenuItem("Base36Active");m.add(newMenuItem("Exit"));
//addmenutomenubarmb.add(m);setMenuBar(mb);//installthismenubarintheframe
//Addbuttonstotheirownpanelp3.setLayout(newFlowLayout());p3.add(d2Binary);p3.add(d2Octal);p3.add(d2Hex);p3.add(d2Base36);
//AddtextfieldsLabeldLabel=newLabel("EnterDeecimal:");LabelxLabel=newLabel("ConvertedValue:");dDisplay=newTextField(integer.toString(decimalValue),7);xDisplay=newTextField(baseXValue,32);xDisplay.setEditable(false);p1.setLayout(newFlowLayout(FlowLayout.LEFT));p2.setLayout(newFlowLayout(FlowLayout.LEFT));p1.add(dLabel);p1.add(dDisplay);p2.add(xLabel);p2.add(xDisplay);
//Addthepanelsadd("North",p1);add("Center",p2);add("South",p3);}//endd2xconstructor
publicvoidstart(){resize(400,150);show();}
publicvoidupdateXDisplay(){xDisplay.setText(baseXValue);}
publicbooleanhandleEvent(Eventevt){if(evt.targtintanceofMenuItem){if("Exit".equals(((MenuItem)evt.target).getLabel())){hide();dispose();System.exit(0);returnfalse;}retruntrue;}elseif(evt.targetinstanceofButton){Stringwhick=((Button)evt.target).getLabel();if(whick.equals("Binary")){decimalValue=Integer.parseInt(dDisplay.getText());baseXValue=Interger.toString(decimalValue,2);}if(whick.equals("Octal")){decimalValue=Integer.parseInt(dDisplay.getText());baseXValue=Interger.toString(decimalValue,8);}if(whick.equals("Hex")){decimalValue=Integer.parseInt(dDisplay.getText());baseXValue=Interger.toString(decimalValue,16);}if(whick.equals("36")){decimalValue=Integer.parseInt(dDisplay.getText());baseXValue=Interger.toString(decimalValue,36);}updateXDisplay();returntrue;}returnfalse;}
publicstaticvoidmain(Stringargs[]){d2xm=newd2x();m.start();}}
“Java應(yīng)用程序的運(yùn)行環(huán)境以及參數(shù)的傳遞”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
新聞名稱(chēng):Java應(yīng)用程序的運(yùn)行環(huán)境以及參數(shù)的傳遞
網(wǎng)頁(yè)地址:http://jinyejixie.com/article40/ppjgho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)