亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

計算機二級JAVA考點解析

時間:2024-10-12 15:47:38 計算機等級 我要投稿

計算機二級JAVA考點解析

  Java看起來設(shè)計得很像C++,但是為了使語言小和容易熟悉,設(shè)計者們把C++語言中許多可用的特征去掉了,這些特征是一般程序員很少使用的。下面是關(guān)于計算機二級JAVA考點解析,希望大家認真閱讀!

  類是Java語言面向?qū)ο缶幊痰幕驹,它定義了一個對象的結(jié)構(gòu)和行為。在Java程序里,你要表達的概念封裝在某個類里。一個類定義了一個對象的結(jié)構(gòu)和它的功能接口,功能接口稱為成員函數(shù)。當(dāng)Java程序運行時,系統(tǒng)用類的定義創(chuàng)建類的實例,類的實例是真正的對象。類定義的一般形式如下:

  classclassnameextendssuperclassname{typeinstance-variable1;typeinstance-variable2;.................................typeinstance-variableN;typemethodname1(parameter-list){method-body;}typemethodname2(parameter-list){method-body;}....................................................typemethodnameN(parameter-list){method-body;}}

  這里,classname和superclassname是合法的標識符。關(guān)鍵詞extends用來表明classname是superclassname派生的子類。有一個類叫做Object,它是所有Java類的根。如果你想定義Object的直接子類,你可以省略extends子句,編譯器會自動包含它。下面是一個簡單的類的定義。classUniversity{}

  5.1對象實例

  類名可以作為變量的類型來使用,如果一個變量的類型是某個類,那么它將指向這個類的實例,稱為對象實例。所有對象實例和它們的類型(某個類?copy;的子類的實例都是相容的。就象可以把byte型的值賦給int型的變量一樣,你可以把Object的子類的任何實例賦給一個Object型的變量。一個實例是類模板的單獨的拷貝,帶有自己的稱為實例變量的數(shù)據(jù)集。每個實例也可以作為一個對象。當(dāng)你定義一個變量的類型是某個類時,它的缺省值是null,null是Object的一個實例。對象null沒有值,它和整數(shù)0不同。下面這個例子中,聲明變量u的類型是類University。Universityu;這里,變量u的值是null。

  5.2實例變量

  Java通過在類定義的大括號里聲明變量來把數(shù)據(jù)封裝在一個類里。這里的變量稱為實例變量。下面的例子定義了一個叫做University的類,它有兩個實例變量:name和city。classUniversity{Stringname,city;}

  5.3new操作符

  操作符new用來生成一個類的實例,下面這個例子生成了類University的一個實例,存放在變量u中。

  Universityu=newUniversity();在此例中,變量u指向這個對象,但并不真正包含這個對象。你可以用多個變量指向同一個對象。下面的例子中,創(chuàng)建了一個University的對象,但創(chuàng)建了兩個指向它的變量。

  Universityu=newUniversity();Universityu2=u;

  對u2所指向的對象的任何改動都會對u所指向的對象起作用,因為它們是同一個對象。對u和u2的賦值只是把它們指向這個對象,既沒有分配內(nèi)存,也沒有復(fù)制這個對象的任何部分。對u的再賦值只是簡單地去掉了u和原來對象的聯(lián)系,并不影響對象本身,下面的例子說明了這種情況。

  Universityu=newUniversity();Universityu2=u;u=null;

  盡管u被賦值為null,u2仍指向原來由操作符new創(chuàng)建的對象。在前面的例子里,我們生成了一個對象并且指向了它兩次。這就允許兩個變量改變同一個對象。創(chuàng)建一個新的對象時,可直接對它的實例變量賦值。每個對象都有它所屬類的實例變量的拷貝,每個對象的實例變量都是和其他對象的實例變量分離的,所以改變一個對象的實例變量不會影響其他對象的實例變量。下面的例子創(chuàng)建了兩個University的對象,并對它們分別賦值:classTwoUniversity{publicstaticvoidmain(Stringargs[]){Universityu1=newUniversity();Universityu2=newUniversity();u1.name=\"北?copy;大學(xué)\";u1.city=\"北?copy;\";u2.name=\"清華大學(xué)\";u2.city=\"北?copy;\";System.out.println(\"大學(xué):\"+u1.name+\"城市:\"+u1.city);System.out.println(\"大學(xué):\"+u2.name+\"城市:\"+u2.city);}}這個例子創(chuàng)建了兩個University的對象,并且對它們的name、city分別賦了不同的值,這說明這兩個對象是真正分離的。下面是該程序運行后的輸出結(jié)果。C:\\>javaTwoUniversity大學(xué):北?copy;大學(xué)城市:北?copy;大學(xué):清華大學(xué)城市:北?copy;

  5.4點(.?copy;操作符點(.?copy;操作符用來接收一個對象的實例變量和成員函數(shù)。下面是用點操作符來接收實例變量的一般形式。objectreference.variablename

  這里objectreference是一個對象實例,variablename是這個對象里你想接收的實例變量。下面的程序段說明了怎樣用點操作符來給實例變量賦值。

  u.name=\"北?copy;大學(xué)\";u.city=\"北?copy;\";下面說明怎樣用點操作符來得到實例變量的值。System.out.println(\"大學(xué):\"+u.name+\"城市:\"+u.city);通過向類University里加入一個成員函數(shù)main,我們創(chuàng)建了一個完整的例子,它使用了new操作符來創(chuàng)建一個University,用點操作符來賦值,然后打印結(jié)果。classUniversity{Stringname,city;publicstaticvoidmain(Stringargs[]){Universityu=newUniversity();u.name=\"北?copy;大學(xué)\";u.city=\"北?copy;\";System.out.println(\"大學(xué):\"+u.name+\"城市:\"+u.city);}}

  運行這個程序后,就會得到下面的結(jié)果。C:\\>javaUniversity大學(xué):北?copy;大學(xué)城市:北?copy;

  5.5成員函數(shù)定義

  成員函數(shù),是類的功能接口,是類定義里的一個子程序,在類的定義里和實例變量處于同一級別。你必須通過一個類的實例來調(diào)用成員函數(shù)。成員函數(shù)可以不用點操作符而直接使用實例變量。成員函數(shù)帶有輸入?yún)?shù),具有

  某種類型的返回值。成員函數(shù)定義的一般形式如下:typemethodname(formal-parameter-list){method-body;}這里type指的是成員函數(shù)的返回值的類型,如果沒有返回值,就用無值(void?copy;類型。methodname可以是任何合法的標識符,但不能與當(dāng)前的類名相同。formal-parameter-list是用逗號分隔的類型、標識符對的序列。如果沒有參數(shù),括號里就是空的。還是用我們的University的例子,下面的成員函數(shù)用來初始化兩個實例變量。成員函數(shù)是在類的大括號?reg;內(nèi)定義的,和實例變量所處的范圍相同。classUniversity{Stringname,city;voidinit(Stringa,Stringb){name=a;city=b;}}

  注意,我們這里直接給name和city賦值,而沒有象以前那樣用u1.name。這是因為每個成員函數(shù)都在類的個別實例內(nèi)執(zhí)行。我們創(chuàng)建的類的實例具有它自己的實例變量,所以成員函數(shù)可直接使用它們。

  5.6成員函數(shù)調(diào)用

  可以用點(.?copy;操作符來調(diào)用一個類的實例的成員函數(shù)。成員函數(shù)調(diào)用的一般形式如下:objectreference.methodname(parameter-list);這里,objectreference是指向某個對象的變量,methodname是objectreference所屬類的一個成員函數(shù),parameter-list是用逗號分隔的變量或表達式的序列,它們要與該成員函數(shù)的定義的參數(shù)個數(shù)及類型匹配。在這個例子里,我們可以對任何University對象調(diào)用成員函數(shù)init來給name和city賦值。下面的程序段說明了怎樣完成這個工作。Universityu=newUniversity();u.init(\"北?copy;大學(xué)\",\"北?copy;\");這個例子創(chuàng)建了University的一個實例,存放在u中。通過點操作符來調(diào)用這個實例的init成員函數(shù),把\"北?copy;大學(xué)\"和\"北?copy;\"分別傳遞給參數(shù)a和b。在init成員函數(shù)內(nèi)部,name和city直接指向u所指向的對象的實例變量。把name賦值為\"北?copy;大學(xué)\",city賦值為\"北?copy;\",然后返回。在這個例子里,init被定義為無值(void?copy;返回類型。在進行這個成員函數(shù)調(diào)用后,u指向這個name值和city值改變了的University對象。

  5.7thisJava有一個特殊的實例值叫this,它用來在一個成員函數(shù)內(nèi)部指向當(dāng)前的對象。在前面的例子里,我們調(diào)用u.init,一?copy;進入init成員函數(shù)內(nèi)部,this就會指向u所指向的對象。在Java里,在同一個范圍定義兩個相同名字的局部變

  量是不可以的。有趣的是,局部變量、成員函數(shù)的參數(shù)可以和實例變量的名字相同。前面我們沒有用name和city作為成員函數(shù)init的參數(shù)名字,因為這樣它們在成員函數(shù)的范圍里就把實例變量name和city隱藏了,即name指向參數(shù)name,隱藏了實例變量name。this讓我們可以直接指向?qū)ο蟊旧。下面是另一個版本的init,用name和city作為參數(shù)名字,用this來接收當(dāng)前對象的實例變量。

  voidinit(Stringname,Stringcity){this.name=name;this.city=city;}下面是帶有新的init初始成員函數(shù)的TwoUniversity例子。classUniversity{Stringname,city;voidinit(Stringname,Stringcity){this.name=name;this.city=city;}}classTwoUniversityInit{publicstaticvoidmain(Stringargs[]){Universityu1=newUniversity();Universityu2=newUniversity();u1.init(\"北?copy;大學(xué)\",\"北?copy;\");u2.init(\"清華大學(xué)\",\"北?copy;\");System.out.println(\"大學(xué):\"+u1.name+\"城市:\"+u1.city);system.out.println(\"大學(xué):\"+u2.name+\"城市:\"+u2.city);}}

  5.8構(gòu)造函數(shù)(Constructor)

  每創(chuàng)建一個類的實例都去初始化它的所有變量是乏味的。如果一個對象在被創(chuàng)建時就完成了所有的初始工作,將是簡單的和簡潔的。因此,Java在類里提?copy了一個特殊的成員函數(shù),叫做構(gòu)造函數(shù)(Constructor?copy;。一個構(gòu)造函數(shù)是對象被創(chuàng)建時初始對象的成員函數(shù)。它具有和它所在的類完全一樣的名字。一?copy;定義好一個構(gòu)造函數(shù),創(chuàng)建對象時就會自動調(diào)用它。構(gòu)造函數(shù)沒有返回類型,即使是void類型也沒有。這是因為一個類的構(gòu)造函數(shù)的返回值的類型就是這個類本身。構(gòu)造函數(shù)的任務(wù)是初始一個對象的內(nèi)部狀態(tài),所以用new操作符創(chuàng)建一個實例后,立刻就會得到一個清楚、可用的對象。下面這個例子里,用構(gòu)造函數(shù)取代了成員函數(shù)init。

  classUniversity{Stringname,city;University(Stringname,Stringcity)

  {this.name=name;this.city=city;}}classUniversityCreate{publicstaticvoidmain(Stringargs[]){Universityu=newUniversity(\"北?copy;大學(xué)\",\"北?copy;\");System.out.println(\"大學(xué):\"+u.name+\"城市:\"+u.city);}}new語句中類名后的參數(shù)是傳給構(gòu)造函數(shù)的。

  5.9成員函數(shù)重載

  對于幾個意義相近的成員函數(shù),有時使用相同的名字便于理解。因此,Java語言實現(xiàn)了成員函數(shù)重載,即可以創(chuàng)建幾個名字相同、參數(shù)不同的成員函數(shù)。成員函數(shù)重載提?copy;了Java的多態(tài)行為。下面的例子用到了重載。classUniversity{Stringname,city;University(Stringname,Stringcity){this.name=name;this.city=city;}University(){name=\"北?copy;大學(xué)\";city=\"北?copy;\";}}

  classUniversityCreateAlt{publicstaticvoidmain(Stringargs[]){Universityu=newUniversity();System.out.println(\"大學(xué):\"+u.name+\"城市:\"+u.city);}}

  這個例子創(chuàng)建了一個University對象,調(diào)用了第二個構(gòu)造函數(shù)。下面是它的運行結(jié)果。

  C:\\>javaUniversityCreateAlt大學(xué):北?copy;大學(xué)城市:北?copy;一個構(gòu)造函數(shù)可以調(diào)用另一個構(gòu)造函數(shù)來創(chuàng)建實例。例如:

  classUniversity{Stringname,city;University(Stringname,Stringcity)

  {this.name=name;this.city=city;}University(){this(\"北?copy;大學(xué)\",\"北?copy;\");}}

  第二個構(gòu)造函數(shù)調(diào)用了第一個構(gòu)造函數(shù)來完成實例的初始化。你也可以用重載來創(chuàng)建一般的成員函數(shù)。下面這個例子里有University類的兩個版本的samecity成員函數(shù)。samecity判斷一個大學(xué)是否在一個城市里或一個大學(xué)和另一個大學(xué)是否在同一個城市里。一個成員函數(shù)用city作參數(shù),另一個用University對象作參數(shù)。

  classUniversity{Stringname,city;University(Stringname,Stringcity)

  {this.name=name;this.city=city;}booleansamecity(Stringcity){if

  (city.equals(this.city))returntrue;elsereturnfalse;}boolean

  samecity(Universityu){returnsamecity(u.city);}}

  classUniversityCity{publicstaticvoidmain(Stringargs[]){String

  city=\"上海\";Universityu1=newUniversity(\"北?copy;大學(xué)\",\"

  北?copy;\");Universityu2=newUniversity(\"清華大學(xué)\",\"北?copy;\");

  System.out.println(\"u1=\"+u1.name+\",\"+u1.city);

  System.out.println(\"u2=\"+u2.name+\",\"+u2.city);

  System.out.println(\"city=\"+city);

  System.out.println(\"u1.samecity(u2)=\"+u1.samecity(u2));

  System.out.println(\"u1.samecity(city)=\"+u1.samecity(city));}}

  下面是該程序的運行結(jié)果。

  C:\\>javaUniversityCityu1=北?copy;大學(xué),北?copy;u2=清華大學(xué),北?copy;city=上海u1.samecity(u2)=trueu1.samecity(city)=false

  5.10繼承

  第二個基本的面向?qū)ο髾C制是繼承。繼承是關(guān)于有層次關(guān)系的類?reg;間的概念。一個類的后代可以繼承它的祖先的所有變量和成員函數(shù),就象創(chuàng)建自己的一樣。一個類的直接父親叫做它的超類(superclass?copy;。一?copy;你創(chuàng)建了一個象University這樣的類,創(chuàng)建它的子類是很簡單的。一個類的子類是它的繼承了實例變量和成員函數(shù)的特殊的版本。在這個例子里,我們把University類派生為含有叫做country的第三個元素的子類。

  classUniversityWorldextendsUniversity{Stringcountry;UniversityWorld(Stringname,Stringcity,Stringcountry){this.name=name;this.city=city;this.country=country;}UniversityWorld(){this(\"北?copy;大學(xué)\",\"北?copy;\",\"中國\");}}

  關(guān)鍵詞extends用來表示我們要創(chuàng)建University的子類。name和city不需再在UniversityWorld中進行聲明,因為它們是從University中繼承的。Java允許在UniversityWorld中聲明變量name和city,但這會隱藏University中的name和city,是與使用子類的目的相矛盾的,應(yīng)當(dāng)避免。在UniversityWorld的實例中name、city和country的地位是一樣的。

  5.11super在UniversityWorld的例子里,有一段代碼和它的超類University的重復(fù),這段代碼是初始化name和city的,this.name=name;this.city=city;就象在University例子中用this指向第一個構(gòu)造函數(shù)一樣,在Java里有另一個變量叫做super,它直接指向超類的構(gòu)造函數(shù)。下面這個例子用super來初始化變量name和city,然后打印出這個對象的內(nèi)容。

  classUniversityWorldextendsUniversity{Stringcountry;UniversityWorld(Stringname,Stringcity,Stringcountry){super(name,city);//調(diào)用了構(gòu)造函數(shù)University(name,city)this.country=country;}publicstaticvoidmain(Stringargs[]){UniversityWorldu=newUniversityWorld(\"北?copy;大學(xué)\",\"北?copy;\",\"中國\");System.out.println(\"大學(xué):\"+u.name+\"城市:\"+u.city+\"國家:\"+u.country);}}

【計算機二級JAVA考點解析】相關(guān)文章:

關(guān)于計算機二級JAVA考點解析07-14

2017年計算機二級JAVA考點解析08-03

2017年計算機二級C語言考點解析08-27

計算機二級java上機試題題庫07-13

計算機二級Java考試及答案201706-11

計算機二級C語言考點盤點07-28

計算機二級考試MSOffice核心考點08-26

計算機二級MS Office高頻考點01-23

計算機二級office基本考點匯總09-29