fkjava

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            49 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

          2012年9月24日 #

           

           

          一般默認情況下,Eclipse的代碼提示功能是比MicrosoftVisualStudio的差很多的,主要是Eclipse本身有很多選項是默認關閉的,要開發(fā)者自己去手動配置。如果開發(fā)者不清楚的話,就不知道Eclipse的代碼提示功能一樣能像MicrosoftVisualStudio的代碼提示功能一樣強大。

          先舉個簡單的例子說明問題所在,例如在Eclipse,代碼里面,打個foreachswitch等這些,是無法得到代碼提示的,其他的就更不用說了,而在MicrosoftVisualStudio里面是得到非常友好的代碼提示的。實際上,Eclipse代碼里面的代碼提示功能默認的一般是點“.”,一般是有了點“.”才會有代碼提示。

           

          原理:“Auto Activation triggers for java”這個選項就是指觸發(fā)代碼提示的的選項,把“.”改成“.abcdefghijklmnopqrstuvwxyz(,”的意思,就是指遇到26個字母和.,(這些符號就觸發(fā)代碼提示功能了。增強Eclipse的代碼提示功能,具體怎么樣來配置?下面開始說步驟:

           

          1.打開Eclipse,然后“window”→“Preferences

          2.選擇“java”,展開,“Editor”,選擇“Content Assist”。

          3.選擇“Content Assist”,然后看到右邊,右邊的“Auto-Activation”下面的“Auto Activation triggers for java”這個選項。其實就是指觸發(fā)代碼提示的就是“.”這個符號.

          4.Auto Activation triggers for java”這個選項,在“.”后加abc字母,方便后面的查找修改。然后“apply”,點擊“OK”。

          5.然后,“File”→“Export”,在彈出的窗口中選擇“Perferences”,點擊“下一步”。

          6.選擇導出文件路徑,本人導出到桌面,輸入“test”作為文件名,點擊“保存”。

          7.在桌面找到剛在保存的文件“test.epf,右鍵選擇“用記事本打開”。

          8.可以看到很多配置Eclipse的信息。

          9.按“ctrl+F”快捷鍵,輸入“.abc”,點擊“查找下一個”。

          10.查找到“.abc”的配置信息.

          11.把“.abc”改成“.abcdefghijklmnopqrstuvwxyz(,”,保存,關閉“test.epf”。

          12.回到Eclipse界面,“File”→“Import”,在彈出的窗口中選擇“Perferences”,點擊“下一步”,選擇剛在已經修改的“test.epf”文件,點擊“打開”,點擊“Finish”。該步驟和上面的導出步驟類似。

          13.最后當然是進行代碼測試了。隨便新建一個工程,新建一個類。在代碼輸入switchforeach等進行測試。你立即會發(fā)現(xiàn),果然出了提示,而且無論是敲哪個字母都會有很多相關的提示了,很流暢很方便。

           

          總結:“Auto Activation triggers for java”這個選項就是指觸發(fā)代碼提示的的選項,把“.”改成“.abcdefghijklmnopqrstuvwxyz(,”的意思,就是指遇到26個字母和.,(這些符號就觸發(fā)代碼提示功能了。順便說一下,修改類名,接口名等以不同顏色高亮的,可以這樣配置在“java”→“enditor”→“syntac”,右邊展開“java”→“classes”,勾上“Enable”這個選項,選擇自己喜歡的顏色即可。當然還有其他相關的顏色配置。具體就不說啦。其實,在“Preferences”這個東西,有很多可以配置的東西,使得Eclipse優(yōu)化的,具體的就要各個人根據(jù)自己個人喜好去配置

          您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

          信息咨詢:Q564205990               星老師

          posted @ 2012-09-24 15:15 瘋狂軟件 閱讀(370) | 評論 (0)編輯 收藏

          2012年9月22日 #

           

          首先,對編碼知識進行簡要的說明,請務必理解后再看下面的代碼。發(fā)送中文字符請求時,如果使用get方式,運行正常;而使用post方法則會出現(xiàn)亂碼。這是由于異步對象XMLHttpRequest在處理返回的responseText的時候,是按UTF-8編碼進行解碼的。

          如果你原來的網頁編碼是gb2312的話,當然會發(fā)生編碼的沖突了;如果你原來的網頁編碼是utf-8,那么就不會出現(xiàn)中文亂碼的問題了。

          出現(xiàn)了中文亂碼該怎么辦呢?通常的解決辦法是用escape()對發(fā)送的數(shù)據(jù)進行編碼,然后在返回的responseText上再用unescape()進行解碼。然而在JavaScript編程中通常不推薦使用escape()unescape(),而推薦使用encodeURI()decodeURI()。請看下面的“表單驗證實例”,或許對你學習編碼知識有一定的幫助。

           

          第一、jQueryload(url,[data],[callback])方法

           

          語法說明:url為異步請求的地址,data用來向服務器傳送請求數(shù)據(jù),為可選參數(shù)。一旦data參數(shù)啟用,整個請求過程將以post的方式進行,否則默認為get方式。如果希望在get方式下也傳遞數(shù)據(jù),可以在url地址后面用類似“dataname1=data1&dataName2=data2”的方法。

          callbackAjax加載成功后運行的回調函數(shù)。另外使用load()方法返回的數(shù)據(jù),不再需要考慮是文本還是XMLjQuery都會自動進行處理。好了,下面馬上使用load()方法實現(xiàn)“自動表單驗證”實例。首先是,html框架,5個例子都是一樣的,如下:

          1. <form>  

          2. 用戶昵稱:<input type="text" onblur="startCheck(this)" name="User" id="User"><span id="UserResult"></span><br />  

          3. 輸入密碼:<input type="password" name="passwd1"><br />  

          4. 確認密碼:</td><td><input type="password" name="passwd2"><br />  

          5. <input type="submit" value="注冊" class="button">  

          6. <input type="reset" value="重置" class="button">  

          7. </form> 

          必要說明:

          1onblur="startCheck(this)" 這是JavaScript代碼(簡稱js) ,意思是text文本框失去焦點時觸發(fā)自定義函數(shù)startCheck(),this是指代text文本框的值。

          2<span id="UserResult"></span>用來存放異步對象返回的結果。

          1. jQuery代碼如下: 

          2. 

          3. <script language="javascript" src="jquery.min.js"></script>  

          4. <script language="javascript">  

          5. function startCheck(oInput){  

          6.     //首先判斷是否有輸入,沒有輸入直接返回,并提示  

          7.     if(!oInput.value){  

          8.         oInput.focus(); //聚焦到用戶名的輸入框  

          9.         document.getElementById("UserResult").innerHTML = "User cannot be empty.";  

          10.         return;  

          11.     }  

          12.     oInput=$.trim(oInput.value); //使用jQuery$.trim()方法過濾左右空格  

          13.     var sUrl = "action.asp?user=" + oInput;  

          14.     sUrl=encodeURI(sUrl); //使用encodeURI()編碼,解決中文亂碼問題  

          15.     $("#UserResult").load(sUrl,function(data){  

          16.         $("#UserResult").html(decodeURI(data)); //使用decodeURI()解碼  

          17.         }  

          18.     );  

          19. }  

          20. </script> 

          必要說明:

          1、使用jQuery時,都必須加載jquery.min.js文件,可以到http://jquery.com/官網下載最新的版本。

          2、判斷是否有輸入時,用的全是JavaScript語法。

          3、對傳遞給“處理頁”的參數(shù)進行encodeURI編碼,以解決中文亂碼問題。

          4load()中的function函數(shù)是為了對返回結果進行decodeURI解碼,以解決中文亂碼問題。

          5、對$.trim()$("#UserResult")htmljQuery語法不理解的,可以參考jQuery中文手冊。本站提供下載。

          1. action.asp處理頁代碼如下: 

          2. 

          3. <%  

          4. if(Request("user")="eko") then  

          5. Response.Write "Sorry, " & Request("user") & " already exists."  

          6. else  

          7. Response.Write Request("user")&" is ok."  

          8. end if  

          9. %>

          必要說明:

          1action.asp處理頁的編碼是GB2312,如果把"Sorry..already exists..is ik"等英文改為中文,請看下面的說明。

          2、使用post方法會出現(xiàn)亂碼,這是由于異步對象XMLHttpRequest在處理返回的responseText的時候,是按UTF-8編碼進行解碼的。

          3、所以post方式的話,必須把action.asp頁另存為時,第三項的編碼由 ANST 改為 UTF-8 (請務必記住!!)

           

          第二、使用$.get(url,[data],[callback])$.post(url,[data],[callback])方法

           

          語法說明:盡管load()方法可以實現(xiàn)getpost兩種方式,但很多時候開發(fā)者還是希望能夠指定發(fā)送方式,并且處理服務器返回的值。jQuery提供了$.get()$.post()兩種方法,分別針對這兩種請求方式。

          其中,url為請求地址,data為請求數(shù)據(jù)的列表,是可選參數(shù),callback為請求成功后的回調函數(shù),該函數(shù)接受兩個參數(shù),第一個參數(shù)為服務器返回的數(shù)據(jù),第二個參數(shù)為服務器的狀態(tài),是可選參數(shù)。$.post()中的type為請求數(shù)據(jù)的類型,可以是htmlxmljson等。 “可自動校驗表單實例”的jQuery代碼如下,html如上所述。

          1. <script language="javascript" src="jquery.min.js"></script>  

          2. <script language="javascript">  

          3. function createQueryString(){  

          4.     var username=$("#User").val();  

          5.     //組合成對象的形式  

          6.     var queryString={user:username};  

          7.     return queryString;  

          8.     }  

          9. function startCheck(oInput){  

          10.     //首先判斷是否有輸入,沒有輸入直接返回,并提示  

          11.     if(!oInput.value){  

          12.         oInput.focus(); //聚焦到用戶名的輸入框  

          13.         document.getElementById("UserResult").innerHTML = "User cannot be empty.";  

          14.         return;  

          15.     }  

          16.     oInput=$.trim(oInput.value); //使用jQuery$.trim()方法過濾左右空格  

          17.     $.get("action.asp",createQueryString(),  

          18.         function(data){  

          19.             $("#UserResult").html(data);  

          20.     });  

          21. }  

          22. </script>

          必要說明:

          1、對$.trim()$("#UserResult")htmlval()jQuery語法不理解的,可以參考jQuery中文手冊。本站提供下載。

          2、自定義函數(shù)createQueryString(),是對傳入“處理頁”的參數(shù),進行處理。一種常規(guī)的方法。

          3、因為是以get方式處理,說明這里不需要進行編碼和解碼。下面以post方式處理,則需要編碼和解碼了,代碼如下

          1. function createQueryString(){  

          2.     //使用encodeURI()編碼解決中文亂碼問題  

          3.     var username=encodeURI($("#User").val());  

          4.     //組合成對象的形式  

          5.     var queryString={user:username};  

          6.     return queryString;  

          7.     }  

          8. function startCheck(oInput){  

          9.     //首先判斷是否有輸入,沒有輸入直接返回,并提示  

          10.     if(!oInput.value){  

          11.         oInput.focus(); //聚焦到用戶名的輸入框  

          12.         document.getElementById("UserResult").innerHTML = "User cannot be empty.";  

          13.         return;  

          14.     }  

          15.     oInput=$.trim(oInput.value); //使用jQuery$.trim()方法過濾左右空格  

          16.     $.post("action.asp",createQueryString(),  

          17.         function(data){  

          18.             $("#UserResult").html(decodeURI(data));  

          19.     });  

          20. }  

          21. </script>

           

          第三、使用$.ajax()方法

           

          語法說明:盡管load()$.get()$.post()非常方便實用,但卻不能控制錯誤和很多交互的細節(jié),可以說這3種方法對Ajax的可控性較差。jQuery提供了一個強大的函數(shù)$.ajax(options)來設置Ajax訪問服務器的各個細節(jié),它的語法十分簡單,就是設置Ajax的各個選項,然后指定相應的值。“可自動校驗表單”實例代碼如下:

          1. <script language="javascript" src="jquery.min.js"></script>  

          2. <script language="javascript">  

          3. function createQueryString(){  

          4.    //使用encodeURI()編碼解決中文亂碼問題  

          5.     var username=encodeURI($("#User").val());  

          6.     //組合成對象的形式  

          7.     var queryString={user:username};  

          8.     return queryString;  

          9. }  

          10. function startCheck(oInput){  

          11.     //首先判斷是否有輸入,沒有輸入直接返回,并提示  

          12.     if(!oInput.value){  

          13.     oInput.focus(); //聚焦到用戶名的輸入框  

          14.     document.getElementById("UserResult").innerHTML = "User cannot be empty.";  

          15.     return;  

          16.     }  

          17.     oInput=$.trim(oInput.value); //使用jQuery$.trim()方法過濾左右空格  

          18.     $.ajax({  

          19.         type: "GET",  

          20.         url: "action.asp",  

          21.         data: createQueryString(),  

          22.         success: function(data){  

          23.             $("#UserResult").html(decodeURI(data));  

          24.         }  

          25.     });  

          26. }  

          27. </script>

          必要說明:

          1、代碼基本同上,只是$.ajax(options)稍有不同,對于其參數(shù)不理解可以參考jQuery中文手冊。

          2、給個建議,無論是get方式還是post方式,都習慣進行編碼,以防出現(xiàn)中文亂碼的問題。

          3、再強調一下,無論使用哪種程序,如果遇到問題了,都可以參考相關的手冊說明,這是建站所必需的。

          上面的實例使用了jQueryload()方法、$.get()$.post()$.ajax()4種方法,都要考慮中文亂碼的問題,下面推薦一個方法,進一步簡化jQuery代碼,呵呵。

           

          第四、表單插件

           

          表單插件(Form Plugin)是一款功能非常強大的插件,在jQuery官方網站上目前為4星級推薦,下載后為jquery.form.js文件。該插件提供獲取表單數(shù)據(jù)、重置表單項目、使用Ajax提交數(shù)據(jù)等一系列功能,深受開發(fā)人員的喜愛。使用表單插件,再次重寫“表單校驗實例”,完整代碼如下:

          1. <form id="myform" action="action.asp">  

          2. 用戶昵稱:<input type="text" onblur="startCheck(this)" name="User" id="User"><input type="button" value=" " class="button"><span id="UserResult"></span><br />  

          3. 輸入密碼:<input type="password" name="passwd1"><br />  

          4. 確認密碼:</td><td><input type="password" name="passwd2"><br /><br />  

          5. <input type="submit" value="注冊" class="button"><input type="reset" value="重置" class="button">  

          6. </form>

          HTML框架加了一個“檢查”的按鈕(使用手動校驗的方法)jQuery如下:

          1. <script language="javascript" src="jquery.min.js"></script>  

          2. <script language="javascript" src="jquery.form.js"></script>  

          3. <script language="javascript">  

          4. function startCheck(oInput){  

          5.     //首先判斷是否有輸入,沒有輸入直接返回,并提示  

          6.     if(!oInput.value){  

          7.         oInput.focus(); //聚焦到用戶名的輸入框  

          8.         document.getElementById("UserResult").innerHTML = "User cannot be empty.";  

          9.         return;  

          10.     }  

          11. }  

          12. $(function(){  

          13.     $("input[type=button]").click(function(){  

          14.         var options={  

          15.             target: "#UserResult"  

          16.         };  

          17.         //表單的Ajax  

          18.         $("#myform").ajaxSubmit(options);  

          19.     });  

          20. });  

          21. </script>

          必要說明:

           

          1、使用表單插件,必須加載jquery.form.js文件。

           

          2、按Ajax方式提交數(shù)據(jù),可以使用表單插件的ajaxSubmit(options)來按照Ajax的方式直接提交表單或者使用ajaxform(options)方法,通常在頁面加載完成時執(zhí)行,用來將表單統(tǒng)一Ajax化,并且提交表單依然使用傳統(tǒng)的submit按鈕,只不過進行的是Ajax提交。其中參數(shù)options$.ajax(options)的參數(shù)基本相同。

             您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

             信息咨詢:Q564205990               星老師

          posted @ 2012-09-22 11:22 瘋狂軟件 閱讀(992) | 評論 (0)編輯 收藏

          2012年9月21日 #

          Java中常見的違規(guī)編碼

           

           一、Eclipse編譯器提供源代碼格式輸入

              Eclipse提供自動源碼格式選項,并且組織輸入(刪除未使用的代碼)。你可以使用下面的這些快捷鍵進行操作。

              Ctrl + Shift + F--源代碼格式

              Ctrl + Shift + O--組織輸入并刪除未使用的代碼

              代替手動調用這兩個函數(shù),只需根據(jù)Eclipse自動格式和自動組織選項,可以隨時保存文件。

              操作步驟,在Eclipse中進入Window -> Preferences -> Java -> Editor -> Save Actions,然后以選定的方式保存,最后檢查Format source code + Organize imports.

              二、避免多個返回(退出點)

              依照你的方法,確保只有一個退出點。不要在同一個地方或多個地方使用返回。比如,下面的代碼,NOT RECOMMENDED(不建議),這是因為有多個退出點(返回語句)。

              1.private boolean isEligibleint age{

              2. ifage > 18{

              3.    return true;

              4. }else{

              5.    return false;

              6. }

              7.}

              下面的代碼有所提升,這是更高版本的。

              1.private boolean isEligibleint age{

              2. boolean result;

              3. ifage > 18{

              4.    result = true;

              5. }else{

              6.    result = false;

             7. }

              8. return result;

              9.}

          三、簡化if-else

              我寫了幾個實用的方法作為參考,檢查語句條件并且基于該條件返回值。比如,考慮到isEligible方法,正如你之前所看到的:

              1.private boolean isEligibleint age{

              2. boolean result;

              3. ifage > 18{

              4.    result = true;

              5. }else{

              6.    result = false;

              7. }

              8. return result;

              9.}

              整個方法以一個單一的return語句重新編寫:

              1.private boolean isEligibleint age{

              2.3.return age > 18;

              4.5.}

              四、不要給Boolean, Integer或者String創(chuàng)建新的實例

              避免給Boolean,Integer,String創(chuàng)建新的實例。比如,使用new Booleantrue),Boolean,valueOftrue)。修改后的語句與之前的效果基本相同,除了在性能上有所提升。

              五、使用大括號模塊語句

              永遠別忘了使用大括號模塊語句比如ifforwhile.這樣做的好處是當你在修改模塊級語句時減少了模糊代碼并且避免引進bug的機會。

              不建議:

              1.ifage > 18

              2. result = true;

              3.else

              4. result = false;

              建議:

              1.ifage > 18{

              2. result = true;

              3.}else{

              4. result = false;

              5.}

              六、以final類型標記方法參數(shù),任何時候都適用

              請記住,以final類型標記方法參數(shù),任何時候都適用。這樣做的好處在于當你不小心修改參數(shù)值時,編譯器會給你警告,同時它還能以更好的方式優(yōu)化編譯器代碼字節(jié)。

              建議:

              private boolean isEligiblefinal int age{ }

              七、在UPPERCASE中命名public static final字段

              UPPERCASE中命名public static final字段(通常也被稱之為常量)。這個可以讓你輕松區(qū)分常量字段和局部變量之間的不同。

              不建議:

              public static final String testAccountNo = "12345678";

              建議:

              public static final String TEST_ACCOUNT_NO = "12345678";,

              八、組合成單一的if語句

              在盡可能多的情況下,把多個if語句組合成單一的if語句,比如下面的代碼:

              1.ifage > 18{

              2. if voted == false{

              3.    // eligible to vote.

              4. }

              5.}

              合并成單一的if語句:

              1.ifage > 18 && !voted{

              2. // eligible to vote

              3.}

              九、Switch應該有default

              始終給Switch語句添加default.

              十、使用常量來避免重復定義相同的字符串值

              如果你在多個地方必須使用字符串,那么使用常量來避免重復定義擁有相同值的字符串。

              比如,看下面的代碼:

              1.private void someMethod(){

              2. logger.log"My Application" + e);

              3. …

              4. …

              5. logger.log"My Application" + f);

              6.}

              string literal"我的應用"可以作為常量并且能在代碼中使用。

              1.public static final String MY_APP = "My Application";

              2.

              3.private void someMethod(){

              4. logger.logMY_APP + e);

              5. …

              6. …

              7. logger.logMY_APP + f);

          8.}

              您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

              信息咨詢:Q564205990               星老師

          posted @ 2012-09-21 14:45 瘋狂軟件 閱讀(186) | 評論 (0)編輯 收藏

          2012年9月20日 #

           

          2012年中國移動互聯(lián)網大會上,歐朋瀏覽器總經理宋麟在名為“移動互聯(lián)網的未來”的主題演講中表示,新一代網絡標準HTML5對于移動瀏覽器性能和用戶體驗的提升有重要意義,雖然目前國內HTML5存在一定虛火,但最晚到明年年中HTML5技術會趨向成熟。伴隨著HTML5標準的普及,或將帶來整個瀏覽器行業(yè)的重新洗牌。

            “HTML5作為一個技術而言,是最符合互聯(lián)網精神的一項技術。”宋麟說。作為一個開放的網絡標準,HTML5具有跨平臺、多設備、及時更新等多項優(yōu)勢,在統(tǒng)一的HTML5標準下,移動瀏覽器可以在不同平臺、不同設備上實現(xiàn)一致的用戶體驗。對開發(fā)者和用戶而言,HTML5都能帶來極大便利;同時,HTML5的開放性使其不會被任何一家企業(yè)壟斷,有利于促進整個行業(yè)的良性發(fā)展。

            雖然HTML5目前存在性能不夠完善、盈利模式不清晰等許多爭議,但宋麟認為HTML5與移動互聯(lián)網的未來密切相關,伴隨HTML5技術標準的成熟,移動瀏覽器將更好地承擔平臺的功能。

            從去年年底到今年年中,國內主流移動瀏覽器廠商先后推出支持HTML5標準的產品,并展開在HTML5跑分上的比拼。“現(xiàn)階段HTML5在國內有點被過度吹捧。”宋麟認為,“主要表現(xiàn)在目前HTML5技術無論是用戶體驗還是性能支持上都還不是十分成熟。”作為HTML5標準的發(fā)明人,Opera歐朋與全球其他領先企業(yè)都把HTML5研發(fā)作為現(xiàn)階段的重點,預計到明年年中,HTML5標準將得到初步的普及。

          談及HTML5標準普及對移動互聯(lián)網市場競爭帶來的影響,宋麟認為HTML5既是全行業(yè)的機會,也會對現(xiàn)有市場格局帶來沖擊。“變局中有人會跑贏,也會有被淘汰。”宋麟表示。         您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

          信息咨詢:Q564205990              星老師

          posted @ 2012-09-20 11:26 瘋狂軟件 閱讀(173) | 評論 (0)編輯 收藏

          2012年9月18日 #

           最近,經過幾次課,算是復習,也算是學習吧。修補了一些,以前自學時的漏洞,熟悉了一些關于JAVA的基礎知識。以下是,這幾天的一個簡單的總結。

          1.Java的環(huán)境JDK(Java development Kit)

          Sun公司http//www.oracle.com的網頁上有各種版本的Jdk,供用戶下載使用。安裝jdk后,一定要修改環(huán)境變量。就實際上而言,說修改不如說是添加環(huán)境變量。最后進入cmd界面驗證JDK首安裝成功!若安裝不成功,oracle公司的網頁上也有一些列的解決方案。

          2.Java的類名

          Java是大小寫敏感的一種語言,只能以字母開頭,可以含有下劃線和數(shù)字,不能使用關鍵字和保留字。

          Java 關鍵字列表 (依字母排序 51):

          abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while

          Java 保留字列表 (依字母排序 14) : Java保留字是指現(xiàn)有Java版本尚未使用 但以后版本可能會作為關鍵字使用。

          byValue, cast, false, future, generic, inner, operator, outer, rest, true, var goto const,null

          類名在使用中習慣將每個單詞首字母大寫。且于文件名相同。

          3.Java的數(shù)據(jù)類型

          一般而言,Java的數(shù)據(jù)類型可分為基本類型和引用類型

          基本類型:

          boolean 布爾值,作二元判斷 true, false

          byte 8位有符號整數(shù) 最小值-128,最大值127

          short 16位有符號整數(shù) 最小值-32768,最大值32767

          int 32位有符號整數(shù) 最小值-2147483648,最大值2147483647

          long 64位有符號整數(shù) 最小值-9223372036854775808,最大值 9223372036854775807

          float 32位浮點數(shù) 1.4E-45~3.4028235E38

          double 64位浮點數(shù) 4.9E-324~1.7976931348623157E308

          char 16Unicode字符 不適用

          基本類型(Primitive Types)也稱作內置類型,是其他類型的基礎。所有的其他類型(包括Java核心庫和用戶自定義類型)都是通過基本類型擴展而來的。這些類型是我們描述對象最基本的方式。比如:判斷是否使用boolean;衡量大小、長度使用各種整型(包括short, int, long)和浮點數(shù)(floatdouble);表達字符使用char;而處理二進制數(shù)據(jù)塊使用byte

          引用類型

          有數(shù)組和對象,究其根本數(shù)組也是對象

          最后不得不提一下String

          String s="abc";//s不為對象

          String s=new String("abc");//s為一個對象

          4.對象與類

          類:類似于生物界的門綱目科屬種的分類,在Java語言中,只有類這個概念,而可以通過父類和子類的方式來表達這種層次家哪的關系。比如,我們可以說食物是一個類,而面食就是一個子類。

          對象:就像是一個類的一個實例,比如我們說電腦,這就是一個類,泛指電腦這類東西,而我們說,這臺電腦,這就是一個實例了,就是一個對象。當然,類也可以是看不見摸不著的東西,比如說語言就是一個類,而中國普通話就是一個對象。

          類名 對象名=new 類名();//實例化對象的格式

          總之,類相當于一個概念,而類就是這個概念下的一個實體。

          5.參數(shù)傳遞

          Java中參數(shù)傳遞的方式和C中一樣,可分為兩類:值傳遞和引用傳遞

          值傳遞

          int a=10;//定義一個變量

          fun b=new fun();//假設已有一個類為fun,實例化一個對象b;

          b.function(a);//a的值傳遞給b的方法

          值傳遞中,只會傳遞原有變量的值,傳遞之后,會有一塊新的你內存存儲變量值,其后的一切動作均與原來變量無關。

          引用傳遞

          fun f1=new fun();//實例化一個對象b

          fun f2=new fun();//實例化一個對象b

          f1=f2;//f2的值賦給f1

          引用傳遞中f1f2相當于C中指針,分別指向一個對象的首地址。f1=f2則是將f2指向的地址賦給f1。傳遞了一個地址。

          6.構造方法

          構造方法是在實例化對象時,由系統(tǒng)自動運行的函數(shù),且只運行一次。每一個對象均有其構造方法,系統(tǒng)自動為類配有一個無參的構造方法,若程序員自己寫有構造方法,則系統(tǒng)的構造方法失效。

          7.方法的重載

          public class student{

          public void student(){};

          public void student(Book book){};

          public void student(Book book,Computer computer){};

          }

          這里有三個方法的名字相同,可是他們卻可以執(zhí)行不用的功能,只要參數(shù)的個數(shù),類型,次序不同就可以寫出一個新的名字相同的方法。這就是一種重載,當然前面所提到的構造方法,也可以重載。

          8.this關鍵字

          public class student{

          String name;

          public void setName(String name){

          this.name=name;

          }

          }

          這里的this關鍵字就指向類的頭。不同的類的this關鍵字指向自身的頭。

             您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

             信息咨詢:Q   564205990           星老師

          posted @ 2012-09-18 15:49 瘋狂軟件 閱讀(201) | 評論 (0)編輯 收藏

          2012年9月17日 #

           

          package sy;

           

          import java.awt.Color;

          import java.awt.Graphics;

          import java.awt.image.BufferedImage;

          import java.io.File;

          import java.io.IOException;

           

          import javax.imageio.ImageIO;

          import javax.swing.BorderFactory;

          import javax.swing.JPanel;

           

          public class PanelTest extends JPanel {

          public BufferedImage image;

             @Override

          protected void paintComponent(Graphics g) {

          // TODO Auto-generated method stub

          super.paintComponent(g);

          BufferedImage subImage=this.image.getSubimage(30, 30, 100, 100);

          g.drawImage(subImage,100,100,100,100,null);

          int color_point=subImage.getRGB(24, 4);

                  Color color=new Color(color_point);

                  System.out.println(color_point);

                  System.out.print(color.getGreen());

          }

             public PanelTest()

             {

             try {

          this.image=ImageIO.read(new File("D:/black.jpg"));

          } catch (IOException e) {

          // TODO Auto-generated catch block

          e.printStackTrace();

          }

             this.setSize(300, 200);

             this.setLocation(100, 100);

             this.setBorder(BorderFactory.createTitledBorder("title"));

           // repaint();

             }

          }

          posted @ 2012-09-17 17:19 瘋狂軟件 閱讀(1781) | 評論 (0)編輯 收藏

          2012年9月16日 #

           

             Java深入到一定程度,就不可避免的碰到設計模式這一概念,了解設計模式,將使自己對java中的接口或抽象類應用有更深的理解.設計模式在java的中型系統(tǒng)中應用廣泛,遵循一定的編程模式,才能使自己的代碼便于理解,易于交流,Command(命令模式)模式是比較常用的一個模式.

             Command命令模式: Command模式通過被稱為Command的類封裝了對目標對象的調用行為以及調用參數(shù)。將一個請求封裝為一個對象,從而使你不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可撤銷的操作。

             優(yōu)點: 解耦了調用者和接受者之間聯(lián)系。調用者調用一個操作,接受者接受請求執(zhí)行相應的動作,因為使用Command模式解耦,調用者無需知道接受者任何接口。

             缺點: 造成出現(xiàn)過多的具體命令類

           

             在此寫了7java類來描述說明Command設計模式的實現(xiàn)方式;

           1 Control.java        命令控制者對象類 (命令控制器在這里至關重要,相當于遙控器的作用)

           2 Tv.java             命令接收者對象類

           3 Command.java        命令接口類

           4 CommandChannel.java 頻道切換命令類

           5 CommandOff.java     關機命令類

           6 CommandOn.java      開機命令類

           7 CommandTest.java    帶有main方法的測試類(命令發(fā)送者)

           

          ===============   1 Control.java

          package command;

          //命令控制者

          public class Control {

           private Command onCommand, offCommand, changeChannel;

           public Control(Command on, Command off, Command channel) {

              onCommand = on;

              offCommand = off;

              changeChannel = channel;

           }

           public void turnOn() {

              onCommand.execute();

           }

           public void turnOff() {

              offCommand.execute();

           }

           public void changeChannel() {

              changeChannel.execute();

           }

          }

          ===============   1 end

           

          ===============   2 Tv.java

          package command;

          //命令接收者

          public class Tv {

           public int currentChannel = 0;

           public void turnOn() {

              System.out.println("The televisino is on.");

           }

           public void turnOff() {

              System.out.println("The television is off.");

           }

           public void changeChannel(int channel) {

              this.currentChannel = channel;

              System.out.println("Now TV channel is " + channel);

           }

          }

          ===============   2 end

           

          ===============   3 Command.java

          package command;

          //命令接口

          public interface Command {

           void execute();

          }

          ===============   3 end

           

          ===============   4 CommandChannel.java

          package command;

          //頻道切換命令

          public class CommandChannel implements Command {

           private Tv myTv;

           private int channel;

           public CommandChannel(Tv tv, int channel) {

              myTv = tv;

              this.channel = channel;

           }

           public void execute() {

              myTv.changeChannel(channel);

           }

          }

          ===============   4 end

           

          ===============   5 CommandOff.java

          package command;

          //關機命令

          public class CommandOff implements Command {

           private Tv myTv;

           public CommandOff(Tv tv) {

              myTv = tv;

           }

           public void execute() {

              myTv.turnOff();

           }

          }

          ===============   5 end

           

          ===============   6 CommandOn.java

          package command;

          //開機命令

          public class CommandOn implements Command {

           private Tv myTv;

           public CommandOn(Tv tv) {

              myTv = tv;

           }

           public void execute() {

              myTv.turnOn();

           }

          }

          ===============   6 end

           

          ===============   7 CommandTest.java

          package command;

          //命令發(fā)送者

          public class CommandTest{

           public static void main(String[] args){

              //命令接收者

              Tv myTv = new Tv();

              //開機命令

              CommandOn on = new CommandOn(myTv);

              //關機命令

              CommandOff off = new CommandOff(myTv);

              //頻道切換命令

              CommandChannel channel = new CommandChannel(myTv, 2);

              //命令控制對象

              Control control = new Control( on, off, channel);

              //開機

              control.turnOn();

              //切換頻道

              control.changeChannel();

              //關機

              control.turnOff();

           }

          }

          ===============   7 end

           

           Command模式通常可應用到以下場景:

           1 Multi-level undo(多級undo操作)

              如果系統(tǒng)需要實現(xiàn)多級回退操作,這時如果所有用戶的操作都以command對象的形式實現(xiàn),系統(tǒng)可以簡

              單地用stack來保存最近執(zhí)行的命令,如果用戶需要執(zhí)行undo操作,系統(tǒng)只需簡單地popup一個最近的

              command對象然后執(zhí)行它的undo()方法既可。

           

           2 Transactional behavior(原子事務行為)

              借助command模式,可以簡單地實現(xiàn)一個具有原子事務的行為。當一個事務失敗時,往往需要回退到執(zhí)

              行前的狀態(tài),可以借助command對象保存這種狀態(tài),簡單地處理回退操作。

           

           3 Progress bars(狀態(tài)條)

              假如系統(tǒng)需要按順序執(zhí)行一系列的命令操作,如果每個command對象都提供一個

              getEstimatedDuration()方法,那么系統(tǒng)可以簡單地評估執(zhí)行狀態(tài)并顯示出合適的狀態(tài)條。

           

           4 Wizards(導航)

              通常一個使用多個wizard頁面來共同完成一個簡單動作。一個自然的方法是使用一個command對象來封

              wizard過程,該command對象在第一個wizard頁面顯示時被創(chuàng)建,每個wizard頁面接收用戶輸入并設

              置到該command對象中,當最后一個wizard頁面用戶按下“Finish”按鈕時,可以簡單地觸發(fā)一個事件

              調用execute()方法執(zhí)行整個動作。通過這種方法,command類不包含任何跟用戶界面有關的代碼,可以

              分離用戶界面與具體的處理邏輯。

           

           5 GUI buttons and menu itemsGUI按鈕與菜單條等等)

              Swing系統(tǒng)里,用戶可以通過工具條按鈕,菜單按鈕執(zhí)行命令,可以用command對象來封裝命令的執(zhí)行。

           

           6 Thread pools(線程池)

              通常一個典型的線程池實現(xiàn)類可能有一個名為addTask()public方法,用來添加一項工作任務到任務

              隊列中。該任務隊列中的所有任務可以用command對象來封裝,通常這些command對象會實現(xiàn)一個通用的

              接口比如java.lang.Runnable

           

           7 Macro recording(宏紀錄)

              可以用command對象來封裝用戶的一個操作,這樣系統(tǒng)可以簡單通過隊列保存一系列的command對象的狀

              態(tài)就可以記錄用戶的連續(xù)操作。這樣通過執(zhí)行隊列中的command對象,就可以完成"Play back"操作了。

           

           8 Networking

              通過網絡發(fā)送command命令到其他機器上運行。

           

           9 Parallel Processing(并發(fā)處理)

              當一個調用共享某個資源并被多個線程并發(fā)處理時。

              您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

              信息咨詢:Q564205990             星老師

          posted @ 2012-09-16 17:36 瘋狂軟件 閱讀(466) | 評論 (0)編輯 收藏

          2012年9月15日 #

           

           在現(xiàn)實工作中,我們常常需要保存一些系統(tǒng)配置信息,大家一般都會選擇配置文件來完成,本文根據(jù)筆者工作中用到的讀取配置文件的方法小小總結一下,主要敘述的是spring讀取配置文件的方法。

            一、讀取xml配置文件

            ()新建一個java bean

            package chb.demo.vo;

            public class HelloBean {

            private String helloWorld;

            public String getHelloWorld() {

            return helloWorld;

            }

            public void setHelloWorld(String helloWorld) {

            this.helloWorld = helloWorld;

            }

            }

            ()構造一個配置文件

            

            

            

            

            

            Hello!chb!

            

            

            

            ()讀取xml文件

            1.利用ClassPathXmlApplicationContext

            ApplicationContext context = new ClassPathXmlApplicationContext("beanConfig.xml");

            HelloBean helloBean = (HelloBean)context.getBean("helloBean");

            System.out.println(helloBean.getHelloWorld());

            2.利用FileSystemResource讀取

            Resource rs = new FileSystemResource("D:/software/tomcat/webapps/springWebDemo/WEB-INF/classes/beanConfig.xml");

            BeanFactory factory = new XmlBeanFactory(rs);

            HelloBean helloBean = (HelloBean)factory.getBean("helloBean");

            System.out.println(helloBean.getHelloWorld());

            值得注意的是:利用FileSystemResource,則配置文件必須放在project直接目錄下,或者寫明絕對路徑,否則就會拋出找不到文件的異常

            二、讀取properties配置文件

            這里介紹兩種技術:利用spring讀取properties 文件和利用java.util.Properties讀取

            ()利用spring讀取properties 文件

            我們還利用上面的HelloBean.java文件,構造如下beanConfig.properties文件:

            helloBean.class=chb.demo.vo.HelloBean

            helloBean.helloWorld=Hello!chb!

            屬性文件中的"helloBean"名稱即是Bean的別名設定,.class用于指定類來源。

            然后利用org.springframework.beans.factory.support.PropertiesBeanDefinitionReader來讀取屬性文件

            BeanDefinitionRegistry reg = new DefaultListableBeanFactory();

            PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(reg);

            reader.loadBeanDefinitions(new ClassPathResource("beanConfig.properties"));

            BeanFactory factory = (BeanFactory)reg;

            HelloBean helloBean = (HelloBean)factory.getBean("helloBean");

            System.out.println(helloBean.getHelloWorld());

            ()利用java.util.Properties讀取屬性文件

            比如,我們構造一個ipConfig.properties來保存服務器ip地址和端口,如:

            ip=192.168.0.1

            port=8080

            則,我們可以用如下程序來獲得服務器配置信息:

            InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ipConfig.properties");

            Properties p = new Properties();

            try {

            p.load(inputStream);

            } catch (IOException e1) {

            e1.printStackTrace();

            }

          System.out.println("ip:"+p.getProperty("ip")+",port:"+p.getProperty("port"));

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990           星老師

          posted @ 2012-09-15 16:30 瘋狂軟件 閱讀(182) | 評論 (0)編輯 收藏

          2012年9月14日 #

           

          1,byte[]的長度

             

              寫了一個從文件里讀字符串的函數(shù):

             

              public static String readFileString fFileName{//, String fEncoding {

             

              char[] buffer = new char[1024];

             

              StringBuilder text = new StringBuilder();

             

              InputStreamReader reader = null;

             

              try {

             

              reader = new InputStreamReadernew FileInputStreamfFileName));

             

              while reader.readbuffer, 0, 1024)!=-1{

             

              text.appendbuffer); <==有錯

             

              }

             

              }

             

              catchException e{

             

              e.printStackTrace();

             

              }

             

              finally{

             

              ifreader!=null{

             

              try {

             

              reader.close();

             

              } catch IOException e {

             

              // TODO Auto-generated catch block

             

              e.printStackTrace();

             

              }

             

              }

             

              }

             

              return text.toString();

             

              }

             

              粗看這段代碼沒有問題。但是讀出的字符總比實際要多。問題在text.appendbuffer)。 buffer是一個1024char數(shù)組。每次append固定的1024char.改成就好了。

             

              reader = new InputStreamReadernew FileInputStreamfFileName));

             

              int readed;

             

              while ((readed = reader.readbuffer, 0, 1024))!=-1{

             

              text.appendnew Stringbuffer, 0, readed));

             

              }

             

              2,優(yōu)先級的錯誤

             

              Log.dTAG, "location="+where+", "+locationService==null?"null":locationService.getLocation());

             

              這行代碼的本意是如果locationService==null,就輸出"null",避免NullPointerException.但實際上仍然發(fā)生NullPointerException.原來"+"的優(yōu)先級大于"?",所以上面代碼實際上是:

             

              Log.dTAG, "location="+where+", "+locationService==null?"null":locationService.getLocation())

             

              括號里的當然不會是null.改成

             

              Log.dTAG, "location="+where+", "+locationService==null?"null":locationService.getLocation()));

             

          就好了。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

                   信息咨詢:Q564205990                星老師

          posted @ 2012-09-14 14:15 瘋狂軟件 閱讀(265) | 評論 (0)編輯 收藏

          2012年9月13日 #

           當一個web頁面帶有image/jpeg (或者其他的圖像格式)的MIME類型被發(fā)送時,你的瀏覽器將那個返回結果當作一個圖像,然后瀏覽器顯示圖像,作為頁面的一部分或者完全作為圖像自身。要為你的jsp頁面設置MIME類型,你需要設置頁面的contentType屬性:

             

              <%@ page contentType=“image/jpeg” … %>

             

              然后你需要創(chuàng)建一個BufferedImage繪制你的動態(tài)圖像:

             

              BufferedImage image = new BufferedImagewidth,height, BufferedImage.TYPE_INT_RGB);

             

              創(chuàng)建完一個BufferedImage后,你需要得到圖形環(huán)境進行繪制,一個Graphics或者Graphics2D對象:

             

              Graphics g = image.getGraphics();

             

              // or Graphics2d g2d = image.createGraphics();

             

              從現(xiàn)在起你就可以繪制圖像內容了。對圖形環(huán)境繪制就會畫到BufferedImage.最開始這個圖像都是黑色的,因此用你希望的背景顏色填充圖像是一個不錯的主意,然后,當你完成圖像的繪制,你需要dispose圖形環(huán)境:

             

              g.dispose();

             

              // or g2d.dispose();

             

              一旦完成圖像的繪制,你在response中返回那個圖像。你可以使用非標準的com.sun.image.codec.jpeg包中的JPEGImageEncoder類編碼圖像,或者如果你使用JDK1.4,你可以使用標準的ImageIO類。在使用JPEGImageEncoder時有一個技巧,你必須從ServletResponse取來ServletOutputStream而不能使用隱含的JSP輸出變量out.

             

              ServletOutputStream sos = response.getOutputStream();

             

              JPEGImageEncoder encoder =JPEGCodec.createJPEGEncodersos);

             

              encoder.encodeimage);

             

              // or ImageIO.writeimage, JPEG, out);

             

              這里有一個從所有的可能方案中(例如g.dispose();或者g2d.dispose();)選取的一個完整的范例。這個例子使用Graphics對象繪制一個隨機的多邊形,圖像通過JPEGImageEncoder繪制,你可以自由設置多邊形的頂點數(shù)得到更復雜的形狀,換言之,有更多頂點和邊。

             

          要運行這個范例,將從“<%@”到最后一個“%>”之間的jsp代碼放到一個名為image.jsp的文件中,將那個文件放到你的web服務器可以找到的地方。

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990             星老師

          posted @ 2012-09-13 13:52 瘋狂軟件 閱讀(186) | 評論 (0)編輯 收藏

          僅列出標題  下一頁
          主站蜘蛛池模板: 乐陵市| 容城县| 延安市| 溧水县| 赤壁市| 河津市| 惠水县| 泾源县| 漳平市| 固始县| 织金县| 霸州市| 伊春市| 清水河县| 驻马店市| 石河子市| 隆林| 德格县| 宁陕县| 双桥区| 崇仁县| 朝阳市| 顺昌县| 秀山| 肇庆市| 莱西市| 阿勒泰市| 普定县| 依兰县| 乐都县| 灵山县| 秦皇岛市| 格尔木市| 修武县| 吉木乃县| 荥阳市| 乐山市| 咸阳市| 香港 | 广元市| 大余县|