




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- AP微積分BC2024-2025年真題試卷(積分級(jí)數(shù)高級(jí)問(wèn)題解析)
- 2025年執(zhí)業(yè)醫(yī)師資格考試臨床類別實(shí)踐技能模擬試卷(病史采集與查體)-臨床醫(yī)學(xué)跨學(xué)科融合
- SQL查詢性能提升方法試題及答案
- 福建省福州市八縣(市)2017-2018學(xué)年高二上學(xué)期期中聯(lián)考試題文(生物)
- 安徽省阜陽(yáng)一中2013-2014學(xué)年高二上學(xué)期期末考試英語(yǔ)試題含聽(tīng)力
- IB課程HL化學(xué)2024-2025年模擬試卷:有機(jī)化學(xué)基礎(chǔ)與高級(jí)反應(yīng)技巧
- 房地產(chǎn)估價(jià)師職業(yè)資格考試2025年理論與方法模擬試卷:深度分析與實(shí)戰(zhàn)技巧
- 產(chǎn)科護(hù)理帶教體系構(gòu)建
- A-Level數(shù)學(xué)(PureMath1)2024-2025年度期中測(cè)試卷:函數(shù)與三角函數(shù)難點(diǎn)解析
- 廣東省深圳高級(jí)中學(xué)2017屆高三上學(xué)期第三次月考理綜-化學(xué)試題
- 企業(yè)形象設(shè)計(jì)(CIS)戰(zhàn)略策劃及實(shí)施計(jì)劃書(shū)
- 個(gè)人保證無(wú)糾紛承諾保證書(shū)
- 銀行保潔服務(wù)合同樣本
- 19G522-1鋼筋桁架混凝土樓板圖集
- 2023年上半年中級(jí)信息系統(tǒng)監(jiān)理師下午真題
- 農(nóng)學(xué)專業(yè)深度解析模板
- 儲(chǔ)罐內(nèi)噴鋁施工方案
- 2024年江西省高考地理真題(解析版)
- 部編三年級(jí)語(yǔ)文下冊(cè)《中國(guó)古代寓言》整本書(shū)閱讀
- 人教版小學(xué)數(shù)學(xué)四年級(jí)下冊(cè)課件:《平均數(shù)》課件
- 紹興市糧食批發(fā)市場(chǎng)經(jīng)營(yíng)有限公司招聘筆試題庫(kù)2024
評(píng)論
0/150
提交評(píng)論