<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    程序手記

    程序是我畢生的追求......
    隨筆 - 19, 文章 - 0, 評(píng)論 - 9, 引用 - 0
    數(shù)據(jù)加載中……

    JAVA基礎(chǔ) (包 與 Java API) 第二天 第四天

        建立Java包,布局源文件和設(shè)置classpath參數(shù)之間相互影響。也相互關(guān)聯(lián)。正確建立和導(dǎo)入JAVA包,合理布局源文件,準(zhǔn)確設(shè)置CLASSPATH參數(shù),才能保證應(yīng)用程序順利執(zhí)行,并有效管理應(yīng)用程序。

    包的建立方法
        Java包通過(guò)package語(yǔ)句建立,基本語(yǔ)法是:
            package cn.edu.jmu.graphis;
        在定義類(lèi)或接口的源文件開(kāi)始處,通過(guò)package語(yǔ)句,可以將相應(yīng)的類(lèi)或接口放入package所聲明的包里。包是相關(guān)類(lèi)和接口的集合,提供了訪問(wèn)級(jí)別控制和命名控件管理。

    包的使用方法
        每個(gè)源文件只能有一個(gè)包聲明,并且一定要求放在源文件的開(kāi)始位置。如果一個(gè)源文件沒(méi)有包語(yǔ)句,則源文件所定義的類(lèi)或接口唄系統(tǒng)放入默認(rèn)包中。包有層次,層次間由點(diǎn)分隔。
        例如有一組與圖形相關(guān)的類(lèi),包括Circles,Rectangles,Lines和points類(lèi)等,描述了畫(huà)圖所用到的各種圖形組件,另有抽象類(lèi)Graphic標(biāo)識(shí)圖形組件的共性,接口Draggable表示用戶可以通過(guò)鼠標(biāo)拖拽成圖的圖形組件。在這種情況下,我們不僅需要,而且也應(yīng)該將這些相關(guān)類(lèi)和接口組成包,可命名為graphics如:

    //Graphics.java
    package graphics;
    public abstract class Graphic{
        ...
    }

    //Circle.java
    package graphics;
    public class Circle extends Graphic implements Draggable {
        ...
    }

    //Rectangle.java
    package graphics;
    public class Rectangle extends Graphic implements Draggable {
        ...
    }

    //Draggable.java
    package graphics;
    public interface Draggable{
        ...
    }
        通過(guò)創(chuàng)建和使用包,程序員不僅可以很容易地確定哪些類(lèi)和接口是相關(guān)的,也可以很容易地找到提供特定功能的類(lèi)和接口,例如,與畫(huà)圖有關(guān)的類(lèi)和接口在graphics包中。

    包的訪問(wèn)權(quán)限
        通過(guò)聲明類(lèi)的訪問(wèn)級(jí)別,可以控制對(duì)類(lèi)的訪問(wèn)權(quán)限。
        類(lèi)的訪問(wèn)級(jí)別分為默認(rèn)級(jí)和public級(jí)。定義類(lèi)的默認(rèn)訪問(wèn)級(jí)別不需要任何關(guān)鍵字,唄聲明為默認(rèn)級(jí)的類(lèi)只對(duì)同一個(gè)包中的類(lèi)是可視的。也就是說(shuō)只有同一個(gè)包內(nèi)的類(lèi)實(shí)例可以訪問(wèn)這個(gè)類(lèi),外界不能訪問(wèn)它。如果用關(guān)鍵字public定義類(lèi),不但同一個(gè)包里的其他類(lèi)可以訪問(wèn)這個(gè)類(lèi),其他包中的類(lèi)也可以訪問(wèn)它。換句話說(shuō),同一個(gè)包中的類(lèi),相互之間有不受限制的訪問(wèn)權(quán)限。而在不同包中,只有public類(lèi)可以被訪問(wèn)。
        public修飾符不知用于定義類(lèi)的訪問(wèn)控制級(jí)別,也可以應(yīng)用于接口,方法或變量。public 接口同public類(lèi)一樣,可以由應(yīng)用程序中的任何類(lèi)訪問(wèn)。而public方法或public屬性對(duì)任何可以訪問(wèn)他的類(lèi)或接口都是可視的。
        除public修飾符之外,用于訪問(wèn)控制的修飾符還有protected 和 private。
    protected 或 private 僅用來(lái)定義方法或變量的訪問(wèn)控制級(jí)別。protected 方法或protected變量?jī)H對(duì)同一個(gè)包內(nèi)的類(lèi)或不同包中的子類(lèi)來(lái)說(shuō)是可視的。
    private方法和pvivate變量對(duì)外部定義的類(lèi)均不可視。

    包的命名方式
        包提供了心的命名控件,即使所定義的類(lèi)使用與其他包中的類(lèi)相同的名字,只要包類(lèi)所屬的包不同名,就不會(huì)引起沖突。原因是這些類(lèi)的全程限定名稱(chēng)不同。類(lèi)的全程限定包含了類(lèi)的各層包名。這實(shí)質(zhì)上是應(yīng)用了面向?qū)ο蟮母拍睿瑢㈩?lèi)封裝入包中。

    包的訪問(wèn)權(quán)限
        通過(guò)聲明類(lèi)的訪問(wèn)級(jí)別,可以控制對(duì)類(lèi)的訪問(wèn)權(quán)限。
        類(lèi)的訪問(wèn)級(jí)別分為默認(rèn)級(jí)和public級(jí)。定義類(lèi)的默認(rèn)訪問(wèn)級(jí)別不需要任何關(guān)鍵字,貝聲明為默認(rèn)級(jí)的類(lèi)只對(duì)同一個(gè)包中的類(lèi)是可視的。也就是說(shuō),只有同一個(gè)包內(nèi)的類(lèi)實(shí)例可以訪問(wèn)這個(gè)類(lèi),外界不能訪問(wèn)它。如果用關(guān)鍵字public 定義類(lèi),不但同一個(gè)包里的其他類(lèi)可以訪問(wèn)這個(gè)類(lèi),其他包中的類(lèi)也可以訪問(wèn)它。換句話說(shuō),同一個(gè)包中的類(lèi),相互之間有不受限制的訪問(wèn)權(quán)限。而在不同的包中,只有public類(lèi)可以被訪問(wèn)。
        public 修飾符不只用于定義類(lèi)的訪問(wèn)控制級(jí)別,也可以應(yīng)用于接口,方法和變量。public接口同public類(lèi)一樣,可以由應(yīng)用程序中的任何類(lèi)訪問(wèn)。而public方法或public變量對(duì)任何可以訪問(wèn)他的類(lèi)或接口都是可視的。
        除public 修飾符之外,用于訪問(wèn)控制的修飾符還有 protected 和private 。 protected或private僅用來(lái)定義方法或變量的訪問(wèn)控制級(jí)別。protected方法或protected變量?jī)H對(duì)同一個(gè)包內(nèi)的類(lèi)或不同包中的子類(lèi)來(lái)說(shuō)是可視的。private方法和private變量對(duì)外部定義的類(lèi)均不可視。需要說(shuō)明的是,通常不建議用默認(rèn)方式定義方法或成員變量的訪問(wèn)級(jí)別。

                          
        對(duì)于沒(méi)有指定包名的java源文件,系統(tǒng)認(rèn)為他們都屬于同一個(gè)默認(rèn)的包。如果沒(méi)有把自己的Java類(lèi)放入某個(gè)包中,那么任何默認(rèn)包里的對(duì)象都可以訪問(wèn)它,并且不局限于同一個(gè)子目錄下,因此通常應(yīng)該在每個(gè)Java源文件的項(xiàng)目頂部使用 package語(yǔ)句,指明它所屬的包。

    訪問(wèn)包成員
        對(duì)于包來(lái)說(shuō),只有它的public成員可貝外界訪問(wèn)。若外界想要訪問(wèn)包的public類(lèi),有3種方式可以實(shí)現(xiàn)。
        (1)通過(guò)類(lèi)的全程限定名訪問(wèn)該類(lèi)。
        (2)通過(guò)import語(yǔ)句導(dǎo)入該類(lèi)。
        (3)通過(guò)import語(yǔ)句導(dǎo)入整個(gè)包。
        如果某個(gè)類(lèi)只貝訪問(wèn)一次,那么可以直接使用類(lèi)的全名。例如訪問(wèn)cn.edu.jmu.graphics.Graphic類(lèi)可以用一下方式:
        cn.edu.jmu.graphics.Graphic aGraph = new cn.edu.jmu.graphics.Graphic();
        這條語(yǔ)句創(chuàng)建了 cn.edu.jmu.graphics.Graphic類(lèi)型的對(duì)象 aGraph。
        可以看到,即是指創(chuàng)建一個(gè)對(duì)象,在變量定義和初始化時(shí)也用到兩次全名。當(dāng)使用Java約定的包命名方式時(shí),包名可能過(guò)長(zhǎng),此時(shí)用起來(lái)就更顯得繁瑣,容易出錯(cuò),也影響可讀性。
        通常都應(yīng)該使用import語(yǔ)句直接導(dǎo)入所需類(lèi),或者導(dǎo)入該類(lèi)所在的包。導(dǎo)入之后,程序中設(shè)計(jì)的這個(gè)類(lèi)的地方就可以直接用類(lèi)名訪問(wèn)。
        import 的基本語(yǔ)法形式為:
        import <包名>[.<子包名>].<類(lèi)名>;    //導(dǎo)入指定類(lèi)
    或者:
        import <包名>[.<子包名>].*;    //導(dǎo)入整個(gè)包
    例如:
        import cn.edu.jmu.javaprogs.Timel;
        import cn.edu.jmu.javaprogs.*;
        import java.awt.*;
        import java.awt.event.*;

        import語(yǔ)句在package 語(yǔ)句之后,所有的類(lèi)聲明之前。由于集中在程序首部,宜于直觀地了解程序所需的包,有助于維護(hù)程序的可移植性。
        import 語(yǔ)句中的 * 用來(lái)匹配包中的所有類(lèi),但并不能用來(lái)匹配包中的所有類(lèi)的某個(gè)子集。如語(yǔ)句
        import java.awt.*;
        導(dǎo)入java.awt包中的所有類(lèi)。如果這樣的語(yǔ)句
        import java.awt.A*;
        它無(wú)法導(dǎo)入java.awt句中首字母為A的所有子類(lèi),相反還會(huì)出現(xiàn)編譯錯(cuò)誤,也就是說(shuō),使用import語(yǔ)句一次只能導(dǎo)入包的單一成員,或者導(dǎo)入整個(gè)包。
        還有語(yǔ)句
        import java.awt.*;
        所導(dǎo)入的是java.awt包中的所有類(lèi),它包括接口。但不包括java.awt包中的子包。如果需要訪問(wèn)java.awt.event子包中的類(lèi),仍需要用 import語(yǔ)句導(dǎo)入 java.awt.event子包。所以常常使用如下形式:
        import java.awt.*;
        import java.awt.event.*;

      

    包的布局
        類(lèi)的全程受名稱(chēng)與類(lèi)所在目錄一一對(duì)應(yīng),例如:
        import graphics.Rectangle    等同于文件路徑名:
        Graphics\Rectangle.java


    classpath參數(shù)
        classpath參數(shù)用于設(shè)置Java包所在的頂級(jí)目錄。也就是說(shuō),通過(guò)classpath可以為Java包建立所依存的目錄列表。編譯和運(yùn)行Java 程序時(shí),系統(tǒng)會(huì)自動(dòng)從classpath環(huán)境變量中讀取包所在的目錄,文件所在目錄由系統(tǒng)通過(guò)classpath中的目錄和package語(yǔ)句中定義的目錄合成。
        下面通過(guò)一個(gè)完整的實(shí)例程序,說(shuō)明classpath參數(shù)的作用,同時(shí)展示源文件和字節(jié)碼文件的一種建議布局模式。
        程序包含兩個(gè)類(lèi) Time 和 TestTime,TestTime為主類(lèi)。程序?qū)τ脩糨斎氲谋硎拘r(shí)、分鐘和秒鐘的3個(gè)整型數(shù),經(jīng)過(guò)數(shù)據(jù)正確性驗(yàn)證,分別轉(zhuǎn)換為通用時(shí)間表示格式和標(biāo)準(zhǔn)時(shí)間表示格式,通過(guò)對(duì)話框顯示給用戶,運(yùn)行后如圖:
                                                                          

        文件布局方式如下:創(chuàng)建 d:\javaSample 目錄存放java程序,創(chuàng)建 d:\javaSample\src 子目錄存放源文件,創(chuàng)建d:\javaSample\class 子目錄存放編譯后的字節(jié)碼文件。 具體實(shí)現(xiàn)方式是將文件 TestTime.java 存放在 D:\javaSample\src 子目錄下,為使 src 子目錄的結(jié)構(gòu)與 class 子目錄結(jié)構(gòu)相對(duì)應(yīng),創(chuàng)建 D:\javaSample\src\cn\edu\jmu\timer 子目錄存放 Time.java文件。類(lèi)Time和類(lèi)TestTime的布局如圖:
                                  
        Time.java中的語(yǔ)句
        package cn.edu.jmu.timer;
        將Time類(lèi)放入包c(diǎn)n.edu.jmu.timer中,源文件Time.java存放在與包相對(duì)應(yīng)的目錄結(jié)構(gòu)下。在類(lèi)TestTime.java中通過(guò)語(yǔ)句   import cn.edu.jmu.timer.Time;   導(dǎo)入Time類(lèi)。
        需要設(shè)置classpath參數(shù),規(guī)定程序中的包    cn.edu.jmu.timer 編譯所依存的頂級(jí)目錄為 d:\javaSample\class,如:
                    set classpath = d:\javaSample\class;
        編譯:
            javac -d d:\javaSample\class
            d:\javaSample\src\cn\edu\jmu\timer\Time.java 
            javac -d d:\javaSample\class d:\javaSample\src\TestTime.java
        運(yùn)行:
            java TestTime

    posted @ 2008-08-03 00:40 程序手記 閱讀(356) | 評(píng)論 (0)編輯 收藏

    JAVA面向?qū)ο缶幊?(接口) 第二天

        接口是JAVA語(yǔ)言中非常重要的概念,回調(diào)是軟件設(shè)計(jì)中常用的模式。JAVA的接口不僅可以用來(lái)實(shí)現(xiàn)多繼承關(guān)系,也用來(lái)實(shí)現(xiàn)回調(diào)機(jī)制。 java.lang.Comparable 接口和 java.util.Comparator 接口是進(jìn)行數(shù)據(jù)對(duì)象比較和排序中需要實(shí)現(xiàn)的接口,他們?cè)诠δ芎褪褂梅椒ㄉ隙加兴煌?br />
        當(dāng)類(lèi)只從一個(gè)類(lèi)繼承時(shí)稱(chēng)為單繼承,JAVA語(yǔ)言只允許單繼承。如果需要多繼承關(guān)系,可以通過(guò)JAVA語(yǔ)言中的接口實(shí)現(xiàn)。
        抽象方法只有方法定義,沒(méi)有方法體,如果一個(gè)類(lèi)包含任何抽象方法,包括直接的和繼承所得,則這個(gè)類(lèi)必須是抽象的。如果一個(gè)類(lèi)是抽象的,則不能創(chuàng)建此類(lèi)的對(duì)象。抽象類(lèi)強(qiáng)制要求他的所有子類(lèi)重寫(xiě)自己的方法以覆蓋抽象方法。
        如果存在超類(lèi) Animal,顯然cat同時(shí)具有 Animal和pet的特性,就是說(shuō),cat不只是一個(gè)animal還是一個(gè)pet,除需要繼承animal類(lèi),還期望能實(shí)現(xiàn)pet類(lèi)。因?yàn)镴AVA只允許單繼承,CAT不能繼承animal又繼承pat,解決這個(gè)問(wèn)題的方法是定義接口,并通過(guò)接口實(shí)現(xiàn)多繼承。

    定義接口
        我們把只有抽象方法和常量的抽象類(lèi)稱(chēng)為接口,接口形式化定義了一組相互有關(guān)系的未實(shí)現(xiàn)的方法。接口的定義包括接口聲明和接口體。
    接口聲明的語(yǔ)法為:[public] interface 接口名 [extends 父接口名] {。。。。。。}
        EXTENDS子句與類(lèi)聲明的extends子句基本相同,不同的是:一個(gè)接口可以有多個(gè)父接口,用逗號(hào)隔開(kāi),而一個(gè)類(lèi)只能有一個(gè)父類(lèi)。
        接口體包括常量和抽象方法。
       
    接口Pet示例:

        interface Pet{
            public abstract void speak();
        }
        public class Dog implements Pet{
            public void speak(){
                System.out.println("Woof");
            }
        }
        public class Cat implements Pet{
            public void speak(){
                System.out.println("Meow");
            }
        }
        public class Bird implements Pet{
            public void speak(){
                System.out.println("Tweedle");
            }
        }
        public class TestAnimals{
            public static void main(String args[]){
                Pet myPets = new Pet[4];
                myPets[0] = new Bird();
                myPets[1] = new Cat();
                myPets[2] = new Bird();
                myPets[3] = new Dog();
                
                for(int index = 0; index<4; index++){
                    myPets[index].speak();
                }
            }
        }


        類(lèi)Bird ,Cat 和 Dog 與 Pet 不再具有父子關(guān)系,而分別是實(shí)現(xiàn)了接口Pet的類(lèi)。
        一個(gè)接口的定義由關(guān)鍵字 interface 開(kāi)始,包括一套 public ,abstract 方法,接口也可以包含 public ,final,static數(shù)據(jù)。一個(gè)期望使用接口的類(lèi)必須將自己聲明為 implements 接口,并重寫(xiě)接口定義的每個(gè)方法,保證參數(shù)列表及返回類(lèi)型與接口中所定義的相一致。簡(jiǎn)單說(shuō),強(qiáng)制要求實(shí)現(xiàn)接口的類(lèi)覆蓋接口的方法。
        如果一個(gè)類(lèi)沒(méi)有覆蓋接口定義中的全部方法,那么這個(gè)類(lèi)就稱(chēng)為抽象類(lèi),必須貝聲明為 abstract。

    用Cat類(lèi)繼承Animal 類(lèi) 和 定義Pet接口的示例:
    public class Cat extends Animal implements Pet{
        public void speak(){//實(shí)現(xiàn)
    }
    }

    posted @ 2008-08-02 18:01 程序手記 閱讀(248) | 評(píng)論 (0)編輯 收藏

    JAVA (繼承,封裝,多態(tài),接口) 第二天

        面向?qū)ο蟮姆治雠c設(shè)計(jì)(OOA&D)方法是一種非常成熟的技術(shù)。也是當(dāng)前商業(yè)公司經(jīng)常使用的一種技術(shù),因?yàn)镴AVA語(yǔ)言本身就是一種面向?qū)ο蟮恼Z(yǔ)言,所以掌握面向?qū)ο筮@種技術(shù)對(duì)于JAVA語(yǔ)言的應(yīng)用具有重要意義。

    繼承(inheritance)
        繼承是使用已存在的類(lèi)的定義作為基礎(chǔ)建立新類(lèi)的技術(shù),新類(lèi)的定義可以增加新的數(shù)據(jù)或新的功能,也可以用父類(lèi)的功能,但不能選擇性地繼承父類(lèi)。這種技術(shù)使得復(fù)用以前的代碼非常容易,能夠大大縮短開(kāi)發(fā)周期,降低開(kāi)發(fā)費(fèi)用。比如可以先定義一個(gè)類(lèi)叫車(chē),車(chē)有以下屬性:車(chē)體大小,顏色,方向盤(pán),論壇,而又由車(chē)這個(gè)類(lèi)派生出教程和卡車(chē)兩個(gè)類(lèi),為轎車(chē)添加一個(gè)小后備箱,而為卡車(chē)添加一個(gè)大貨箱。

    封裝(encapsulation)
        類(lèi)使得數(shù)據(jù)和對(duì)數(shù)據(jù)的操作集成在一起,從而對(duì)使用該類(lèi)的其他人來(lái)說(shuō),可以不管它的實(shí)現(xiàn)方法,而只管用它的功能,從而實(shí)現(xiàn)所謂的信息隱藏。

    多態(tài)(polymorphism)
        多態(tài)又分為設(shè)計(jì)時(shí)多態(tài)和運(yùn)行時(shí)多態(tài),例如重載又被稱(chēng)為設(shè)計(jì)時(shí)多態(tài),而對(duì)于覆蓋或繼承的方法,JAVA運(yùn)行時(shí)系統(tǒng)根據(jù)調(diào)用該方法的實(shí)例的類(lèi)型來(lái)決定選擇調(diào)用哪個(gè)方法則被稱(chēng)為運(yùn)行時(shí)多態(tài)。總而言之,面向?qū)ο蟮脑O(shè)計(jì)的典型特點(diǎn)就是繼承,封裝和多態(tài),這些特點(diǎn)也是面向?qū)ο笾阅苋绱耸⑿械年P(guān)鍵所在。

    單繼承與多繼承
        JAVA不支持多重繼承,單繼承使JAVA的繼承關(guān)系很簡(jiǎn)單,一個(gè)類(lèi)只能有一個(gè)父類(lèi),易于管理程序,同時(shí)一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,從而克服單繼承的缺點(diǎn)。

        接口的定義和類(lèi)的定義很相似,只是關(guān)鍵字不同,關(guān)鍵字為interface。生命格式如下:
    interface 接口名
    {
    }
        上面的大括號(hào)中為接口體。接口體中包含成員變量定義和方法定義兩部分。
        接口體中只進(jìn)行方法的聲明,不允許提供方法的實(shí)現(xiàn)。所以在格式上只存在方法聲明,實(shí)際上沒(méi)有方法體,而方法體要在實(shí)現(xiàn)的類(lèi)中再去具體定義。
        還有一點(diǎn)需要說(shuō)明的是:如果一個(gè)類(lèi)使用了某個(gè)接口,就必須要實(shí)現(xiàn)這個(gè)接口的所有方法,即使實(shí)在沒(méi)有內(nèi)容只是一個(gè)空的方法體也不許要寫(xiě)。而且每個(gè)方法都默認(rèn)是public的,所以實(shí)現(xiàn)時(shí)代碼一定要用public做修飾,參數(shù)個(gè)數(shù),類(lèi)型以及返回值的類(lèi)型都必須與接口中的聲明相一致。
    例如:
        interface Runable
        {
        }
        當(dāng)某個(gè)類(lèi)要實(shí)現(xiàn)這個(gè)接口時(shí),就用 imlements 來(lái)聲明。
        例如,我們相做一個(gè)多線程的例子,那么就可有兩種實(shí)現(xiàn)方式,一種是通過(guò)定義一個(gè)Thread類(lèi)的子類(lèi)來(lái)實(shí)現(xiàn),另一種是通過(guò)實(shí)現(xiàn)Runable接口來(lái)實(shí)現(xiàn)。代碼如下(這里的PrintHello類(lèi)就是通過(guò)實(shí)現(xiàn)Runable接口來(lái)實(shí)現(xiàn)的,而不是擴(kuò)展Thread稱(chēng)為他的子類(lèi)):

    import java.lang.*;

    class TestThread
    {
        public static void main(String args[])
        {
            try{
                printHello ph = new PrintHello();
                Thread Tph = new Thread(ph);
                for(;;){
                    System.out.println("I'm main");
                    Thread.sleep(100);
                }
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }

    class PrintHello implements Runnable
    {
        public void run(){
            try{
                for(;;){
                    System.out.println("I'm hello");
                }
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }

    posted @ 2008-08-02 16:34 程序手記 閱讀(7210) | 評(píng)論 (0)編輯 收藏

    JAVA基礎(chǔ) (數(shù)據(jù)類(lèi)型轉(zhuǎn)換) 第二天

        很多場(chǎng)合都要用到類(lèi)型轉(zhuǎn)換,JAVA的類(lèi)型轉(zhuǎn)換有下列兩種。

    自動(dòng)類(lèi)型轉(zhuǎn)換

        整型,實(shí)型,字符型數(shù)據(jù)可以混合運(yùn)算。在運(yùn)算過(guò)程中,不同類(lèi)型的數(shù)據(jù)會(huì)自動(dòng)轉(zhuǎn)換為同一類(lèi)型,然后進(jìn)行運(yùn)算。自動(dòng)轉(zhuǎn)換按低級(jí)類(lèi)型數(shù)據(jù)轉(zhuǎn)換成高級(jí)類(lèi)型數(shù)據(jù)的規(guī)則進(jìn)行,
    轉(zhuǎn)換規(guī)則為:
    (1)(byte 或 short)op int -> int
    (2)(byte 或 short 或 int) op long -> long
    (3)(byte 或 short 或 int 或 long) op float -> float
    (4)(byte 或 short 或 int 或 long 或 float)op double ->double
    (5)char op int ->int

    其中,箭頭左邊表示參與運(yùn)算的數(shù)據(jù)類(lèi)型,op為運(yùn)算符如加減乘除等,右邊表示運(yùn)算結(jié)果的數(shù)據(jù)類(lèi)型。
    如: 3+4.5 是 double型,所以3貝轉(zhuǎn)換為double型,然后再與4.5相加,其結(jié)果也為double型。

    強(qiáng)制類(lèi)型轉(zhuǎn)換

        高級(jí)數(shù)據(jù)類(lèi)型你個(gè)要轉(zhuǎn)換成低級(jí)數(shù)據(jù)類(lèi)型,需要用到強(qiáng)制類(lèi)型轉(zhuǎn)換。其一般形式為:
    (類(lèi)型名)表達(dá)式
    例如:
        int i;
        byte b;
        i = 356;
        b=(byte)i; //強(qiáng)制轉(zhuǎn)換吼丟失一部分?jǐn)?shù)據(jù),使得b的值為100
        一般使用強(qiáng)制類(lèi)型轉(zhuǎn)換可能會(huì)導(dǎo)致數(shù)值溢出或精度下降,應(yīng)盡量避免。

    posted @ 2008-08-02 15:18 程序手記 閱讀(159) | 評(píng)論 (0)編輯 收藏

    JAVA類(lèi)型 (String類(lèi) 和 StringBuffer類(lèi)) 第二天

    String 類(lèi)

        String 類(lèi)提供了幾種字符串創(chuàng)建方法。

        String s = "abcd" 使用字符串常量自動(dòng)創(chuàng)建String實(shí)例。
        String s = new String(String s)通過(guò)String 對(duì)象或字符串常量傳遞給構(gòu)造方法。
        public String (char value[],int offset, int count)將字符數(shù)組一部分賦給String 構(gòu)造方法,offset 為起始下表, count 為數(shù)組長(zhǎng)度。



        String 類(lèi)提供了豐富的字符串操作方法,其中重要的例舉如下。

        public int lenght() 返回字符串的長(zhǎng)度。
        public char charAt(int index) 返回字符串位置index處的字符。
        public boolean equals(Object o) 比較兩個(gè)字符串對(duì)象,相等則返回true;反之返回false。
        public int compareTo(String s) 比較兩個(gè)字符串字典順序,相等返回0,s大于當(dāng)前字符串返回一個(gè)負(fù)值,s小于當(dāng)前串返回一個(gè)正值。
        public boolean regionMatches(int toffset,String other,int ooffset,int len)從當(dāng)前字符串位置toffset開(kāi)始尋找字符串other中起始位置為ooffset 長(zhǎng)度為len 的子串。如發(fā)現(xiàn)匹配,返回true; 否則,返回false。
        public boolean startsWith(String prefix) 從當(dāng)前字符串的起始位置開(kāi)始尋找字符串 prefix。如發(fā)現(xiàn)匹配,返回true;否則,返回false。
        public boolean endsWith(String suffix) 如當(dāng)前字符串的結(jié)尾子串與 suffix 匹配,返回true;否則,返回false。
        public int indexOf(String str) 在當(dāng)前字符串中尋找與str匹配的子串,返回首次匹配的起始下表值;無(wú)匹配返回-1。
        public String substring(int beginIndex,int endIndex) 在當(dāng)前字符串中,求從起始位置 beginIndex 到結(jié)束位置 endIndex 的子串。
        public String concat(String str) 將當(dāng)前字符串與str連接,返回連接后的字符串。
        public String toLowerCase() 將當(dāng)前字符串全轉(zhuǎn)換為小寫(xiě)形式。
        public String toUpperCase() 將當(dāng)前字符串轉(zhuǎn)換為大寫(xiě)形式。
        public char toCharArray() 將當(dāng)前字符串轉(zhuǎn)換為字符數(shù)組。
        public Static String valueOf(type variable) 把variable 轉(zhuǎn)換為字符串,其中 type 表示 variable 的數(shù)據(jù)類(lèi)型。






    StringBuffer類(lèi)

        String類(lèi)實(shí)現(xiàn)一種不能改變的靜態(tài)字符串,StringBuffer類(lèi)實(shí)現(xiàn)一種動(dòng)態(tài)可以改變的字符串。StringBuffer類(lèi)可以用于創(chuàng)建String類(lèi),StringBuffer一旦建立,可以用toString()方法將其轉(zhuǎn)換為String類(lèi),以后,就可以使用String 類(lèi)方法來(lái)操作。 
        
        StringBuffer 類(lèi)提供了三種創(chuàng)建方法。

        public StringBuffer()    創(chuàng)建一個(gè)空的StringBuffer類(lèi)。
        public StringBuffer(int length)    創(chuàng)建一個(gè)大小為length的StringBuffer類(lèi)。
        public StringBuffer(String str)    按str創(chuàng)建一個(gè)動(dòng)態(tài)可變的StringBuffer類(lèi)。


        StringBuffer    類(lèi)提供的方法主要用于把輸入的數(shù)據(jù)轉(zhuǎn)換為String類(lèi)。輸入數(shù)據(jù)可來(lái)自鍵盤(pán)或其他數(shù)據(jù)源。類(lèi)型可以是字符,字符數(shù)組,證書(shū),浮點(diǎn)數(shù)和Object類(lèi)型等。

        public int length()    返回緩沖區(qū)的字符數(shù)
        public int capacity()    返回緩沖區(qū)的容量大小,其值為:字符串長(zhǎng)度+16。
        public synchronized StringBuffer append(type variable)    把variable轉(zhuǎn)換為字符串,然后與當(dāng)前字符串連接。
        public synchronized StringBuffer append(Char(char ch))    把字符ch連接到當(dāng)前串尾。
        public synchronized StringBuffer insert(int offset,type variable)    把variable轉(zhuǎn)換為字符串,然后插入到當(dāng)前串中由offset指定的位置。
        public synchronized StringBuffer insert(int offset,char ch)    把字符 ch 插入到當(dāng)前串由ofset指定的位置。
        public synchronized String toString()    把StringBuffer轉(zhuǎn)換為字符串String。各個(gè)方法的使用,具體請(qǐng)參閱 JAVA API文檔。

    posted @ 2008-08-02 11:57 程序手記 閱讀(706) | 評(píng)論 (0)編輯 收藏

    JAVA程序的執(zhí)行 (OBJECT類(lèi)) 第二天

        Object類(lèi)是JAV類(lèi)庫(kù)中的一個(gè)特殊的類(lèi),它是類(lèi)庫(kù)中所有類(lèi)的父類(lèi),也是用戶自定義的所有類(lèi)的直接或間接父類(lèi)。也就是說(shuō),用戶定義的所有類(lèi)在默認(rèn)情況下都是Object類(lèi)的子類(lèi),無(wú)論用戶是否顯示生命Object類(lèi)作為自己定義的類(lèi)的父類(lèi)。這是系統(tǒng)自動(dòng)完成的,由此,通過(guò)把Object類(lèi)稱(chēng)為通用超類(lèi)。
        Object類(lèi)中的成員方法恰好都是方法,其中有7個(gè)public類(lèi)型的,2個(gè)protected類(lèi)型的。用戶自定義的所有類(lèi)都將繼承這些方法。Object類(lèi)中的7個(gè)public類(lèi)型的方法分別是tostring(0方法,equals()方法,getclass()方法,含水層哦的()方法,notify()方法,notifyall()方法,和wait()方法,2個(gè)protected類(lèi)型的方法是clone()方法和finalize()方法。
        其中toString()方法和equals()方法較為常用
    toString()方法 較為簡(jiǎn)單,略過(guò)。
    equals()方法
        Object類(lèi)的equals()方法用戶比較以參數(shù)傳過(guò)來(lái)的對(duì)象和當(dāng)前對(duì)象,如果他們是相同的對(duì)象(不僅是相等,而且必須是同一個(gè)對(duì)象),則返回true;如果他們是不同的對(duì)象,即使兩者的數(shù)據(jù)成員相等,也將返回false。

    equals()方法的格式
    test t = new test();
    test t2 = new test();

    if(t.equals(t2)){
        true;
    }else{
        false;
    }

    posted @ 2008-08-02 11:18 程序手記 閱讀(159) | 評(píng)論 (0)編輯 收藏

    面向?qū)ο缶幊?(抽象類(lèi) 最終類(lèi) 權(quán)限修飾 對(duì)象) 第一天 第二天

        抽象與封裝是面向?qū)ο蟪绦蛟O(shè)計(jì)的兩個(gè)重要概念。類(lèi)將數(shù)據(jù)以及對(duì)數(shù)據(jù)的操作封裝在一個(gè)抽象數(shù)據(jù)類(lèi)型中,為屬于該類(lèi)的所有對(duì)象提供了同意的抽象描述。

        理解抽象與封裝的概念,掌握J(rèn)AVA中的類(lèi)與對(duì)象的應(yīng)用,能夠運(yùn)用面向?qū)ο笏枷脒M(jìn)行類(lèi)的設(shè)計(jì),正確設(shè)計(jì)類(lèi)中的成員方法和成員變量,是我們學(xué)習(xí)的目標(biāo)。

     

        面向?qū)ο笫且环N新型的程序設(shè)計(jì)方法,或者說(shuō)是一種心的程序設(shè)計(jì)規(guī)范,其基本思想是實(shí)用對(duì)象、類(lèi)、繼承、封裝、消息等基本概念來(lái)進(jìn)行程序設(shè)計(jì)。從顯示世界中客觀存在的事務(wù)(即對(duì)象)出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并且在系統(tǒng)構(gòu)建中盡可能運(yùn)行人類(lèi)的自然思維方式。

        面向?qū)ο蟮脑O(shè)計(jì)方法用對(duì)象描述事物,而每個(gè)具體的對(duì)象又可以用兩個(gè)特征來(lái)描述:描述事物靜態(tài)屬性所需的數(shù)據(jù)結(jié)構(gòu)以及對(duì)這些數(shù)據(jù)進(jìn)行的有限操作。也就是說(shuō),把數(shù)據(jù)結(jié)構(gòu)和對(duì)數(shù)據(jù)的操作放在一起構(gòu)成一個(gè)整體,才能完整地反應(yīng)實(shí)際問(wèn)題。數(shù)據(jù)結(jié)構(gòu)和對(duì)數(shù)據(jù)的操作實(shí)際上是相互以來(lái)不可分割的整體。

        面向?qū)ο蟪绦蛟O(shè)計(jì)具有抽象、封裝、集成和多態(tài)4個(gè)特點(diǎn)。抽象去掉了被研究對(duì)象中與主旨無(wú)關(guān)的次要部分,而僅僅抽取出與研究工作有關(guān)的實(shí)質(zhì)性的內(nèi)容加以考慮。抽象有兩類(lèi):一類(lèi)是過(guò)程抽象,另一類(lèi)是數(shù)據(jù)抽象。

        面向?qū)ο蟪绦蛟O(shè)計(jì)強(qiáng)調(diào)數(shù)據(jù)抽象,數(shù)據(jù)抽象把系統(tǒng)總需要處理的數(shù)據(jù)和這些數(shù)據(jù)上的操作結(jié)合在一起,根據(jù)功能、性質(zhì)、作用等因素抽象成不同的抽象數(shù)據(jù)類(lèi)型。每個(gè)抽象數(shù)據(jù)類(lèi)型既包含數(shù)據(jù),又包含針對(duì)這些數(shù)據(jù)的操作,是相對(duì)于過(guò)程抽象更為嚴(yán)格的抽象方法。

     

    封裝

        封裝就是利用抽象數(shù)據(jù)類(lèi)型把數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類(lèi)型的內(nèi)部,系統(tǒng)的其他部分只有通過(guò)數(shù)據(jù)的操作,才能夠于這個(gè)抽象數(shù)據(jù)類(lèi)型進(jìn)行交互,封裝包含兩層含義。

        第一,把對(duì)象的全部屬性及其行為結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位(即對(duì)象)。

        第二,信息隱蔽,即盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),對(duì)外形成一個(gè)邊界(或者說(shuō)形成一道屏障),只保留有限的對(duì)外接口,使之與外部發(fā)生聯(lián)系。

        封裝的原則在軟件上的反應(yīng)是:對(duì)象以外的部分不能隨意存取對(duì)象的內(nèi)部數(shù)據(jù)(屬性),從而有效地避免了外部錯(cuò)誤對(duì)他的“交叉感染”,使軟件錯(cuò)誤能夠局部化,大大減少查錯(cuò)和排錯(cuò)難度。

       在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,抽象數(shù)據(jù)類(lèi)型是用“類(lèi)”這種面向?qū)ο蠊ぞ弑硎镜模總€(gè)類(lèi)里都防撞了相關(guān)的數(shù)據(jù)和操作。封裝性降低了程序開(kāi)發(fā)過(guò)程的復(fù)雜性,提高了效率和質(zhì)量,保證了數(shù)據(jù)的完整性和安全性。同時(shí),封裝性提高了抽象數(shù)據(jù)類(lèi)型的可重用性,使抽象數(shù)據(jù)類(lèi)型稱(chēng)為一個(gè)結(jié)構(gòu)完整、能夠自行管理的有機(jī)整體。

     

    類(lèi)

        把眾多的事物歸納、劃分成一些類(lèi),是人類(lèi)在認(rèn)識(shí)客觀世界時(shí)經(jīng)常采用的思維方法。分類(lèi)的原則是抽象。類(lèi)是一組對(duì)象的集合,它為屬于該類(lèi)的所有對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個(gè)主要部分。在面向?qū)ο蟮木幊陶Z(yǔ)言中,類(lèi)是一個(gè)獨(dú)立的程序單位行為。類(lèi)的實(shí)例化結(jié)果就是對(duì)象,而對(duì)一類(lèi)對(duì)象的抽象就是類(lèi)。

        類(lèi)的定義

        類(lèi)是JAVA的核心和本質(zhì),想要在JAVA程序中實(shí)現(xiàn)的每個(gè)概念,都必須封裝自愛(ài)類(lèi)中。類(lèi)是具有共同屬性和行為的對(duì)象的抽象,屬性描述了對(duì)象的狀態(tài),以數(shù)據(jù)的形式存在,在JAVA面向?qū)ο蟪绦蛟O(shè)計(jì)中又貝稱(chēng)為變量。行為描述了對(duì)數(shù)據(jù)進(jìn)行的操作,可引起對(duì)象狀態(tài)的改變。在JAVA面向?qū)ο蟪绦蛟O(shè)計(jì)中貝稱(chēng)為方法。

        JAVA中類(lèi)的實(shí)現(xiàn)包括兩個(gè)部分:類(lèi)頭和類(lèi)體。類(lèi)頭定義的格式如下:

     [類(lèi)定義修飾符] class <類(lèi)名> [extends <父類(lèi)名>] [implements <接口列表>]

        類(lèi)的定義主要包括關(guān)鍵詞 class 和類(lèi)名。類(lèi)名是JAVA語(yǔ)言合法的標(biāo)識(shí)符,類(lèi)名一般具有一定的含義。其中,CLASS為定義類(lèi)的關(guān)鍵字,extends是用于繼承的關(guān)鍵字,implements是用于實(shí)現(xiàn)接口的關(guān)鍵字,有關(guān)類(lèi)的修飾符后面將詳細(xì)闡述。

        類(lèi)體是類(lèi)的主體部分,它包含了所有實(shí)現(xiàn)類(lèi)功能的JAVA語(yǔ)言程序代碼,包括成員變量和成員方法。JAVA類(lèi)除了繼承它的父類(lèi)中的變量和方法外,一般仍會(huì)在類(lèi)體中明確定義自己的變量和方法。程序中,變量說(shuō)明應(yīng)放在定義之前。類(lèi)體要用{}括起來(lái)。類(lèi)體的格式如下:

    class <類(lèi)名>{

         [變量修飾符] <變量?jī)?nèi)省> <變量名>

         [方法修飾符] <方法返回值類(lèi)型> <方法名>([<參數(shù)列表>]){

              方法體

         }

    }

     

        其中,變量名是JAVA語(yǔ)言中的合法標(biāo)識(shí)符,變量的類(lèi)型可以是JAVA給定的任意數(shù)據(jù)類(lèi)型或者用戶自定義類(lèi)。用于說(shuō)明變量和方法的訪問(wèn)權(quán)限等屬性。

     

    一個(gè)簡(jiǎn)單的學(xué)生類(lèi):

    //**********Student.java*********

    //學(xué)生類(lèi)的定義

    import java.io.*; //加載系統(tǒng)輸入輸出類(lèi)

    public class Strdent{

         /*類(lèi)成員的定義*/

         private String name;    //成員變量

         private String sex;     //成員變量

         rivate int number;     //成員變量

         void setValue(String a, String b, int c)//成員方法

         {

              name = a;

              sex = b;

              number = c;

         }

         public int getNumber()     //成員方法

         {

              return number;

         }

         public static void main(String args[])       //成員方法

         {

              //打印輸出一行字符

              System.out.println("這是一個(gè)學(xué)生類(lèi)的定義!");

         }

    }// Student 類(lèi)結(jié)束

     

        //代表JAV語(yǔ)言中的單行注釋。

        /*   */ 之間的部分是多行注釋。

       

    類(lèi)的修飾符

        類(lèi)的修飾符說(shuō)明類(lèi)的性質(zhì)和訪問(wèn)權(quán)限,分為訪問(wèn)控制符和非訪問(wèn)控制符,包括

     public 、protected 、 private 、abstract  和 final 。

        1. public , protected 和 private

        public , protected 和 private 說(shuō)明類(lèi)的訪問(wèn)權(quán)限,屬于訪問(wèn)控制符。

        用public修飾的類(lèi),不僅能貝同一包中其他類(lèi)訪問(wèn),還能貝包之外的類(lèi)和對(duì)象使用。

        protected 修飾的類(lèi)為保護(hù)類(lèi),可貝同包類(lèi)和異包子類(lèi)訪問(wèn)。

        private 修飾符的類(lèi)為似有類(lèi),外界無(wú)法訪問(wèn)。

     

        共有類(lèi)的定義。

    //*******TestPublic.java*******

    //共有類(lèi)的定義

    import java.io.*; //加載系統(tǒng)輸入輸出類(lèi)

    public class TestPublic

    {

         /*每個(gè)類(lèi)的main()方法是該程序的入口,而包含main方法的類(lèi)是程序的主類(lèi)。

    main()方法的形式是 public static void main(String args[]) */

         public static void main(String args[])

         {

              System.out.println("這是一個(gè)共有類(lèi)");

         }

    }

        下面定義一個(gè)名為T(mén)estProtectedAndPrivate的類(lèi)來(lái)測(cè)試保護(hù)類(lèi)和似有類(lèi)。

    保護(hù)類(lèi)和似有類(lèi)的定義:

    //*************TestProtectedAndPrivate.java**********

    //保護(hù)類(lèi)和似有類(lèi)的定義

    import java.io.*;  //加載系統(tǒng)輸入輸出類(lèi)

    public class TestProtectedAndPrivate{

         //主方法

         public static void main(String args[]){

              //分別創(chuàng)建保護(hù)類(lèi)和似有類(lèi)的對(duì)象t1和t2

              TestProtected t1 = new TestProtected();

              TestPrivate t2 = new TestPrivate();

     

              //打印輸出兩行字符

              System.out.println(t1.toString());

              System.out.println(t2.toString());

         }

         protected static class TestProtected     //保護(hù)類(lèi)

         {

              public String toString(){

                   return "保護(hù)類(lèi)的定義:作為潛逃類(lèi)的內(nèi)部類(lèi)";

              }

         }

         private static class TestPrivate      //似有類(lèi)

         {

              public string toString(){

                   return "私有類(lèi)的定義:作為嵌套類(lèi)的內(nèi)部類(lèi)";

              }

         }

    }     // TestProtectedAndPrivate 類(lèi)結(jié)束

     

     

    aabstract

        abstract 說(shuō)明一個(gè)類(lèi)為抽象類(lèi),所謂抽象類(lèi)是指不能直接實(shí)例化對(duì)象的類(lèi)。如果一個(gè)抽象類(lèi)貝說(shuō)明了,則這個(gè)類(lèi)中將包括一個(gè)或幾個(gè)抽象方法。所謂抽象方法是指該方法只有方法說(shuō)明卻沒(méi)有方法體,即沒(méi)有具體實(shí)現(xiàn)的代碼。抽象類(lèi)本身不具備實(shí)際功能,它只用于衍生子類(lèi)。定義抽象類(lèi)和抽象方法的目的是建立抽象模型。抽象類(lèi)中不一定包含抽象方法,但一旦某個(gè)類(lèi)中說(shuō)明了抽象方法,該類(lèi)必須說(shuō)明為抽象類(lèi)。

     

    不包含抽象方法的抽象類(lèi)的定義。

    //*************TestAbstract.java*************

    //不包含抽象方法的抽象類(lèi)

    import java.io.*; //加載系統(tǒng)輸入輸出類(lèi)

    public abstract class TestAbstract{

         //該類(lèi)不包含抽象方法

     

         //主方法

         public static void main(String args]){

              //打印輸出兩行字符

              System.out.println("這是一個(gè)不包含抽象方法的抽象類(lèi)!");

              System.out.println("抽象類(lèi)不能創(chuàng)建對(duì)象!");

         }

    } // TestAbstract 類(lèi)結(jié)束

     

    包含抽象方法的抽象類(lèi)的定義。

    //********** Mankind.java **********

    //包含抽象方法的抽象類(lèi)

         import java.io.*; //加載系統(tǒng)輸入輸出類(lèi)

         public abstract class Mankind{

              //定義4個(gè)抽象方法

              public abstract void closing();

              public abstract void food();

              public abstract void shelter();

              public abstract void transportation();

     

              //主方法

              public static void main(String args[]){

                   //打印輸出兩行字符

                   System.out.println("這是一個(gè)包含抽象方法的抽象類(lèi)");

                   System.out.println("抽象方法沒(méi)有方法體");

              }

         }//  Mankind 類(lèi)結(jié)束

     

     

    final

         final 修飾的類(lèi)又稱(chēng)為最終類(lèi),是指該類(lèi)不能被繼承,不能再有子類(lèi)。它的目的是為了避免盲目繼承。一個(gè)final類(lèi)無(wú)法貝繼承,意味著此類(lèi)在一個(gè)繼承樹(shù)中是一個(gè)葉子類(lèi),并且此類(lèi)的設(shè)計(jì)已貝認(rèn)為很具體而不需要進(jìn)行修改或擴(kuò)展。對(duì)于final類(lèi)中的成員變量,可以定義其為final,也可以不是final。而對(duì)于方法,由于所屬類(lèi)為final的關(guān)系,自然也就成了final類(lèi)型。也可以明確地給final類(lèi)中的方法加上一個(gè)final關(guān)鍵字。下面定義一個(gè)名為T(mén)estFinal的最終類(lèi)。

    //************* TestFinal.java ***************

    //最終類(lèi)的定義

    import java.io.*; //加載系統(tǒng)輸入輸出類(lèi)

    public final class TestFinal

    {

         //主方法

         public static void main(String args[]){

              //打印輸出一行字符

              System.out.println("這是一個(gè)最終類(lèi),不能被繼承");

         }

    }//TestFinal類(lèi)結(jié)束

     

    因?yàn)槌橄箢?lèi)的目的就是為了被繼承,而最終類(lèi)的目的是不讓其貝繼承,所以一個(gè)類(lèi)是不能用 abstract 和 final 同時(shí)修飾的。

     

     

     

    對(duì)象

        對(duì)象是具有某些特俗屬性(數(shù)據(jù))和行為方式(操作)的實(shí)體。對(duì)象可以是有生命的個(gè)體,比如一個(gè)人或一只老虎;還可以是無(wú)生命的個(gè)體,比如一輛汽車(chē)或一臺(tái)計(jì)算機(jī);也可以是一個(gè)抽象的概念,如天氣的變化或鼠標(biāo)產(chǎn)生的事件。對(duì)象有兩個(gè)特征:屬性(property)和行為(Behavior)。例如,一個(gè)人的屬性有姓名、性別、年齡、身高、體重等;行為有唱歌、打球、騎車(chē)和學(xué)習(xí)等。

        類(lèi)是一個(gè)抽象的概念,而對(duì)象是一個(gè)具體的概念,是類(lèi)實(shí)例化的結(jié)果。對(duì)象通過(guò)消息傳遞來(lái)進(jìn)行交互。消息傳遞即激活指定的某個(gè)對(duì)象的方法以改變其狀態(tài)或讓它產(chǎn)生一定的行為。

     

    對(duì)象的生命與引用

        同基本內(nèi)置類(lèi)型一樣,為了聲明對(duì)象,首先必須寫(xiě)出類(lèi)型名,然后寫(xiě)出該類(lèi)型的所有變量的名字,中間用逗號(hào)隔開(kāi)。下面舉例說(shuō)明怎樣生命一個(gè)類(lèi)的對(duì)象:

    Student s1, s2, s3;

        上面的生命表示s1\s2\s3是 Student 類(lèi)型的引用變量,可以用來(lái)引用Student型的對(duì)象。引用變量的值將對(duì)應(yīng)一個(gè)內(nèi)存地址,這個(gè)地址標(biāo)識(shí)的空間用來(lái)存放一個(gè)Student對(duì)象。

        聲明對(duì)象的引用變量,并不等于創(chuàng)建對(duì)象,當(dāng)然更沒(méi)有為對(duì)象分配存儲(chǔ)空間。這些需要通過(guò) new 關(guān)鍵詞和對(duì)引用變量的賦值才能實(shí)現(xiàn)。

     

    創(chuàng)建對(duì)象與定義構(gòu)造方法

        在JAVA語(yǔ)言中,一個(gè)JAVA對(duì)象是類(lèi)的一個(gè)實(shí)力,創(chuàng)建對(duì)象的過(guò)程是對(duì)類(lèi)的實(shí)例化過(guò)程,實(shí)例化對(duì)象就是創(chuàng)建一個(gè)對(duì)象。實(shí)例化對(duì)象意味著給對(duì)象分配必要的存儲(chǔ)空間,用來(lái)保存對(duì)象的變量和方法大媽。new 運(yùn)算符用于創(chuàng)建一個(gè)類(lèi)的實(shí)例并返回對(duì)象的引用,即用來(lái)實(shí)現(xiàn)對(duì)象的實(shí)例化。一般格式為:

    <類(lèi)名>   <對(duì)象名>  =   new  <類(lèi)名>(<參數(shù)列表>);

        創(chuàng)建對(duì)象與生命基本數(shù)據(jù)類(lèi)型的變量相似,首先說(shuō)明新建對(duì)象所屬的類(lèi)名,然后說(shuō)明該對(duì)象名,賦值號(hào)左邊的NEW 關(guān)鍵字是用于為新建對(duì)象開(kāi)辟內(nèi)存空間的運(yùn)算符。與變量相比,對(duì)象占用的內(nèi)存空間要大得多,因?yàn)閷?duì)象既包含變量又包含方法,多數(shù)情況下,變量與方法還不止一個(gè)。例如前面定義的學(xué)生類(lèi) Strdent,假設(shè)有一個(gè)對(duì)象s1,則它就有3個(gè)屬性和2個(gè)方法: s1.name  ,s1.sex,  s1.number, s1.setValue(),  s1.getNumber() 。這些變量和方法保存在一塊內(nèi)存中,這塊內(nèi)存就是對(duì)象s1 所占用的內(nèi)存。如果在新建另一個(gè) Strdent類(lèi)的對(duì)象 s2,則s2對(duì)象將在內(nèi)存中擁有自己的與s1對(duì)象不同的位置相同大小的內(nèi)存空間。

        創(chuàng)建對(duì)象的同時(shí)要調(diào)用這個(gè)對(duì)象的構(gòu)造方法完成對(duì)象的初始化工作,JAVA語(yǔ)言中每一個(gè)類(lèi)都有構(gòu)造方法,該方法是一種特殊的方法,其特殊性主要體現(xiàn)在以下幾個(gè)方面。

    (1) 構(gòu)造方法的名稱(chēng)與類(lèi)的名稱(chēng)相同。

    (2) 構(gòu)造方法不返回任何數(shù)據(jù)類(lèi)型,也就沒(méi)有返回值。

    (3) 構(gòu)造方法的修飾符只能是訪問(wèn)修飾符,即 public ,private,protected 中的任一個(gè)。

    (4) 構(gòu)造方法只能由 new 運(yùn)算符調(diào)用,一般不能由編程人員顯式地直接調(diào)用。

    (5) 構(gòu)造方法不能從父類(lèi)中繼承。而在構(gòu)造方法中可以調(diào)用但前父類(lèi)和其父類(lèi)的另一個(gè)構(gòu)造方法,調(diào)用語(yǔ)句必須是構(gòu)造方法的第一條語(yǔ)句。使用當(dāng)前類(lèi)的構(gòu)造方法用this來(lái)引用,使用其父類(lèi)的構(gòu)造方法用 super 來(lái)引用,在構(gòu)造方法的實(shí)現(xiàn)中,可以進(jìn)行方法的重載。

        下面定義一個(gè) Student 類(lèi),該類(lèi)具有兩個(gè)構(gòu)造方法,方法的名稱(chēng)都是 Student,與類(lèi)名相同。

     

    public class Student{

         //成員變量

         private String name;

         private String sex;

         private int number;

         

         //成員方法

         Student()     //構(gòu)造方法

         {

              name = "NO name";

              sex = "unknown";

              number = 0;

         }

         Student(String a, String b, int c)//構(gòu)造方法

         {

              name = a;

              sex = b;

              number = c;

         }

    }// Student 類(lèi)結(jié)束

     

    構(gòu)造方法的重載。

    //************* TestConstructor.java ***************

    //構(gòu)造方法的重載

    import java.io.*; //加載系統(tǒng)輸入輸出類(lèi)

    class Constructor{

         //成員變量

         private int x;

         private double y;

     

         //沒(méi)有參數(shù)的構(gòu)造方法

         Constructor()

         {

              x = 0;

              y = 0.0;

         }

         

         //一個(gè)參數(shù)的構(gòu)造方法

         Constructor(int x){

              this.x = x; //使用 this 關(guān)鍵字標(biāo)識(shí)成員變量,以區(qū)別于同名參數(shù)

         }

     

         //一個(gè)參數(shù)的構(gòu)造方法,參數(shù)類(lèi)型于前一個(gè)構(gòu)造方法不同

         Constructor(double y){

              this.y = y;

         }

     

         //兩個(gè)參數(shù)的構(gòu)造方法

         Constructor(int x, double y){

              this.x = x;

              this.y = y;

         }

     

         // print() 方法顯示成員變量

         void print()

         {

              System.out.println("x=" +x+"    y="+y);

         }

    }    // Constructor 類(lèi)結(jié)束

     

     

     

    // ConstructorTest 類(lèi)

    public class TestConstructor

    {

         //主方法

         public static void main(String args[]){

              //創(chuàng)建 Constructor 類(lèi)的對(duì)象 c1 c2 c3 c4 分別使用了不同的構(gòu)造方法

              Constructor c1 = new Constructor();

              Constructor c2 = new Constructor(53);

              Constructor c3 = new Constructor(6.98);

              Constructor c4 = new Constructor(5,7.8);

     

              //在屏幕上輸出

              c1.print();

              c2.print();

              c3.print();

              c4.print();

         }

    } // TestConstructor 類(lèi)結(jié)束



    對(duì)象的使用
        通過(guò)運(yùn)算符“.”可以實(shí)現(xiàn)對(duì)對(duì)象中成員變量的訪問(wèn)和成員方法的調(diào)用。可以通過(guò)設(shè)定成員變量和成員方法訪問(wèn)權(quán)限來(lái)限制對(duì)它的訪問(wèn)。
        調(diào)用對(duì)象的成員變量的一般格式為:
    <對(duì)象名>.<成員變量名>
        其中,對(duì)象名是一個(gè)已生成的對(duì)象,也可以是能生成對(duì)象的表達(dá)式。

    例如:
        s1.name = "李明";
        int num = new Student().number;
        調(diào)用對(duì)象的成員方法的一般格式為:
            <對(duì)象名>.<成員方法名>([<參數(shù)列表>])
        其中,參數(shù)列表是可選項(xiàng)。在進(jìn)行對(duì)象的方法引用時(shí),方法中參數(shù)的個(gè)數(shù)、參數(shù)的數(shù)據(jù)類(lèi)型與原方法中定義的要一致,否則編譯器會(huì)出錯(cuò)。

    對(duì)象的使用示例。
    //**************  Student2.java ***************
    //對(duì)象的使用
    import java.ioo.*;
    public class Student2{
        private String name;    //姓名
        private String sex;       //性別
        private int number;      //學(xué)號(hào)

        Student2()                  //無(wú)參構(gòu)造方法
        {
            name = "No name";
            sex = "unknown";
            number = 0;
        }
        
        Student2(String a, String b, int c){
            name = a;
            sex = b;
            number = c;    
        }
        public void setName(String a){
            name = a;
        }
        public void setSex(String b){
            sex = b;
        }
        public void setNumber(int c){
            number = c;
        }
        public String getName(){
            return name;
        }
        public String getSex(){
            return sex;
        }
        public int getNumber(){
            return number;
        }
        public static void main(String args[]){
            Student2 s1 = new Student2();
            Student2 s2 = new Student2("李明","男",102305);
            System.out.println("對(duì)象的使用");
            System.out.println("-------------------------");
            System.out.println("第一個(gè)學(xué)習(xí)的姓名:"+s1.getName());
            System.out.println("第一個(gè)學(xué)生的性別:"+s1.getSex());
            System.out.println("第一個(gè)學(xué)生的學(xué)號(hào):"+s1.getNumber());
            System.out.println("-------------------------");
            System.out.pringln("第二個(gè)學(xué)生的姓名:"+s2.getName());
            System.out.println("第二個(gè)學(xué)生的性別:"+s2.getSex());
            System.out.println("第二個(gè)學(xué)生的學(xué)號(hào):"+s2.getNumber());
        }
    } // Student2 類(lèi)結(jié)束

        在定義一個(gè)類(lèi)時(shí),類(lèi)中的成員變量也可以是一個(gè)類(lèi),例2-9中包含2個(gè)類(lèi):Data類(lèi)和Person類(lèi),Person類(lèi)的成員變量birth為Data類(lèi)型。

    //*************  Person.java **************
    //對(duì)象作為類(lèi)的成員變量
    import java.io.*;
    public class Date
    {
        int year;
        int month;
        int day;
        Date(int year, int month, int day){
            this.year = year;    //用關(guān)鍵字this標(biāo)識(shí)類(lèi)成員變量,一面與同名參數(shù)混淆
            this.month = month;
            this.day = day;
        }
        void showDate(){
            System.out.println(year+","+month+","+day);
        }
    }//Date類(lèi)結(jié)束

    public class Person
    {
        private String name;
        private String sex;
        private Date birth;    //對(duì)象作為類(lèi)的成員變量,默認(rèn)初始值為null
        void setValue(String s1, String s2, int y, int m, int d){
            name = s1;
            sex = s2;
            birth = new Date(y,m,d);
        }
        void showValue(){
            System.out.println("姓名:"+name);
            System.out.println("性別:"+sex);
            System.out.print("出生年月日:");
            birth.showDate();
        }
        public static void main(String args[]){
            Person per = new Person();
            per.setValue("李明","男",1975,7,8);
            per.showValue();
        }
    }//Person 類(lèi)結(jié)束

    finalize() 是銷(xiāo)毀一個(gè)對(duì)象用的



    成員變量

        成員變量是類(lèi)和對(duì)象的數(shù)據(jù)屬性,其本身也有一些修飾符:訪問(wèn)控制符 public private protected 以及非訪問(wèn)控制符  static final transient volatile.這里主要探討常用的static 和final這兩個(gè)非訪問(wèn)控制符。

    靜態(tài)變量
        使用關(guān)鍵字static 生命的成員變量稱(chēng)為靜態(tài)變量。靜態(tài)變量也稱(chēng)類(lèi)變量(class variable),它與類(lèi)關(guān)聯(lián),由類(lèi)鐘的所有對(duì)象共享。無(wú)論生成多少個(gè)這種類(lèi)的對(duì)象,靜態(tài)變量都只有一份,并且即使沒(méi)有生成任何對(duì)象,這種變量也存在。靜態(tài)變量之所以稱(chēng)為類(lèi)變量,是因?yàn)檫@種變量是屬于相應(yīng)類(lèi)的,而不是屬于特定對(duì)象的,他們?cè)谠擃?lèi)的全部對(duì)象中共享。靜態(tài)變量可以由任何該類(lèi)的對(duì)象和類(lèi)引用,當(dāng)某個(gè)對(duì)象修改了靜態(tài)變量的值后,其他對(duì)象在訪問(wèn)靜態(tài)變量時(shí),取得的將是改變后的新值。
        相對(duì)地,沒(méi)有用static修飾的普通成員變量稱(chēng)為實(shí)例變量(instance variable)。在類(lèi)中,實(shí)例變量與每個(gè)對(duì)象都唯一關(guān)聯(lián),每個(gè)類(lèi)的對(duì)象將擁有自己的一份實(shí)例變量的復(fù)制,并且賦予他自己的值。實(shí)例變量使一個(gè)對(duì)象與其他對(duì)象相互區(qū)別,使對(duì)象具有自己的個(gè)性。
        下面定義一個(gè)學(xué)生 Student 類(lèi),其中包含2個(gè)靜態(tài)變量和3個(gè)實(shí)例變量。

    public class Student
    {
        static String school = "黑龍江科技學(xué)院";
        static String classNumber;

        //實(shí)例變量
        String name;
        string sex;
        int number;
        
        Student(){
            name = "No name";
            sex = "unknown";
            number = 0;
        }
        Strdent (String a,String b, int c)    //構(gòu)造方法
        {
            name = a;
            sex = b;
            number = c;
        }
    }//Student類(lèi)結(jié)束


    最終變量
        使用關(guān)鍵字final聲明的成員變量稱(chēng)為最終變量,更確切地說(shuō)是常量。只不過(guò)為他們?nèi)×艘粋€(gè)類(lèi)似變量的標(biāo)識(shí)符名字。用final修飾符聲明常量時(shí),需要說(shuō)明常量的數(shù)據(jù)類(lèi)型并要初始化具體的數(shù)值。另外,因?yàn)樗蓄?lèi)對(duì)象的常量數(shù)據(jù)成員數(shù)值都一樣,為了節(jié)省內(nèi)存控件,常量通常聲明為static。 例如下面球體類(lèi)中的常量PI:

    public class Sphere
    {
        //常量
        static final double PI = 3.14;
        //變量
        double xCenter;
        double yCenter;
        double zCenter;
        double radius;
    }// Sphere 類(lèi)結(jié)束


    成員方法
        成員方法是類(lèi)的行為,標(biāo)志著類(lèi)所具有的功能,是對(duì)類(lèi)中成員變量的操作。JAVA中方法的一般格式如下:
    [方法修飾符] [返回值類(lèi)型] <方法名> ([<形式參數(shù)列表>]) [throws <異常列表>]
    {
        <方法體>
    }
        成員方法是具有相對(duì)獨(dú)立性的功能模塊,是一個(gè)類(lèi)與外界進(jìn)行通信的接口。成員方法也有一些修飾符:訪問(wèn)修飾符public private procected 和非訪問(wèn)控制符 static abstract final native synchronized 下面分別探討這幾個(gè)非訪問(wèn)控制符

    靜態(tài)方法
        使用那個(gè)關(guān)鍵字static聲明的成員方法稱(chēng)為靜態(tài)方法。靜態(tài)方法也稱(chēng)為類(lèi)方法(class method),它與類(lèi)關(guān)聯(lián),是屬于整個(gè)類(lèi)的,即使類(lèi)中一個(gè)對(duì)象也不存在,也可以執(zhí)行該類(lèi)的類(lèi)方法。正式因?yàn)樵跊](méi)有對(duì)象存在的情況下也可以執(zhí)行類(lèi)方法,因此它只能調(diào)用類(lèi)變量,即靜態(tài)方法只能處理靜態(tài)變量,而不能處理類(lèi)中的實(shí)例變量。很明顯,實(shí)例變量是屬于某個(gè)特定對(duì)象的,如果對(duì)象不存在,實(shí)例變量也就不存在,這時(shí)用類(lèi)方法去操縱和處理一個(gè)可能不存在的變量肯定會(huì)出問(wèn)題。實(shí)際上,JAVA編譯器根本就不允許做這樣的嘗試。如果在一個(gè)類(lèi)方法中引用了一個(gè)實(shí)例變量,系統(tǒng)將拒絕編譯,從而出現(xiàn)出錯(cuò)信息。
        相對(duì)地,未用static 修飾的普通成員方法稱(chēng)為實(shí)例方法(instance method)。實(shí)例方法只能針對(duì)特定的對(duì)象執(zhí)行,因此如果任何對(duì)象都不存在,也就沒(méi)有可以執(zhí)行的實(shí)例方法。

    靜態(tài)方法實(shí)例:
    //************** StaticFunction.java ***************
    //靜態(tài)方法
    import java.io.*;    //加載系統(tǒng)輸入輸出類(lèi)
    public class StaticFunction
    {
        static int classVariable;      //靜態(tài)變量,即類(lèi)變量
        int instanceVariable;            //非靜態(tài)變量,即實(shí)例變量

        // setClassVariable()方法為靜態(tài)方法,即類(lèi)方法
        static void setClassVariable(int i){
            //this.classvar = i; 不能使用this
            classvariable = i;
            //instanceVar=i; 不能訪問(wèn)實(shí)例變量
        }
        void setInstanceVar(int i){
            instanceVariable = i;
            classvariable = i;
        }
        //MAIN方法也為靜態(tài)方法
        public static void main(String a[]){
            StaticFunction sf = new StaticFunction();
            /*
                下面的語(yǔ)句不合法,main()方法是類(lèi)方法,不能在類(lèi)方法中直接調(diào)用實(shí)例方法
                setInseranceVariable(58);
            */
            sf.setInstanceVariable(58);//在類(lèi)方法中只能通過(guò)實(shí)例對(duì)象訪問(wèn)實(shí)例方法
            sf.setInstanceVariable(58);
            setInstanceVariable(58);
            StaticFunction.setClassVariable(55);
            System.out.println("靜態(tài)方法中不能直接調(diào)用實(shí)例方法,只能通過(guò)對(duì)象訪問(wèn)實(shí)例方法");
        }
    }

    抽象方法
        使用關(guān)鍵字abstract聲明的成員方法稱(chēng)為抽象方法。抽象方法只有方法頭,沒(méi)有方法體。抽象方法的聲明以一個(gè)分號(hào)結(jié)束。

    抽象方法示例。
    //***************  AbstractFunction.java**************
    //抽象方法
    import java.io.*;
    abstract class Mankind
    {
        protected String type;                    //保護(hù)數(shù)據(jù)成員用于繼承
        public abstract void closing();        //抽象方法
        public abstract void food();                    //抽象方法
        public abstract void shelter();                //抽象方法
        public abstract void transportation();    //抽象方法
        
        public String toString(){
            return "這是一個(gè)"+type;
        }
    }//Mankind類(lèi)結(jié)束

    abstract class people extends Mankind
    {
        //重寫(xiě)Mankind類(lèi)的抽象方法colsing()
        public void closing(){
            System.out.println("學(xué)會(huì)穿衣了!");
        }

        //重寫(xiě)Mankind類(lèi)的抽象方法food()
        public void food(){
            System.out.println("學(xué)會(huì)吃飯了");
        }
    }//People 類(lèi)結(jié)束

    class Person extends People{
        //重寫(xiě)People類(lèi)的抽象方法shelter()
        public void shelter(){
            System.out.println("蓋房子用來(lái)居住");
        }

        //重寫(xiě)people類(lèi)的抽象方法transportation()
        public void transportation(){
            System.out.println("使用交通工具出行");
        }

        //構(gòu)造方法
        public Person(String aType){
            type = new String(aType);
        }
    }// Person類(lèi)結(jié)束

    public class AbstractFunction{
        //AbstractFunction類(lèi)的主方法
        public static void main(String args[]){
            System.out.println("不能創(chuàng)建抽象類(lèi)Mankind和People的對(duì)象!");
            System.out.println("");

            Person man = new Person("男人");
            Person woman = new Person("女人");
            System.out.println(man);

            man.closing();
            man.food();
            man.shelter();
            man.transportation();
            System.out.println("  ");

            System.out.println(woman);
            woman.closing();
            woman.food();
            women.transportation();
        }
    }//AbstractFunction 類(lèi)結(jié)束


    最終方法
        使用關(guān)鍵字final聲明的成員方法稱(chēng)為最終方法。最終方法的功能和內(nèi)部語(yǔ)句不能在被更改,也就是說(shuō)該方法不能貝當(dāng)前類(lèi)的子類(lèi)重新定義。最終方法使得子類(lèi)不能重新定義與父類(lèi)同名的方法,而只能使用從負(fù)累繼承來(lái)的方法,從而防止了子類(lèi)對(duì)父類(lèi)一些方法的錯(cuò)誤定義,保證了程序的安全性和正確性。


    本地方法
        。。。。。。。。。。。。。。

    posted @ 2008-08-01 20:49 程序手記 閱讀(2099) | 評(píng)論 (4)編輯 收藏

    JAVA基礎(chǔ)(JAVA 執(zhí)行環(huán)境) 第一天

    JAVA程序有3中執(zhí)行環(huán)境。

    (1)能夠單獨(dú)運(yùn)行的程序,稱(chēng)為Java Application(Java應(yīng)用程序)。

    (2)在Internet瀏覽器中運(yùn)行的程序,稱(chēng)為 Java Applet(JAVA小用用程序)。Applet是一個(gè)在WEB瀏覽器內(nèi)部運(yùn)行的小應(yīng)用程序,需要WEB瀏覽器的支持。

    (3)在WEB服務(wù)器端運(yùn)行的程序,稱(chēng)為Java Servlet。Servlet實(shí)際上是運(yùn)行在WEB服務(wù)器上的應(yīng)用程序,它與協(xié)議和平臺(tái)無(wú)關(guān)。Java Servlet可以動(dòng)態(tài)地?cái)U(kuò)張WEB服務(wù)器的能力,并采用輕輕偶/想用模式提供WEB服務(wù)。目前SUN公司開(kāi)發(fā)的JSP技術(shù),JSP是JAVA SERVER PAGE的所寫(xiě),悅來(lái)越得到廣泛的應(yīng)用。Java Servlet可以與JSP進(jìn)行交互,從而為開(kāi)發(fā)WEB服務(wù)提供優(yōu)秀的解決方案。

    posted @ 2008-08-01 20:48 程序手記 閱讀(1140) | 評(píng)論 (0)編輯 收藏

    J2SE基礎(chǔ)(JAVA的常用包) 第一天

    JAVA提供了強(qiáng)大的應(yīng)用程序接口,既JAVA類(lèi)庫(kù)。他包含大量已經(jīng)設(shè)計(jì)好的工具類(lèi),幫助程序員進(jìn)行字符串處理、繪圖、數(shù)學(xué)計(jì)算和網(wǎng)絡(luò)應(yīng)用等方面的工作。下面簡(jiǎn)單介紹JAVA核心類(lèi)庫(kù)中常用的組建包。

    1.java.lang包

        在所有的JAVA API類(lèi)庫(kù)中,JAVA.LANG包是最重要的,它提供了JAVA語(yǔ)言的核心類(lèi)庫(kù),包含了運(yùn)行JAVA程序必不可少的系統(tǒng)類(lèi),如:基本數(shù)據(jù)類(lèi)型、基本數(shù)學(xué)函數(shù)、字符串處理、線程管理和異常處理類(lèi)等。運(yùn)行JAVA程序時(shí),系統(tǒng)會(huì)自動(dòng)加載JAVA.LANG包,既這個(gè)包的加載是默認(rèn)的。

    2.java.io包

        JAVA.IO包提供了一系列用來(lái)讀寫(xiě)文件或其他的輸入輸出流。其中有基本輸入/輸出類(lèi)、緩存流類(lèi)、比特?cái)?shù)組玉字符串流類(lèi)、數(shù)據(jù)流類(lèi)、文件流類(lèi)、管道類(lèi)、流連接類(lèi)和異常類(lèi)等。

    3.java.util包

        java.util包提供了JAVA語(yǔ)言中的一些低級(jí)的實(shí)用工具,如數(shù)據(jù)結(jié)構(gòu)類(lèi)、日期類(lèi)、隨機(jī)數(shù)類(lèi)、屬性類(lèi)、觀測(cè)類(lèi)和異常類(lèi)等。

    4.java.awt包

        java.awt包是JAVA語(yǔ)言用來(lái)構(gòu)建圖形用戶界面(GUI)的類(lèi)庫(kù),包括許多界面元素和資源。JAVA.AWT包提供JAVA語(yǔ)言中的圖形類(lèi)、組成類(lèi)、容器類(lèi)、排列類(lèi)、幾何類(lèi)、事件類(lèi)和工具類(lèi)等。

    5.java.net包

        JAVA.NET包包含一些玉網(wǎng)絡(luò)相關(guān)的類(lèi)和接口,以方便應(yīng)用程序在網(wǎng)絡(luò)上傳輸信息。如主機(jī)名解析類(lèi)、實(shí)現(xiàn)套接字通信的Socket類(lèi)和ServerSocket類(lèi)、資源定位器(URL)類(lèi)等。

    6.java.applet包

        java.applet包是用來(lái)實(shí)現(xiàn)運(yùn)行于Internet瀏覽器中的JAVA APPLET的工具類(lèi)庫(kù)。它包含于產(chǎn)生Applet的類(lèi)和用于Applet通信的類(lèi)。Applet類(lèi)稱(chēng)為小應(yīng)用程序類(lèi),通常所說(shuō)的Applet程序必須集成該類(lèi),Applet是一種專(zhuān)門(mén)化的面板,需要潛入到HTML網(wǎng)頁(yè)中,由與JAVA語(yǔ)言兼容的瀏覽器執(zhí)行。

    7.JAVA.AWT.EVENT包

        java.awt.event包是對(duì)JDK 1.0版本中原有的Event類(lèi)的一個(gè)擴(kuò)充,它使得程序可以用不同的方式來(lái)處理不同類(lèi)型的事件,該包中定義了許多不同類(lèi)型的事件監(jiān)聽(tīng)器類(lèi),使每個(gè)圖形界面元素本身可以處理它上面的事件。

        除了上述的常用JAVA組件包外,JAVA類(lèi)庫(kù)中還有很多實(shí)用的組件包,并且還在不斷地?cái)U(kuò)充,請(qǐng)查看相關(guān)的JAVA文檔。

    posted @ 2008-08-01 20:47 程序手記 閱讀(2130) | 評(píng)論 (5)編輯 收藏

    僅列出標(biāo)題
    共2頁(yè): 上一頁(yè) 1 2 
    主站蜘蛛池模板: 中文字幕精品亚洲无线码一区 | 久久精品国产亚洲AV忘忧草18| 久久精品国产亚洲香蕉| 亚洲精品狼友在线播放| 在线a亚洲v天堂网2019无码| 中文字幕亚洲一区二区三区| 亚洲精品乱码久久久久久中文字幕 | 97在线免费观看视频| a级片免费在线观看| 成全动漫视频在线观看免费高清版下载| 两个人日本WWW免费版| 日韩免费高清播放器| 一个人免费视频观看在线www| 国产一级淫片a免费播放口| 久久大香香蕉国产免费网站| 69av免费视频| 成年网站免费视频A在线双飞| 91免费资源网站入口| 国产高清在线免费| 亚洲成a人一区二区三区| 青青草原亚洲视频| 亚洲尹人九九大色香蕉网站 | 亚洲国产精品日韩| 亚洲国产无套无码av电影| 亚洲av鲁丝一区二区三区| 久久精品国产亚洲av麻豆图片 | 亚洲国产美女福利直播秀一区二区| 亚洲人成在线播放| 国产精品亚洲av色欲三区| 久久不见久久见免费影院www日本| 免费人成在线观看视频高潮| 在线观看免费视频资源| 女性无套免费网站在线看| 亚洲国产一级在线观看 | 国产v片免费播放| 亚洲色欲久久久综合网东京热 | av在线亚洲欧洲日产一区二区| 亚洲国产精品无码专区在线观看 | 国产AV无码专区亚洲Av| 亚洲精品综合在线影院| 国产免费区在线观看十分钟|