Java總結(jié)(二)

數(shù)組

  1. 定義數(shù)組的語(yǔ)法格式
    數(shù)組元素類(lèi)型[] 數(shù)組型變量名 或 數(shù)組元素類(lèi)型 數(shù)組型變量名[]
  2. 一位數(shù)組
    一個(gè)數(shù)組可以包含多個(gè)元素,所含的元素?cái)?shù)目被稱(chēng)為數(shù)組的長(zhǎng)度,數(shù)組中也可以沒(méi)有任何元素,此時(shí)稱(chēng)為空數(shù)組。因此,在創(chuàng)建數(shù)組的時(shí)候,需要給出組成數(shù)組的元素?cái)?shù)目。(Java中的數(shù)組只能分配動(dòng)態(tài)存儲(chǔ)空間,一旦被創(chuàng)建,無(wú)法改變其數(shù)組長(zhǎng)度。如果要在程序運(yùn)行的過(guò)程中擴(kuò)展數(shù)組的長(zhǎng)度,就應(yīng)該使用數(shù)組列表。)
    一位數(shù)組創(chuàng)建的語(yǔ)法格式(舉個(gè)栗子):
    intArray = new int【100】
    或 char[] name = new char[300]
  3. 二維數(shù)組
    定義:
    數(shù)組元素類(lèi)型[][] 數(shù)組型變量名
    或 數(shù)組元素類(lèi)型 數(shù)組型變量名[][]
    或 數(shù)組元素類(lèi)型[] 數(shù)組型變量名[]
    創(chuàng)建:
    new 數(shù)組元素類(lèi)型[行數(shù)][列數(shù)];intArray = new int[10][5];
    或 int[][] intArray = new int[][];

String類(lèi)

  • String不屬于8中基本數(shù)據(jù)類(lèi)型
  • 定義String類(lèi)對(duì)象之后,沒(méi)有引用任何一個(gè)字符串,就應(yīng)該賦予null
  • new String()和new String(“”)都是申明一個(gè)新的空字符串,是空串不是null
  • 常量池(constant pool)指的是在編譯期被確定,并被保存在已編譯的.class文件中的一些數(shù)據(jù)。它包括了關(guān)于類(lèi)、方法、接口等中的常量,也包括字符串常量。
例題:
設(shè)有以下代碼:
String s1 = "123";
String s2 = "123";
String s3 = new String("123");
則表達(dá)式s1==s2和s1 == s3 的值分別是(**true**)(**false**)
解釋?zhuān)簊1和s2中的”123”都是字符串常量,它們?cè)诰幾g期就被確定了,是常量池中“123”的一個(gè)引用
用new String() 創(chuàng)建的字符串不是常量,不能在編譯期就確定,所以new String() 創(chuàng)建的字符串不放入常量池中,它們有自己的地址空間。

類(lèi)與對(duì)象

  • 類(lèi)與對(duì)象的區(qū)別
    對(duì)象是客觀世界存在的具體實(shí)體,具有明確定義的狀態(tài)和行為。
    類(lèi)是一組具有共同特性的所有對(duì)象成員的集合,它是一個(gè)抽象的概念
  • 類(lèi)的聲明
    1.[修飾符]class 類(lèi)名
    2.訪(fǎng)問(wèn)控制符,抽象類(lèi)控制符,最終類(lèi)說(shuō)明符
  public:后續(xù)定義的任何類(lèi)均可訪(fǎng)問(wèn)
  private:僅能被類(lèi)自身的內(nèi)部函數(shù)成員函數(shù)訪(fǎng)問(wèn),其它任何類(lèi)都不能直接訪(fǎng)問(wèn)
  protected:同private,但能被繼承類(lèi)受保護(hù)的成員訪(fǎng)問(wèn),不能被私有成員訪(fǎng)問(wèn)。
  abstract不僅用于類(lèi)的聲明,也適用于對(duì)象。當(dāng)用于類(lèi)的聲明時(shí),該類(lèi)不能創(chuàng)建對(duì)象。
  final 適用于類(lèi)的聲明,變量或者方法。當(dāng)用于類(lèi)的聲明時(shí),該類(lèi)不能有子類(lèi)。
  • 類(lèi)中的成員方法
    類(lèi)中的成員方法主要承擔(dān)對(duì)象的外部接口任務(wù)。
    成員方法的重載,是指在同一個(gè)類(lèi)中,同一個(gè)名稱(chēng)的成員方法被多次定義的現(xiàn)象
public void setTime(int h,int m ,int s){
  hour = (h<0)?0 : h % 24;
  minute = (m<0)?0 : m % 60;
  second = (s<0)?0 : s % 60;
 }
public void setTime(String time){
hour = Intrger.praseInt(time.substring(0,1));
hour = (h<0)?0 : h % 24;
minute = Intrger.praseInt(time.substring(3,4));
minute = (m<0)?0 : m % 60;
second = Intrger.praseInt(time.substring(6,7));
}

構(gòu)造方法:構(gòu)造類(lèi)對(duì)象的時(shí)候使用的成員方法,主要作用是初始化成員變量,因此不需要返回任何值。Java中規(guī)定,構(gòu)造方法不允許返回任何值。構(gòu)造方法可以重載。構(gòu)造方法的具體定義格式為: [修飾符] 類(lèi)名(參數(shù)列表)

子類(lèi)構(gòu)造方法的定義與執(zhí)行:
在Java程序中,子類(lèi)不負(fù)責(zé)調(diào)用父類(lèi)中帶參數(shù)的構(gòu)造方法。在創(chuàng)建子類(lèi)對(duì)象的時(shí)候需要在構(gòu)造方法中利用super()調(diào)用弗雷德構(gòu)造方法,以便能夠?qū)母割?lèi)繼承過(guò)來(lái)的成員變量初始化。

父類(lèi):
public class Shape{
   public Shape (int color,int height){
   this.color = color;
   }
}
子類(lèi):
public class Rectangle extends Shape{
   public Rectangle(int color,int height,int width){
   super(color,height);
   this.width = width;
   }
}
  • 類(lèi)的靜態(tài)成員
    在類(lèi)中定義成員變量是,如果在訪(fǎng)問(wèn)特性修飾符之后加上static修飾符就成為靜態(tài)變量。例如:
    public static int staticMember;
    靜態(tài)成員變量只在加載類(lèi)時(shí)創(chuàng)建一個(gè)副本,無(wú)論將來(lái)創(chuàng)建同一個(gè)類(lèi)的多少個(gè)對(duì)象都將共享同一個(gè)副本。因此,靜態(tài)成員變量與類(lèi)共存亡,而與具體的對(duì)象無(wú)關(guān)(因此,稱(chēng)之為類(lèi)變量)。

    靜態(tài)成員方法:在外部調(diào)用靜態(tài)方法是,可使用“類(lèi)名.方法名”的形式,也可以使用“對(duì)象名.方法名的形式。而實(shí)例化方法就只有后面這種形式。調(diào)用靜態(tài)方法可以無(wú)需創(chuàng)建對(duì)象;靜態(tài)方法在訪(fǎng)問(wèn)本類(lèi)的成員時(shí),只允許訪(fǎng)問(wèn)靜態(tài)成員(即靜態(tài)成員變量和靜態(tài)方法)不能訪(fǎng)問(wèn)非靜態(tài)的成員變量。

繼承與多態(tài)

類(lèi)成員方法的重載與覆蓋
  1. 成員方法的重載:指在子類(lèi)中定義與父類(lèi)中同名的成員方法,但參數(shù)列表不同,在子類(lèi)與父類(lèi)之間重載成員方法,或者在一個(gè)類(lèi)中定義多個(gè)同名的成員方法,但他們的參數(shù)列表不同,在一個(gè)類(lèi)中重載成員方法。

  2. 成員方法的覆蓋
    子類(lèi)通過(guò)方法的覆蓋可以隱藏繼承的方法,方法覆蓋是指子類(lèi)中定義一個(gè)方法,并且這個(gè)方法的名字,返回類(lèi)型,參數(shù)列表與從父類(lèi)繼承的方法完全相同。
    注意:
    1.子類(lèi)的方法不能縮小父類(lèi)方法的訪(fǎng)問(wèn)權(quán)限
    2.子類(lèi)的方法不能拋出比父類(lèi)更多的異常
    3.父類(lèi)的靜態(tài)方法不能被子類(lèi)覆蓋為非靜態(tài)方法
    4.父類(lèi)的私有方法不能被子類(lèi)覆蓋

多態(tài)性的實(shí)現(xiàn)

在Java中,多態(tài)性是指不同的類(lèi)對(duì)象調(diào)用同一個(gè)簽名的成員方法是將執(zhí)行不同代碼段的現(xiàn)象。
具體實(shí)現(xiàn)方式:首先,在子類(lèi)中覆蓋父類(lèi)的某個(gè)成員方法,然后,定義父類(lèi)的對(duì)象引用,并由他引用創(chuàng)建的子類(lèi)對(duì)象。當(dāng)在調(diào)用成員方法時(shí),根據(jù)實(shí)際引用的對(duì)象類(lèi)型最終調(diào)用哪個(gè)方法。
實(shí)現(xiàn)動(dòng)態(tài)行需要具備的兩個(gè)條件:
多態(tài)性作用于子類(lèi)對(duì)象,它是依賴(lài)于類(lèi)層次結(jié)構(gòu)中的一項(xiàng)功能。
具有多態(tài)性的成員方法必須同時(shí)包含在父類(lèi)與子類(lèi)中,且對(duì)應(yīng)的成員方法簽名完全一致,即子類(lèi)覆蓋父類(lèi)的成員方法。

抽象類(lèi)

在Java語(yǔ)言中,用抽象類(lèi)表示概念性的事物,用類(lèi)表示可實(shí)例化的實(shí)體類(lèi)別。
定義格式: [修飾符] abstract class 抽象類(lèi)名……{}
抽象類(lèi)體中的成員方法既可以是抽象方法(不完整的成員方法,只能在不能被實(shí)例化的抽象類(lèi)中出現(xiàn)),也可以是普通的成員方法。
注意
抽象類(lèi)主要用于派生子類(lèi),且在子類(lèi)中實(shí)現(xiàn)抽象類(lèi)中的所有抽象方法。如果在 子類(lèi)中沒(méi)有實(shí)現(xiàn)全部的抽象方法,則必須繼續(xù)將沒(méi)有被實(shí)現(xiàn)的方法聲明稱(chēng)抽象方法,此時(shí)的子類(lèi)仍然需要聲明為抽象類(lèi)。
static、private、final修飾符不能用于修飾抽象方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,652評(píng)論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開(kāi)發(fā)和運(yùn)行環(huán)境,java的開(kāi)發(fā)工...
    ZaneInTheSun閱讀 2,810評(píng)論 0 11
  • Win7下如何打開(kāi)DOS控制臺(tái)? a:開(kāi)始--所有程序--附件--命令提示符 b:開(kāi)始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,702評(píng)論 4 12
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,254評(píng)論 0 62
  • 來(lái)源: 飄逸的python - 增強(qiáng)的格式化字符串format函數(shù)版權(quán)盡歸博主,僅個(gè)人記錄,不做商用,侵權(quán)刪 自p...
    大飛哥閱讀 326評(píng)論 0 1

友情鏈接更多精彩內(nèi)容