Java基礎(chǔ) 復(fù)習(xí)

  • java未指定關(guān)鍵字則默認(rèn)為friendly
  • 繼承關(guān)鍵字 extends
  • 除了final,static,private和構(gòu)造方法是前期綁定外,其他的方法全部為動(dòng)態(tài)綁定
  • 由于垃圾清理器,java存在不連貫的因素

保存位置

  • 堆棧
    • 特別快,特別有效,創(chuàng)建程序時(shí),Java編譯器必須準(zhǔn)確知道堆棧中內(nèi)存保存的所有數(shù)據(jù)的“長(zhǎng)度”及“存在時(shí)間”。這是由于它必須生成相應(yīng)的代碼,以便向上和向下移動(dòng)指針。
    • 編譯器不需要知道要從堆里分配多少存儲(chǔ)空間,也不必知道存儲(chǔ)的數(shù)據(jù)要再堆里停留多長(zhǎng)的時(shí)間。<font color=blue>在堆里分配存儲(chǔ)空間會(huì)花費(fèi)更多時(shí)間</font>

數(shù)值類型

  • 數(shù)值全都是有符號(hào)的
  • 主數(shù)據(jù)類型也擁有自己的“封裝器Wrapper”類
  • BigInteger和BigDecimal可用于高精度的計(jì)算,大致可劃分為Wrapper類型,但都沒有對(duì)應(yīng)的“主類型”。對(duì)int和float做的事情對(duì)它們也一樣可以做,但是必須使用方法調(diào)用而不能使用運(yùn)算符。

數(shù)組

  • 在創(chuàng)建數(shù)組時(shí)實(shí)際上創(chuàng)建的是一個(gè)句柄數(shù)組,且每個(gè)句柄都會(huì)自動(dòng)化初始化為一個(gè)特殊值,并帶有自己的關(guān)鍵字null

定義一個(gè)類

定義一個(gè)類時(shí),數(shù)據(jù)成員若是指向?qū)ο蟮囊粋€(gè)句柄則必須用“構(gòu)建器”初始化句柄,若是主類型則可以直接在類定義位置直接初始化。

編碼格式

  • 類名每個(gè)字母開頭都重要大寫,單詞緊靠在一起,方法、字段、對(duì)象句柄名稱則都開頭小寫,其他單詞大寫開頭

賦值符號(hào)

<font color=red>若為主類型之間的相互賦值則是直接復(fù)制值,A=B,B的值改變后對(duì)A不會(huì)有影響,但如果是對(duì)象之間的賦值,實(shí)質(zhì)上是句柄的賦值,A=B,若B的值改變則A的值也會(huì)改變,因?yàn)閷?shí)際上是句柄指向的對(duì)象的值改變了。</font>

  • ==和!=對(duì)對(duì)象來說比較的是句柄

轉(zhuǎn)型

  • 數(shù)值計(jì)算時(shí),只要它們比"int"小,就會(huì)都轉(zhuǎn)為int。通常表達(dá)式中最大的數(shù)據(jù)類型決定了表達(dá)式最終結(jié)果大小的那個(gè)類型。

所有數(shù)據(jù)類型在所有機(jī)器上的大小都是相通的。

  • <font color=red>Java不允許將數(shù)字作為一個(gè)boolean值使用</font>

  • <font color=red>for里面可以定義多個(gè)變量,但是它們的類型必須相同</font>

標(biāo)簽

label1:
{//外循環(huán)
{//...內(nèi)循環(huán)
break;
//...
continue;
//...
continue label1;//3
//...
break label1;//4
}
}
/**
 *3是同時(shí)中斷內(nèi)外部循環(huán),跳轉(zhuǎn)到label1處從外循環(huán)繼續(xù)循環(huán);4  是同時(shí)中斷內(nèi)外部循環(huán),跳轉(zhuǎn)到label1處直接跳過循環(huán)往下。
 *這個(gè)對(duì)while也同樣適用
*/
  • switch語句的選擇因子必須是int或char這樣的整數(shù)值
  • 局部變量不會(huì)被自動(dòng)初始化,但是類變量的基本類型會(huì)有默認(rèn)初始值。
  • static field 初始化
    • object第一次被創(chuàng)建
    • 直接使用class中的static method或直接訪問static member

函數(shù)重載

  • 如果Java基礎(chǔ)類有一個(gè)方法名被“過載”過很多次,在衍生類里對(duì)那個(gè)方法名的重新定義就不會(huì)隱藏任何基礎(chǔ)類的版本。所以無論這一方法在這一級(jí)還是在一個(gè)基礎(chǔ)類中定義,過載都會(huì)生效;

final修飾符

  • final會(huì)將值直接變?yōu)橐粋€(gè)常數(shù);但對(duì)于對(duì)象句柄,final會(huì)將句柄變?yōu)橐粋€(gè)常數(shù),然而對(duì)象本身是可以修改的。

    • 好處
      • 為方法上鎖,防止任何即成類改變它的本來含義。
      • 提高執(zhí)行效率,講一個(gè)方法設(shè)為final后,編譯器就可以把對(duì)那個(gè)方法的所有調(diào)用都置入“嵌入”調(diào)用里。
      • 類內(nèi)所有private方法都自動(dòng)成為final。
  • super和this調(diào)用構(gòu)造函數(shù),都必須寫在第一行,否則會(huì)報(bào)錯(cuò)

初始化順序

  1. 基類靜態(tài)代碼塊,基類靜態(tài)成員字段(并列優(yōu)先級(jí),按代碼中出現(xiàn)先后順序執(zhí)行)(只有第一次加載類時(shí)執(zhí)行)
  2. 派生類靜態(tài)代碼塊,派生類靜態(tài)成員字段(并列優(yōu)先級(jí),按代碼中出現(xiàn)先后順序執(zhí)行)(只有第一次加載類時(shí)執(zhí)行)
  3. 基類普通代碼塊,基類普通成員字段(并列優(yōu)先級(jí),按代碼中出現(xiàn)的先后順序執(zhí)行)
  4. 基類構(gòu)造函數(shù)
  5. 派生類普通代碼塊,派生類普通成員字段(并列優(yōu)先級(jí),按代碼中出現(xiàn)的先后順序執(zhí)行)
  6. 派生類構(gòu)造函數(shù)
  • java中綁定的所有方法都采用后期綁定的方式,除非一個(gè)方法已被申明為final

接口

  • 接口可看作一個(gè)純抽象類,允許規(guī)定一個(gè)類的基本形式:方法名、自變量列表以及返回類型,但不規(guī)定方法主體。接口也包含了基本數(shù)據(jù)類型的數(shù)據(jù)成員,但它們都默認(rèn)為static和final
  • 接口的所有成員變量都是public

內(nèi)部類

為生成一個(gè)內(nèi)部類的對(duì)象,必須利用外部類的一個(gè)對(duì)象來生成一個(gè)內(nèi)部類的對(duì)象

Parcel 11.Contents c=p.new Contents();
  • 但如果是生成一個(gè)static內(nèi)部類,就不需要指向外部類對(duì)象的一個(gè)句柄。
  • 只繼承外部類的話是不能覆蓋內(nèi)部類的,除非內(nèi)部類也明確進(jìn)行了繼承,則內(nèi)部類的方法也都會(huì)被覆蓋

數(shù)組

  • 創(chuàng)建一個(gè)數(shù)組對(duì)象時(shí),它的大小是固定的,而且不可在那個(gè)數(shù)組對(duì)象的“存在時(shí)間”內(nèi)發(fā)生變化。

  • 數(shù)組能夠容納的是一種類型已知的對(duì)象,能夠容納基本數(shù)據(jù)類型,但一旦創(chuàng)建好以后,大小就不能改變了。

  • vector容納對(duì)象的句柄,所以不能容納基本數(shù)據(jù)類型,將一個(gè)對(duì)象句柄從集合中取出來的時(shí)候,必須對(duì)結(jié)果進(jìn)行造型處理。

finally

  • 若調(diào)用了continue和break,finally語句也會(huì)得以執(zhí)行

克隆

  • vector的clone()方法可以制作出一個(gè)副本而不會(huì)改變?cè)瓕?duì)象

散列

  • 將鍵保存在某處,以便查詢能夠很快找到。存儲(chǔ)一組元素最快的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,所以用它來表示鍵的信息,數(shù)據(jù)并不保存鍵本身。而是通過鍵對(duì)象生成一個(gè)數(shù)字,將其作為數(shù)組的下標(biāo),這個(gè)數(shù)字就是散列碼。

對(duì)象序列化

  • java的對(duì)象序列化講那些實(shí)現(xiàn)了Serializable接口的對(duì)象轉(zhuǎn)換為一個(gè)字節(jié)序列,并能夠在以后將這個(gè)字節(jié)序列完全恢復(fù)為原來的對(duì)象。實(shí)現(xiàn)輕量持久性,“持久性”意味著一個(gè)對(duì)象的生存周期并不取決于程序是否正在執(zhí)行,它可以生存于程序的調(diào)用之間
  • 若我們正在操作一個(gè)序列化的對(duì)象,可以用transient關(guān)鍵字逐個(gè)字段的關(guān)閉序列化

注解

  • 注解的元素在使用時(shí)表現(xiàn)為名-值對(duì)的形式

反射

  • 獲取Class實(shí)例的方式
    • 1.通過一個(gè)class的靜態(tài)變量class獲取:Class cls = String.class
    • 2.如果有一個(gè)實(shí)例變量,可以通過該實(shí)例變量提供的getClass()方法獲?。篠tring s = "Hello"; Class cls = s.getClass();
    • 3.如果知道一個(gè)class的完整類名,可以通過靜態(tài)方法Class.forName()獲?。篊lass cls = Class.forName("java.lang.String");
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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