java中的一些概念總結(jié)_第1頁(yè)
java中的一些概念總結(jié)_第2頁(yè)
java中的一些概念總結(jié)_第3頁(yè)
java中的一些概念總結(jié)_第4頁(yè)
java中的一些概念總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

java中的一些概念總結(jié)【學(xué)習(xí)心得】

[java中的包裝類】

什么叫做包裝類?

在java的設(shè)計(jì)中提倡一種思想:"一切皆對(duì)象",那么這樣一來(lái)就出現(xiàn)了一個(gè)問(wèn)題?從

數(shù)據(jù)類型的劃分中我們知道java中的數(shù)據(jù)類型可以分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,但

是基本數(shù)據(jù)類型怎么能稱作是對(duì)象呢?此時(shí)我們需要將基本數(shù)據(jù)類型進(jìn)行包裝,將8種基

本數(shù)據(jù)類型變成一個(gè)類的形式,這就是包裝類的作用。

例如把int包裝成一個(gè)類Integer,這樣就可以以類的形式操作基本數(shù)據(jù)類型了。

其中:

Integer,Byte、Float、Double,Short,Long者B屬于Number類的子類,Numb

er類本身提供了一系列的返回6種基本數(shù)據(jù)類型的操作。

Character和Boolean是Object類的直接子類。

Number類:

一個(gè)抽象類,主要作用是將包裝類中的內(nèi)容變成基本數(shù)據(jù)類型,主要方法如下:

bytebyteValueO——以byte形式返回指定的數(shù)值。

abstractdoubledoubleValue()-----以double形式返回指定的數(shù)值。

abstractfloatfloatValue()——以float形式返回指定的數(shù)值。

abstractintintValue()-----以int形式返回指定的數(shù)值。

abstractlonglongValueQ-----以long形式返回指定的數(shù)值。

shortshortValue()-----以short形式返回指定的數(shù)值。

裝箱——將基本數(shù)據(jù)類型變成包裝類

拆箱——將包裝類變?yōu)榛緮?shù)據(jù)類型

例程1:

publicclassDemo01{

publicstaticvoidmain(String[]args){

intx=30;//基本數(shù)據(jù)類型

Integeri=new工nteger(x);//裝箱一將基本數(shù)據(jù)類型變成包裝類

inttemp=Value();—將包裝類變?yōu)榛緮?shù)據(jù)類型

System.out.printIn(temp);

7

floaty=30.9f;//基本數(shù)據(jù)類型

Floatf=newFloat(y);//裝箱一將基本數(shù)據(jù)類型變成包裝類

floattem=f.floatvalue();—將包裝類變?yōu)榛緮?shù)據(jù)類型

System.out.printin(tem);

12:

booleanb=true;//基本數(shù)據(jù)類型

Booleanbb=newBoolean(b);//裝箱一將基本數(shù)據(jù)類型變成包裝類

booleant=bb.valueOf(b);〃拆箱一將包裝類變?yōu)榛緮?shù)據(jù)類型

System.out.printin(t);

}

18)

控制臺(tái)輸出:

30

30.9

true

在JDK1.5之前,對(duì)于程序本身來(lái)說(shuō),包裝類是不能進(jìn)行"+"、……運(yùn)算,因?yàn)槟?/p>

是一個(gè)類。但是在JDK1.5之后對(duì)程序的包裝類功能進(jìn)行了改變,增加了自動(dòng)裝箱與拆箱機(jī)

制,而且也可以使用包裝類進(jìn)行數(shù)字運(yùn)算。

例程2:

publicclassDemo02{

publicstaticvoidmain(String[]args){

Integerii=10;//自動(dòng)裝箱為工nteger

Floatff=3.3f;//自動(dòng)裝箱為Float

Booleanboo=false;//自動(dòng)裝箱為Boolean

ii++;//直接對(duì)裝箱后的類進(jìn)行操作

ff一;

boo=!boo;

10

intxx=ii;〃自動(dòng)拆箱為int

floatyy=ff;//自動(dòng)拆箱為float

booleanbool=boo;//自動(dòng)拆箱為boolean

14

System.out.printin(xx)

System.out.printin(yy)

17System.out.printin(bool);

)

19}

控制臺(tái)輸出:

11

2.3

true

在包裝類中還有一個(gè)最大的特點(diǎn):就是可以將字符串變?yōu)橹付ǖ臄?shù)據(jù)類型。

例程3:

publicclassDemo03{

publicstaticvoidmain(String[]args){

Stringstrl="99";〃由數(shù)字組成的字符串

Stringstr2="56.8”;

Stringstr3="true";

System.out.printIn(Integer.parselnt(strl))〃/轉(zhuǎn)化為相應(yīng)的類型輸出

System.out.printin(Float.parseFloat(str2));

System.out.printin(Boolean.parseBoolean(str3));

}

11}

控制臺(tái)輸出:

99

56.8

true

方法的參數(shù)或者返回類型也可以設(shè)置成響應(yīng)的包裝類。如下如所示:

voidtakeNumber(Integeri){}

intgiveNumber(){

returnx;

2014-12-08

JAVA

1101瀏覽12回答

最佳回答

2015-09-09

太厲害了,第一天,第一次的心態(tài),基本覺(jué)得以后做事的水平了

?湯宗

回復(fù)0

J蕭瀟暮雨(提問(wèn)者)

非常感謝!

【Object類】

在java中一切類都是以繼承的關(guān)系存在的?,F(xiàn)在假設(shè)定義了一個(gè)Person

{}類,如果一個(gè)類在定義的時(shí)候如果沒(méi)有默認(rèn)指明它的繼承關(guān)系,那么它默

認(rèn)繼承Object類,所以Person類的實(shí)際代碼是:

classPersonextendsObject{

Object類是所有類的父類。

Object類的構(gòu)造方法:publicObject()

Object類中的3個(gè)主要方法:

publicbooleanequals(Objectobj)----對(duì)象比較

publicinthashCode()-----取得hash碼

publicStringtoStringO----對(duì)象打印時(shí)調(diào)用

一個(gè)完整的類在定義的時(shí)候應(yīng)該重寫(xiě)Object類中的3個(gè)主要方法。

例程一:toString方法的使用

classDemo{//定義Demo類,實(shí)際上就是繼承了Object類

};

publicclassObjectDemoOl{

publicstaticvoidmain(Stringargs[]){

Demod=newDemo();//實(shí)例化Demo對(duì)象

System.out.printin("不力HtoString()輸出:”+d);

System,out.println("力口上toString()輸出:'*+d.toString());

)

);

控制臺(tái)輸出:

不力口toString。輸出:gpf.Demo@18fld7e

力口上toString。輸出:gpf.Demo@18fld7e

由此可見(jiàn),加與不加toString的結(jié)果是一樣的,也就證明了對(duì)象在打印的

時(shí)候一定會(huì)調(diào)用toString()方法,是默認(rèn)調(diào)用的。那么此時(shí)就可以利用此

特性完成類中信息的輸出。

例程二:重寫(xiě)toString方法,輸出類中的信息

classPerson{

privateStringname;//定義name屬性

privateintage;//定義ag一屬性

publicPerson(Stringname,intage){

=name;

this.age=age;

)

8OOverride

publicStringtoString(){

return"姓名:"++*';年齡:"+this.age;

)

);

publicclassObjectDemo02{

publicstaticvoidmain(Stringargs[]){

nn

Personper=newPerson(Tomf13);//實(shí)例化Person

System.out.printin("對(duì)象信息:,,+per);

)

);

控制臺(tái)輸出:對(duì)象信息:姓名:Tom;年齡:13

equals()方法:

equals()方法的主要功能是進(jìn)行對(duì)象的比較操作,String本身是Obje

ct類的子類,所以已經(jīng)重寫(xiě)了該方法。equals()方法的主要功能是完成對(duì)

象的比較的。

例程三:equals()方法比較對(duì)象。

-classPerson{

privateStringname;//定義name屬性

privateintage;//定義age屬性

publicPerson(Stringname,intage){

=name;

this.age=age;

)

?Override

publicbooleanequals(Objectobj){

if(this==obj){//地址相等

returntrue;//肯定是同一個(gè)對(duì)象

}

if(!(objinstanceofPerson)){//不是Person對(duì)象

returnfalse;

15}

Personper=(Person)obj;//向下轉(zhuǎn)型

if(.equals()&&per.age==this.age){

returntrue;//依次比較內(nèi)容

}else{

returnfalse;

}

}

230Override

publicStringtoStringO{

return"姓名:"++";年齡:"+this.age;

)

27)

publicclassObjectDemo03{

publicstaticvoidmain(Stringargs[]){

Personperl=newPerson(nRubbyn,30);//實(shí)例化Person

Personper2=newPerson(nRubbyn,30);//實(shí)例化Person

System.out.printIn(perl.equals(per2)一個(gè)人!”:"不是同一個(gè)

人!”)

System.out.printin(perl.equals("hello")?”是同一個(gè)人!”:“不是同一

個(gè)人!”);

36

)

}

控制臺(tái)輸出:

是同一個(gè)人!

不是同一個(gè)人!

Object類是所有類的父類,則所有類的對(duì)象都可以使用Object接收,但

是Object不光可以接收對(duì)象,還可以接收任意的引用數(shù)據(jù)類型。

例程四:使用Object接收接口實(shí)例

interfaceA{

publicStringgetInfo();

3}

classBimplementsA{

50Override

publicStringgetlnfo(){//覆寫(xiě)方法

return"Hell。World!!!n;

)

9}

publicclassObjectDemo04{

publicstaticvoidmain(Stringargs[]){

Aa=newB();//向上轉(zhuǎn)型,為接口實(shí)例化

Objectobj=a;//使用Object接收,向上轉(zhuǎn)型

Ax=(A)obj;//向下轉(zhuǎn)型

System.out.printin(x.getlnfo());

)

17}

控制臺(tái)輸出:

HelloWorld!!!

例程五:使用Object接收數(shù)組

publicclassObjectDemo05{

publicstaticvoidmain(Stringargs[]){

inttemp[]={1,3,5,7,9};//定義數(shù)組

Objectobj=temp;//使用Object接收數(shù)組

print(obj);

)

publicstaticvoidprint(Objecto){

if(oinstanceofint[]){//判斷是否是整型數(shù)組

intx[]=(int[])o;

for(inti=0;i<x.length;i++){

System.out.print(x[i]+n\tn);

)

)

}

15}

控制臺(tái)輸出:13579

總結(jié):Object類是所有類的父類,只要是引用數(shù)據(jù)類型,都可以使用Obje

ct類進(jìn)行接收

對(duì)象在進(jìn)行向下轉(zhuǎn)型之前,一定會(huì)發(fā)生向上轉(zhuǎn)型(instanceof關(guān)鍵字)

2014-12-09

回復(fù)1

瀟暮雨

【static關(guān)鍵字】

非static關(guān)鍵字聲明的屬性和方法,每個(gè)對(duì)象都占有各自的內(nèi)容。如果現(xiàn)

在希望一個(gè)屬性和被該類的所有對(duì)象共同擁有,則可以將其聲明為static類

型,聲明為static類型的屬性或者方法之后,此屬性或者方法也稱為靜態(tài)變

量和方法,可以由類名直接調(diào)用。

使用static聲明屬性:

static可以聲明全局屬性

classPerson{//定義Person類

Stringname;//定義name屬性,暫時(shí)不封裝

intage;//定義age屬性,暫時(shí)不封裝

Stringcountry="A城";//定義城市屬性,有默認(rèn)值

publicPerson(Stringname,intage){

=name;

this.age=age;

}

publicvoidinfo(){//得到信息

System.out.printin("姓名:"++”,年齡:

"+this.age+”,城市:"+country);

}

13)

publicclassStaticDemoOl{

publicstaticvoidmain(Stringargs[]){

Personpl=newPerson(“張三”,30);//實(shí)例化對(duì)象

Personp2=newPerson("李四”,31);//實(shí)例化對(duì)象

Personp3=newPerson("王五”,32);//實(shí)例化對(duì)象

19:

();

();

();

}

}

控制臺(tái)輸出:

姓名:張三,年齡:30,城市:A城

姓名:李四,年齡:31,城市:A城

姓名:王五,年齡:32,城市:A城

以上代碼確實(shí)實(shí)現(xiàn)了一些基本功能,但是此時(shí)的城市名稱不叫"A城"而

改成了"B城",如果現(xiàn)在已經(jīng)產(chǎn)生了5000個(gè)對(duì)象,那么就意味著此時(shí)就

需要修改5000個(gè)對(duì)象中的country屬性。所以此時(shí)最好使用static關(guān)鍵字

聲明屬性。代碼改為:

classPerson{//定義Person類

Stringname;//定義name屬性,暫時(shí)不封裝

intage;//定義age屬性,暫時(shí)不封裝

staticStringcountry="A城”;//定義城「廿屬性,有默認(rèn)值,static

publicPerson(Stringname,intage){

=name;

this.age=age;

)

publicvoidinfo(){//得到信息

System.out.printIn(*'++”,年齡:

"+this.age+",城市:**+country);

)

13}

publicclassStaticDemo02{

publicstaticvoidmain(Stringargs[]){

Personpl=newPerson(“張三”,30);//實(shí)例化對(duì)象

Personp2=newPerson("李四”,31);//實(shí)例化對(duì)象

Personp3=newPerson("王五”,32);//實(shí)例化對(duì)象

System.out.printIn(n--------------修改之前----------------“);

();

();

();

Person.country="B城";//修改static屬性,使用類名

System.out.printin(H--------------修改之后----------------“);

();

();

();

)

)

控制臺(tái)輸出:

-------------修改之前------------

姓名:張三,年齡:30,城市:A城

姓名:李四,年齡:31,城市:A城

姓名:王五,年齡:32,城市:A城

-------------修改之后------------

姓名:張三,年齡:30,城市:B城

姓名:李四,年齡:31,城市:B城

姓名:王五,年齡:32,城市:B城

由以上例程可以看出:修改一個(gè)對(duì)象中的country屬性,則其他對(duì)象的c

ountry屬性也全部被改變,證明該屬性是該類的所有對(duì)象所共享的。

每一個(gè)對(duì)象都有自己各自的堆??臻g,堆內(nèi)存中保存著各自的屬性,但是

所有的static屬性則是保存在了全局?jǐn)?shù)據(jù)區(qū)中,所有的對(duì)象共同指向全局?jǐn)?shù)

據(jù)區(qū)中的一個(gè)內(nèi)容,所以當(dāng)一個(gè)對(duì)象修改之后,所有對(duì)象的該屬性將全部被

改變。

PS:java中內(nèi)存區(qū)域的劃分:

棧內(nèi)存:保存對(duì)象的名稱(訪問(wèn)的堆內(nèi)存的地址)

堆內(nèi)存:保存每個(gè)對(duì)象的具體屬性

全局?jǐn)?shù)據(jù)區(qū):保存static類型的數(shù)據(jù)

全局代碼區(qū):保存所有方法的定義

一般使用static屬性的時(shí)候,最好使用類名稱直接調(diào)用,采用"類名.屬性"

的形式進(jìn)行調(diào)用。

同理,可以使用static關(guān)鍵字聲明方法。——此方法可以使用static關(guān)鍵

字直接調(diào)用【注意:不能調(diào)用非static修飾的屬性和方法】。

classPerson{//定義Person類

privatestaticStringcountry="A城”;//定義靜態(tài)屬性

privateStringname=nHellon;

publicstaticvoidsFun(Stringc){

System.out.printin(nname="+name);//錯(cuò)誤,不能調(diào)用非static

6屬性

fun();//錯(cuò)誤,不能調(diào)用非static方法

}

publicvoidfun(){

System.out.printin(nWorldH);

}

}

以上代碼編譯時(shí)將出現(xiàn)錯(cuò)誤:

錯(cuò)誤:無(wú)法從靜態(tài)上下文中引用非靜態(tài)變量name

因?yàn)閟tatic屬性和方法可以在對(duì)象沒(méi)有進(jìn)行實(shí)例化的時(shí)候直接調(diào)用。

static關(guān)鍵字的實(shí)際應(yīng)用:

l.static關(guān)鍵字是所有對(duì)象所共享的,那么就可以使用static屬性來(lái)統(tǒng)計(jì)

一個(gè)類到底產(chǎn)生了多少個(gè)實(shí)例化對(duì)象?!久恳粋€(gè)對(duì)象在實(shí)例化的時(shí)候就必須

調(diào)用構(gòu)造方法,在構(gòu)造方法中添加一個(gè)static屬性】

2.可以使用static關(guān)鍵字進(jìn)行自動(dòng)編名操作。

例程一:使用static屬性實(shí)現(xiàn)對(duì)象計(jì)數(shù)器

1classDemo{//定義Demo類

privatestaticintcount=0;//所有對(duì)象共享此屬性

publicDemo(){

count++;

//只要有對(duì)象產(chǎn)生就應(yīng)該自增

System.out.printin("產(chǎn)生了"+count+“個(gè)對(duì)象!”);

)

9}

publicclassStaticDemo06{

publicstaticvoidmain(Stringargs[]){

newDemo();//增加新對(duì)象

newDemo();//增加新對(duì)象

newDemo();//增加新對(duì)象

)

)

控制臺(tái)輸出:

產(chǎn)生了1個(gè)對(duì)象!

產(chǎn)生了2個(gè)對(duì)象!

產(chǎn)生了3個(gè)對(duì)象!

例程二:使用static關(guān)鍵字進(jìn)行自動(dòng)編名操作:

1classDemo{

privateStringname;//保存名字

privatestaticintcount=0;//所有對(duì)象共享此屬性

publicDemo(){

count++;//

有對(duì)象產(chǎn)生就自增

="default-”+count+**.javan;//

自動(dòng)進(jìn)行編名操作

)

publicDemo(Stringname){

name;//可以通

過(guò)構(gòu)造賦值

)

publicStringgetName(){//取得姓名

;

}

20)

publicclassStaticDemo07{

publicstaticvoidmain(Stringargs[]){

System.out.printIn(newDemo().getName());

System.out.printIn(newDemo(nhello.javan).getName

0);

System.out.printIn(newDemo().getName());

System.out.printin(newDemo

(nwelcome.java1').getName());

System.out.printIn(newDemo().getName());

)

}

控制臺(tái)輸出:

default-l.java

hello.java

default-2.java

welcome.java

default-3.java

由以上程序可以得出凡是沒(méi)有給出默認(rèn)的文件名的,就使用默認(rèn)的名字,

并且依次遞增,指定名字的就不會(huì)使用默認(rèn)的名字。

【理解main方法】

publicstaticvoidmain(Stringargs[])

static——靜態(tài)方法,可以由類名稱直接調(diào)用,執(zhí)行java程序的時(shí)候是j

ava類名稱

void——主方法是程序的起點(diǎn),不需要返回值

Stringargs[]一輸入的參數(shù),參數(shù)傳遞形式:java類名稱參數(shù)1參

數(shù)2……

例如:一個(gè)程序在運(yùn)行的時(shí)候要求參數(shù)的個(gè)數(shù)必須為3個(gè),可以在操作之

前進(jìn)行一個(gè)判斷,判斷參數(shù)的個(gè)數(shù)。如果在輸入的參數(shù)中間包含空格,應(yīng)該

使用雙引號(hào)括起來(lái)當(dāng)做一個(gè)參數(shù)來(lái)處理。

publicclassMain{

publicstaticvoidmain(Stringargs[]){

if(args.length!=3){//輸入的參數(shù)如果不足3個(gè),則出錯(cuò)

System.out.printin("輸入的參數(shù)不足三個(gè),程序退出?”);

System.exit(1);//直接退出此程序

}

for(inti=0;i<args.length;i++){//循環(huán)輸出輸入的參數(shù)

System.out.println(“第"+(i+1)+”個(gè)參數(shù):"+args[i]);

)

)

11)

控制臺(tái)輸出:

javaMain12

輸入的參數(shù)不足三個(gè),程序退出~

javaMainHello123"你好啊慕課網(wǎng)BAT##¥"

第1個(gè)參數(shù):Hello

第2個(gè)參數(shù):123

第3個(gè)參數(shù):你好啊慕課網(wǎng)BAT##¥

其中最后一個(gè)參數(shù)"你好啊慕課網(wǎng)BAT##¥”本身包含空格應(yīng)該使用雙引

號(hào)包含起來(lái)。

【代碼塊】

代碼塊是使用"{}"括起來(lái)的一段代碼,根據(jù)位置的不同,可以將代碼塊

劃分為4種。

普通代碼塊:直接定義在方法中的代碼塊

publicclassCodeDemoOl{

publicstaticvoidmain(Stringargs[]){

{//普通代碼塊

intx=30;//就屬于一個(gè)局部變量

System,out.printin("普通代碼塊-->x="+x);

}

intx=100;//與局部變量名稱相同

System.out.printin("彳弋碼塊之夕卜-->x="+x);

}

10)

執(zhí)行結(jié)果:

普通代碼塊x=30

代碼塊之外一>x=100

構(gòu)造塊:直接在類中編寫(xiě)的代碼塊

classDemo{

{//直接在類中編寫(xiě)代碼塊,稱為構(gòu)造塊

System.out.printIn(nl>構(gòu)造塊。“);

}

publicDemo(){//定義構(gòu)造方法

System.out.printin(H2>構(gòu)造方法。**);

)

8}

publicclassCodeDemo02{

publicstaticvoidmain(Stringargs[]){

newDemo();//實(shí)例化對(duì)■象

newDemo();//實(shí)例化對(duì)象

newDemo();//實(shí)例化對(duì)象

}

15)

程序的輸出結(jié)果:

1、構(gòu)造塊。

2、構(gòu)造方法。

1、構(gòu)造塊。

2、構(gòu)造方法。

1、構(gòu)造塊。

2、構(gòu)造方法。

由程序運(yùn)行結(jié)果可以知道:構(gòu)造塊優(yōu)先于構(gòu)造方法執(zhí)行,且執(zhí)行多次,只

要一有實(shí)例化對(duì)象產(chǎn)生就執(zhí)行構(gòu)造塊中的內(nèi)容。

靜態(tài)代碼塊:使用static關(guān)鍵字修飾的代碼塊

1classDemo{

{//直接在類中編寫(xiě)代碼塊,稱為構(gòu)造塊

System.out.printIn(H1構(gòu)造塊。*,);

)

static{//使用static,稱為靜態(tài)代碼塊

System.out.printIn(n0>靜態(tài)代碼塊“);

}

publicDemo(){//定義構(gòu)造方法

System.out.printIn(^^2^構(gòu)造方法。“);

}

11}

publicclassCodeDemo03{

static{//在主方法所在的類中定義靜態(tài)塊

System.out.printIn("在主方法所在類中定義的代碼塊”);

)

publicstaticvoidmain(Stringargs[]){

newDemo();//實(shí)例化對(duì)象

newDemo();//實(shí)例化對(duì)象

newDemo();//實(shí)例化對(duì)象

)

21}

運(yùn)行結(jié)果:

在主方法所在類中定義的代碼塊

1、構(gòu)造塊。

2、構(gòu)造方法。

1、構(gòu)造塊。

2、構(gòu)造方法。

1、構(gòu)造塊。

2、構(gòu)造方法。

可以發(fā)現(xiàn)主方法中定義的靜態(tài)代碼塊優(yōu)先于主方法執(zhí)行;普通類中的靜態(tài)

塊優(yōu)先于構(gòu)造方法執(zhí)行,不管有多少個(gè)實(shí)例化對(duì)象產(chǎn)生,靜態(tài)代碼塊只執(zhí)行

一次,靜態(tài)代碼塊的主要功能就是為靜態(tài)屬性初始化。

同步代碼塊:與多線程相關(guān)

^\瀟瀟暮雨

【對(duì)象數(shù)組】

所謂對(duì)象數(shù)組就是指包含了一組相關(guān)的對(duì)象,但是在對(duì)象數(shù)組的使用過(guò)程

中一定要清楚一點(diǎn):數(shù)組一定要先開(kāi)辟空間,但是因?yàn)槠涫且脭?shù)據(jù)類型,

所以數(shù)組里面的每一個(gè)值都是null,在使用的時(shí)候,對(duì)象數(shù)組中的每一個(gè)對(duì)

象都要進(jìn)行實(shí)例化操作。

對(duì)象數(shù)組的聲明:

類對(duì)象數(shù)組名稱口=new[數(shù)組長(zhǎng)度];

classPerson{

privateStringname;

publicPerson(Stringname){

=name;

}

publicStringgetName(){

;

}

publicclassObjectArrayDemoOl{

publicstaticvoidmain(Stringargs[]){

//類名稱數(shù)組名稱口=new類名稱[長(zhǎng)度]

Personper[]=newPerson[3];//月:辟了三個(gè)空間大

14

小的數(shù)組

System.out.printin(”==============數(shù)組聲明

//對(duì)象數(shù)組初始化之前,每一個(gè)元素都是默認(rèn)值

for(intx=0;x<per.length;x++){//循環(huán)4俞出

System.out.print(per[x]+“、“);//

因?yàn)橹皇情_(kāi)辟好了空間,所以都是默認(rèn)值

24)

//分別為數(shù)組中的每個(gè)元素初始化,每一個(gè)都是對(duì)象,都需

要單獨(dú)實(shí)例化

per[0]=newPerson(“張三”);//實(shí)例化第一個(gè)元素

per[1]=newPerson("李四”);//實(shí)例化第二個(gè)元素

per[2]=newPerson(“王五”);//實(shí)例化第三個(gè)元素

System.out.printin(”\n==============對(duì)象實(shí)例化

for(intx=0;x<per.length;x++){//循環(huán)輸出

System.out.print(per[x].getName()+“、”)

//此時(shí),已經(jīng)實(shí)例化完成了,所以會(huì)直接打印出姓名

)

}

控制臺(tái)輸出:

==============數(shù)組聲明=================

null、null、nulk

==============對(duì)象實(shí)例化=================

張三、李四、王五、

由以上程序可以看出對(duì)象數(shù)組中的內(nèi)容沒(méi)有實(shí)例化之前都是默認(rèn)值null,

對(duì)象數(shù)組中的每個(gè)對(duì)象都要單獨(dú)進(jìn)行實(shí)例化。

數(shù)組在初始化的時(shí)候有動(dòng)態(tài)初始化【先聲明,再賦值】和靜態(tài)初始化【聲

明的時(shí)候就賦值】,對(duì)象數(shù)組也不例外。

.classPerson{

privateStringname;

publicPerson(Stringname){

=name;

)

publicStringgetName(){

;

}

9}

publicclassObjectArrayDemo02{

publicstaticvoidmain(Stringargs[]){

//聲明一個(gè)對(duì)象數(shù)組,里面有三個(gè)對(duì)象,使用靜態(tài)初始化方

式完成

Personper[]={newPerson(“張三”),newPerson("李

四”),newPerson(;

System.out.printin("\n==============數(shù)組輸出

for(intx=0;x<per.length;x++){//循環(huán)輸出

System.out.print(per[x].getName()+“、”)

23

;//此時(shí),已經(jīng)實(shí)例化完成了,所以會(huì)直接打印出姓名

25)

)

27)

控制臺(tái)輸出:

數(shù)組輸出

張三、李四、王五、

【內(nèi)部類】

在一個(gè)類的內(nèi)部可以定義另一個(gè)類(類中的任意位置,包括在方法中定

義)。如果在一個(gè)類Outer的內(nèi)部再定義一個(gè)類Inner,此時(shí)類Inner就稱

之為內(nèi)部類,而類Outer則稱之為外部類。

內(nèi)部類可以聲明為public或者private,當(dāng)內(nèi)部類聲明為public或者pr

ivate時(shí),對(duì)其訪問(wèn)的限制與成員變量和成員方法完全相同。

1classOuter{//定義外部類

privateStringinfo="hell。world**;//定義夕卜部類的私有

屬性

classInner{//定義內(nèi)部類

publicvoidprint(){//

定義內(nèi)部類的方法

System.out.printIn(info);//

1n

直接訪問(wèn)外部類的私有屬性

}

)

publicvoidfun(){

//定義外部類的方法

newInner().print();//

18:

通過(guò)內(nèi)部類的實(shí)例化對(duì)象調(diào)用方法

)

21}

publicclassInnerClassDemoOl{

publicstaticvoidmain(Stringargs[]){

newOuter().fun();

//調(diào)用外部類的fun()方法

)

81}

控制臺(tái)輸出:

helloworld

以上程序中,Inner類作為Outer類的內(nèi)部類存在,并且在外部類的fun

()方法中直接實(shí)例化內(nèi)部類的對(duì)象并調(diào)用print()方法。

內(nèi)部類存在的特點(diǎn):

缺點(diǎn):正常的一個(gè)類操作時(shí),在類中最好只定義屬性或者方法。如果在

一個(gè)類中再定義另一個(gè)類的話,肯定破壞了一個(gè)程序的結(jié)構(gòu)。

優(yōu)點(diǎn):使用內(nèi)部類的唯一優(yōu)點(diǎn)是可以訪問(wèn)外部類中的私有屬性

使用static關(guān)鍵字聲明內(nèi)部類,則此內(nèi)部類就稱之為外部類,可以通過(guò)“外

部類.內(nèi)部類"的方式進(jìn)行訪問(wèn)。

classOuter{//定義外部類

privatestaticStringinfo="helloworld";//定義外

部類的私有屬性

staticclassInner{//使用static定義內(nèi)部類為外部類

publicvoidprint(){//

定義內(nèi)部類的方法

System.out.printIn(info);//

直接訪問(wèn)外部類的私有屬性

)

)

publicvoidfun(){

15

//定義外部類的方法

newInner().print();//

18:

通過(guò)內(nèi)部類的實(shí)例化對(duì)象調(diào)用方法

)

21}

publicclassInnerClassDemo03{

publicstaticvoidmain(Stringargs[]){

newOuter.Inner().print();

25:

//調(diào)用外部類的fun()方法

)

控制臺(tái)輸出:helloworld

在外部訪問(wèn)內(nèi)部類

一個(gè)類除了可以通過(guò)外部類進(jìn)行訪問(wèn),也可以直接在其他類中進(jìn)行調(diào)用,

調(diào)用格式:

外部類內(nèi)部類內(nèi)部類對(duì)象=外部類實(shí)例new內(nèi)部類();

1classOuter{//定義外部類

privateStringinfo="hell。world";//定義外部類的私有屬性

classInner{//定義內(nèi)部類

publicvoidprint(){//定義內(nèi)部類的方法

System.out.printin(info);//直接訪問(wèn)外部類的私有屬性

}

)

publicvoidfun(){//定義外部類的方法

newInner().print();//通過(guò)內(nèi)部類的實(shí)例化對(duì)象調(diào)用方法

}

11}

publicclassInnerClassDemo04{

publicstaticvoidmain(Stringargs[]){

Outerout=newOuter();//外部類實(shí)例化對(duì)象

Outer.Innerin=out.newInner();//實(shí)例化內(nèi)部類對(duì)象

in.print();//調(diào)用內(nèi)部類的方法

17)

)

控制臺(tái)輸出:

helloworld

在方法中定義內(nèi)部類

classOuter{//定義外部類

privateStringinfo="helloworld'1;//定義外部類的私有

屬性

publicvoidfun(finalinttemp){//定義外

部類的方法,參數(shù)用final

classInner{

:。//在方法中定義的內(nèi)部類

publicvoidprint(){

12-

//定義內(nèi)部類的方法

System.out.println(”類中的屬性:+

15

info);//直接訪問(wèn)外部類的私有屬性

System.out.printin("方法中的參數(shù):

18

+temp);

201)

}

newInner().print();//

23

通過(guò)內(nèi)部類的實(shí)例化對(duì)象調(diào)用方法

}

26}

publicclassInnerClassDemo05{

publicstaticvoidmain(Stringargs[]){

newOuter().fun(30);//調(diào)用外部類的方法

)

}

控制臺(tái)輸出:

類中的屬性:helloworld

方法中的參數(shù):30

內(nèi)部類需要訪問(wèn)方法中的參數(shù)需要使用final關(guān)鍵字

2014-12-10

回復(fù)0

【繼承】

子類繼承父類實(shí)際上是擴(kuò)充父類類的功能。子類不能直接訪問(wèn)父類中的私

有屬性,如以下程序:

classPerson{

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論