LittleRain

          小雨不打傘 打傘雨不小

          1。斷言
          a)???assert <boolean_expression>;
          b)???assert <boolean_expression>:<detail_expression>;
          如果 <boolean_expression>值為false,程序會異常終止。
          使用b)形式時,<detail_expression>被轉(zhuǎn)換為String,并且補(bǔ)充報告斷言時打印的消息。

          斷言的使用場合:
          用于驗證某一方法或某一小組緊密耦合方法的內(nèi)部邏輯。

          2。異常
          o_Exception.gif
          分類:Error和RuntimeException是未受查異常,其余未受查異常。
          應(yīng)該由編程者來負(fù)責(zé)的異常:RuntimeException和未受查異常。



          posted @ 2006-10-05 13:39 小雨不打傘 閱讀(212) | 評論 (0)編輯 收藏

          1。static關(guān)鍵字

          static方法可以訪問的變量:局部變量、static屬性及其參數(shù)。

          注:最好使用類名來訪問靜態(tài)方法,不要用對象。

          2。final關(guān)鍵字
          a)final類:final類不能被繼承
          b)final方法:final方法不能被覆蓋
          c)final變量:final變量一旦賦值就不能再改變。

          注:1)如果將一個引用類型的變量標(biāo)記為final,則該變量不能引用任何其他對象。但是,可以改變對象
          ????????????的內(nèi)容,因為只有引用本身是final。
          ?????????2)空final變量:一個空final變量應(yīng)該在構(gòu)造器種賦值,空final局部變量可以隨時在方法體內(nèi)設(shè)置。

          3。抽象和接口
          a)抽象類:abstract類不能實例化。但是可以創(chuàng)建抽象類引用,但是這個引用只能指向非抽象子類
          b)抽象方法:abstract方法沒有具體的方法體
          注:具有一個或多個抽象方法的類本身必須定義為abstract。
          c)接口:
          注:1)在接口中聲明的所有方法都是public和abstract的
          ??????? 。。。。。。。所有屬性都是public、static和final--即你只能聲明常數(shù)屬性。
          ??????? 2)因為接口的抽象方法其訪問控制符都已指定是public,所以類在實現(xiàn)這些方法時,必須顯示地使用??
          ?????????? ?public修飾符。

          posted @ 2006-10-05 10:23 小雨不打傘 閱讀(351) | 評論 (0)編輯 收藏

          多態(tài)
          eg :
          class A{method();}
          class B extends A{method();}
          A a=new B();
          a.method()調(diào)用的是B的method()方法。//a.method()執(zhí)行是,應(yīng)該看引用a具體指向的內(nèi)存空間實際存在的是什么對象。從這里來看,引用a所指向的實際內(nèi)存空間是B的實例。

          方法的調(diào)用具體決定于運(yùn)行時,編譯器只是檢查java語法的正誤。

          通過? 對象.屬性?? 的形式來獲得屬性值時,具體返回的屬性值是依賴于對象引用的類型的。

          而通過方法來獲得對象的屬性時,方法調(diào)用所返回的屬性則決定于具體內(nèi)存中存在的真正對象

          (attention: 靜態(tài)的方法這一條不適用)

          Eg:
          public class TestPoly {
          ?public static void main(String[] args) {
          ?
          ?Father1 f=new Child1();
          ??????? System.out.println(f.age);//在編譯階段就已經(jīng)可以確定f.age的值是:45,因為在編譯時不會生成對象,
          ??????????????????????????????????????????????//直接看引用類型即可,所以下面的((Child1)f).age之間看f的類型即可。
          ??????? System.out.println(((Child1)f).age);

          ??????? f.printAge();//這個需要在運(yùn)行是通過方法來決定結(jié)果,此時,f引用指向的是Child1類型的對象空間,所以調(diào)用的是Child類的pringAge()方法,從而得出結(jié)果是:90
          ??????((Child1)f).printAge();
          ????????}
          }

          class Father1{
          ?int age=45;
          ?public void printAge(){
          ??System.out.println(age);
          ?}
          }

          class Child1 extends Father1{
          ?int age=90;
          ?public void printAge(){
          ??System.out.println(age);
          ?}
          }

          posted @ 2006-10-04 15:33 小雨不打傘 閱讀(352) | 評論 (0)編輯 收藏

          1。四種訪問控制符
          public?? protected??? default???? private

          2。方法覆蓋
          注意:覆蓋方法的可訪問性不能比其要覆蓋的方法弱。

          3。super關(guān)鍵字的用法:
          eg:
          class B extends A{
          ??????super.println();
          ??????public void println(){}
          }

          class A{
          public void println(){}}

          (new B()).println;//此句話會調(diào)用super.println(),這個時候調(diào)用這個方法的對象是new B()對象。


          4。instanceof運(yùn)算符

          5。對象類型轉(zhuǎn)換
          #? 始終允許類層次中向上轉(zhuǎn)換,事實上,這種轉(zhuǎn)換不需要轉(zhuǎn)換運(yùn)算符。可以由簡單的賦值完成。
          eg:class B extends A
          轉(zhuǎn)換示例:A a=new B();// 將類B轉(zhuǎn)換成類A;如果這樣轉(zhuǎn)換將產(chǎn)生錯誤:B b=new A();

          #對于向下轉(zhuǎn)換,編譯器要求轉(zhuǎn)換至少必須是可能的。
          #如果編譯器允許轉(zhuǎn)換,則在運(yùn)行時檢查對象類型。

          6。構(gòu)造器
          子類從父類可以繼承所有的變量和方法,但它不能繼承構(gòu)造器。
          調(diào)用構(gòu)造器時,總是先遞歸調(diào)用父類的構(gòu)造器。
          在構(gòu)造器中使用super和this關(guān)鍵字時,必須放在構(gòu)造器的第一行。

          7。Object類的幾個方法
          注:如果覆蓋Object的equals方法,都應(yīng)該覆蓋hashCode方法來保證相同對象的hashCode值相同。

          8.Wrapper類
          8種基本類型對應(yīng)8種包裝類
          J2SE5.0的自動裝箱基本類型:
          eg:
          int pInt=420;
          Integer wInt=pInt;//不需要使用這樣的語句:Integer wInt=new Integer(pInt);
          intp2=wInt;

          9。varargs
          eg:public void sum(int...nums)<===>public void sum(int[] nums)

          ?

          scjp:
          1)子類不能繼承父類的構(gòu)造器
          2)構(gòu)造器中調(diào)用this和super語句,則必須放在構(gòu)造器中的第一句


          posted @ 2006-10-03 16:35 小雨不打傘 閱讀(327) | 評論 (0)編輯 收藏

          1。使用增強(qiáng)的for循環(huán)(jdk1.5)
          int[] list=new int[3];//此時list數(shù)組已經(jīng)初始化,每個元素為0;
          for(int element:list)
          {
          ???System.out.println(element);
          }
          Console:
          0
          0
          0

          上述的for語句等價于:
          for(int i=0;i<list.length;i++)
          {
          ???????System.out.println(list[i]);
          }

          2。數(shù)組的復(fù)制
          使用System.arraycopy(...)函數(shù);

          posted @ 2006-10-02 19:35 小雨不打傘 閱讀(233) | 評論 (0)編輯 收藏

          1。變量及其初始化
          兩種變量:基本變量和引用類型變量。
          變量的聲明位置:方法內(nèi)或者方法外。

          變量的初始化:
          使用變量前必須初始化
          如果代碼給一個堆棧變量賦值,編譯器就很容易檢查此變量;當(dāng)開始執(zhí)行方法時,已經(jīng)為this引用和方法參數(shù)賦了值。

          對于堆的對象屬性,為了保證這一原則,要求編程人員為構(gòu)造器賦一個初值,如果沒有的話,編譯器會為其賦缺省值。

          2。移位運(yùn)算符
          >>???? >>>:>> 帶符號
          <<<:a<<<b運(yùn)算過程:a<<<(b%32(int)或者b%64(long)),?所以a<<<32=a;即a<<<0。

          3。用+運(yùn)算符進(jìn)行字符串連接
          注:非String對象要轉(zhuǎn)換為等價的字符串時使用它的toString()成員函數(shù)。

          4 。switch語句
          switch語句的表達(dá)式必須是和int類型相容的表達(dá)式,byte、short和char類型會升級。(包括枚舉類型)
          而對浮點(diǎn)和long表達(dá)式或?qū)ο笠茫òㄗ址┦遣辉试S的。
          注:可以使用rutrun代替break語句
          ???????? 如果switch語句是在循環(huán)中,continue語句會使執(zhí)行跳出switch結(jié)構(gòu)

          posted @ 2006-10-02 14:31 小雨不打傘 閱讀(350) | 評論 (0)編輯 收藏

          關(guān)于Logon例子的學(xué)習(xí)

          Welcome頁面:

          <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
          <%@ taglib uri="/tags/struts-html" prefix="html" %>
          <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
          (在struts1.2中要寫成? <%@ taglib uri="
          http://struts.apache.org/tags-html " prefix="html" %>? 其他兩個相似
          作用:使得輸入的擴(kuò)展標(biāo)簽庫可以被頁面的其他部分使用)

          <HTML>
          <HEAD>
          <TITLE>Welcome!</TITLE>
          <html:base/>
          (使得對于圖像等資源的引用與原始jsp頁面位置相關(guān))

          </HEAD>
          <BODY>?<logic:presentname="user">????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
          <H3>Welcome<bean:write name="user" property="username"/>!</H3>??????????????????????????????????????????????????????
          </logic:present>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
          (檢查用戶是否在session中存儲了userbean.如果存儲了該bean,則在歡迎頁面中顯示username)?????????
          ?
          ??????????
          <logic:notPresentscope="session" name="user">
          <H3>Welcome World!</H3>
          </logic:notPresent>
          (如果不存在userbean則顯示"Welcome World!")
          注:在Struts中的邏輯標(biāo)簽都是使用"this"和"notThis"這樣的表單,但可以通過擴(kuò)展標(biāo)簽庫來實現(xiàn)if/then/else等語法

          <html:errors/>
          (用來顯示錯誤信息:)

          <UL>
          <LI><html:linkforward="logon">Sign in</html:link></LI>
          <logic:presentname="user">
          <LI><html:linkforward="logoff">Sign out</html:link></LI>
          </logic:present>
          </UL>
          <IMG src='struts-power.gif' alt='Powered by Struts'>
          </BODY>
          </HTML>

          上述的jsp頁面在瀏覽器中的代碼:

          <HTML>
          <HEAD>
          <TITLE>Welcome!</TITLE>
          <base href="
          http://localhost:8080/logon/pages/Welcome.jsp ">
          </HEAD>
          <BODY>
          <H3>Welcome World!</H3>
          <UL>
          <LI><a href="/logon/logon.do">Sign in</a></LI>
          </UL>
          <IMG src='struts-power.gif' alt='Powered by Struts'>
          </BODY>
          </HTML>

          --------------------------------------------------------------------------------------------------------------------------

          <%@ taglib uri="/tags/struts-html" prefix="html" %>
          (參看Welcome.jsp部分)

          <HTML>
          <HEAD>
          <TITLE>Sign in, Please!</TITLE>
          </HEAD>
          <BODY>
          <html:errors/>
          <html:formaction="/LogonSubmit" focus="username">
          (<html:form> 標(biāo)簽會生成一個HTML表單來使用戶輸入數(shù)據(jù)。其action屬性指向Struts配置中的某個ActionMapping對象,該對象決定了使用哪個javabean來填充HTML控件,同時該javabean也是Srtuts框架結(jié)構(gòu)的一個ActionForm類)
          <TABLE border="0" width="100%">
          <TR>
          <TH align="right">Username:</TH>
          <TD align="left"><html:textproperty="username"/></TD>
          (<html:text>標(biāo)簽創(chuàng)建一個HTML文本域來輸入框,同時,它還使用該表格對應(yīng)的JavaBean中屬性名為username的屬性值來進(jìn)行自我填充。)
          </TR>
          <TR>
          <TH align="right">Password:</TH>
          <TD align="left"><html:passwordproperty="password"/></TD>

          </TR>
          <TR>
          <TD align="right"><html:submit/></TD>
          <TD align="left"><html:reset/></TD>
          </TR>
          </TABLE>
          </html:form>
          </BODY>
          </HTML>
          ---------------------------------------------------------------------------------------------------------

          Struts中的 ?struts-config.xml的配置
          ActionMapping的配置元素
          ?path -?????? 該ActionMapping的唯一標(biāo)識符,它包括對應(yīng)的Web地址 (不包括擴(kuò)展名.do)
          ?type?-?????? 當(dāng)請求該路徑時,調(diào)用的Action對象
          ?name?-? ?? HTML表單對應(yīng)的JavaBean(ActionForm)
          ?scope?-???? 定義了存儲該JavaBean在請求中(request)還是在會話中(session)
          ?validate?- 定義了在調(diào)用Action對象前是否調(diào)用JavaBean上的validate方法
          ?input -????? 定義了當(dāng)validate方法返回false時要轉(zhuǎn)移到的地址
          (Struts中的很多命名都是很含糊的;比如ActionMapping中的name屬性并不是指該ActionMapping對象的名字,而是指該ActionMapping使用的JavaBean的名字;)?

          posted @ 2006-10-02 11:23 小雨不打傘 閱讀(454) | 評論 (0)編輯 收藏

          1。構(gòu)造和初始化對象
          eg:MyDate my_birth=new MyDate(28,9,2006);
          ???????????????????????????????????????
          my_birth?|??? ? 0x01abcdef|----------|
          ???????????????????????????????????????????????????? ??|?????????
          ?day????????|???????????????????28|<-? -------|
          month?????|?????????????????????9|
          year??????? |?????????????? 2006|

          MyDate my_birth只是聲明一個引用,未分配任何內(nèi)存空間
          new MyDate(28,9,2006)聲明一塊內(nèi)存空間并進(jìn)行數(shù)據(jù)初始化
          my_birth=new MyDate(28,9,2006);將引用指向已分配的內(nèi)存空間,建立兩者之間的關(guān)系

          2。Java語言總是使用傳值調(diào)用
          即:java編程語言支持按值傳遞 參數(shù)的指針。
          eg:public static void chV(double x)//無法工作的
          ?????? {
          ????????????x=x*3;
          ?????????}
          然后我們調(diào)用方法:
          double y=10;
          chV(y);
          結(jié)果之中y還是10;

          這樣來理解執(zhí)行過程:
          public static void chV(y)
          ?????? {double x;
          ????????????x=y=10;
          ????????????x=x*3;
          ?????????}//方法結(jié)束,局部變量x銷毀;

          注意:當(dāng)用對象的引用作為參數(shù)傳遞時可以改變對象的狀態(tài),因為傳遞進(jìn)來的引用參數(shù)和臨時引用指向了
          ????????????同一個對象(即同一片內(nèi)存空間)。

          scjp:
          幾個容易忘記的關(guān)鍵字:const、enum、native、synchronized、transient、volatile
          注意:true和false是Boolean字符,null也是字符,都不是關(guān)鍵字。

          3。關(guān)于String
          java中一個對象的地址用如此方法返回:?System.identifyHashCode(Object??a);?

          posted @ 2006-10-02 11:18 小雨不打傘 閱讀(312) | 評論 (0)編輯 收藏
          1。java類、方法、屬性的聲明

          2。信息隱藏:對于一個對象的屬性應(yīng)該對外進(jìn)行隱藏,通過提供getXyz()和setXyz()的存取方法來訪問。
          ??? 好處可以更改類內(nèi)部的結(jié)構(gòu),而客戶端代碼卻不用改變。并且可以在方法中對數(shù)據(jù)進(jìn)行驗證處理。

          eg:public class MyDate{
          ????????private int limitDays=30;
          //當(dāng)limitDays更改為40或者其他天數(shù)時,客戶端依舊使用的時getLimitDays(),不用修改。
          ?????????public int getLimitDays()
          ??????{return? limitDays;}

          //在方法中對數(shù)據(jù)進(jìn)行驗證處理。
          ?????????public boolean setLimitDays(int days)
          {limitDays=days;}
          }????

          3。缺省構(gòu)造器
          注意:
          ??????每個類都有一個默認(rèn)的構(gòu)造器。如果不編寫構(gòu)造器,Java編程語言將提供一個缺省的構(gòu)造器。這個構(gòu)造器不帶參數(shù)并且為空。
          ??????但是如果自己在這個類中添加了任何構(gòu)造器,那么原來提供的構(gòu)造器將不在起作用。
          eg:1)Class A{}//new A()----正確
          Class A{
          public Class(){int a;}
          }//此時再調(diào)用new A()就會產(chǎn)生編譯器錯誤。

          4。源文件布局
          ??????任何導(dǎo)入語句必須位于所有類聲明之前。如果使用包聲明,則必須位于類聲明和導(dǎo)入語句前。
          ??????源文件的名稱必須與該文件的公有類聲明和名稱相同。原文件可以包含多個類聲明,但是只有一個類可以被聲明為公有的。如果源文件不包含公有類聲明,那么源文件的名稱不受限制。

          5。import語句
          注意:import語句不會導(dǎo)致編譯器將任何附加內(nèi)容加載到工作內(nèi)存中(與C和C++的include 語句有很大不同)。并且無論是否使用通配符(*),import語句都對輸出類文件及運(yùn)行時性能都沒有任何影響。

          posted @ 2006-09-27 18:46 小雨不打傘 閱讀(347) | 評論 (0)編輯 收藏
          1。什么是JVM?
          JVM:在真是機(jī)器中用軟件來模擬實現(xiàn)的一種虛擬的機(jī)器。 //貌似和虛擬機(jī)差不多。
          ????????????JVM運(yùn)行的代碼存儲在.class文件中。
          ????????????字節(jié)碼是JVM的機(jī)器代碼指令。
          ????????????不管是Java技術(shù)開發(fā)工具還是能運(yùn)行Applet的Web瀏覽器,都有一個JVM的實現(xiàn)。

          2。java程序是如何運(yùn)行起來的?
          不實用jit:
          編譯:?原文件(編譯:javac)----->字節(jié)碼(存儲在.class文件中)
          運(yùn)行:java(將字節(jié)碼裝在進(jìn)類裝載器)------>字節(jié)碼校驗------->解釋器執(zhí)行----->運(yùn)行時--->硬件

          使用JIT:???編譯與直接用jre相同,運(yùn)行時:會將解釋器與運(yùn)行時合并用JIT代碼生成器來完成--->硬件

          posted @ 2006-09-23 12:27 小雨不打傘 閱讀(350) | 評論 (0)編輯 收藏
          僅列出標(biāo)題
          共6頁: 上一頁 1 2 3 4 5 6 下一頁 

          公告

          點(diǎn)擊這里給我發(fā)消息 QQ:232720563


            MSN:new_haihua@hotmail.com

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆分類(51)

          最新隨筆

          積分與排名

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 华亭县| 会昌县| 新蔡县| 阳江市| 瑞安市| 唐海县| 盘山县| 蚌埠市| 屯昌县| 依兰县| 安宁市| 白玉县| 翼城县| 苏尼特右旗| 沙雅县| 合阳县| 贵南县| 亚东县| 镇巴县| 浦县| 郁南县| 荆门市| 招远市| 新郑市| 商水县| 泗洪县| 启东市| 抚宁县| 孝昌县| 兴宁市| 滦南县| 浦县| 哈密市| 明溪县| 荔波县| 衡南县| 保亭| 北京市| 宁波市| 望奎县| 元朗区|