成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java編程思想學習錄(連載之:初始化與清理)

betacat / 517人閱讀

摘要:注本文首發(fā)于公眾號,可長按或掃描下面的小心心來訂閱關(guān)于構(gòu)造器與初始化無參構(gòu)造器默認構(gòu)造器自己未寫編譯器幫忙自動創(chuàng)建的若自行定義了構(gòu)造器無論參數(shù)有否,編譯器便停止默認創(chuàng)建動作類里的對象引用默認初始化為,基本類型初始化為構(gòu)造器也是類的靜態(tài)方法四

注: 本文首發(fā)于 My 公眾號 CodeSheep ,可 長按掃描 下面的 小心心 來訂閱 ↓ ↓ ↓

關(guān)于構(gòu)造器與初始化

無參構(gòu)造器 = 默認構(gòu)造器 = 自己未寫編譯器幫忙自動創(chuàng)建的

若自行定義了構(gòu)造器(無論參數(shù)有否),編譯器便停止默認創(chuàng)建動作

類里的對象引用默認初始化為null,基本類型初始化為0

構(gòu)造器也是類的靜態(tài)方法?。?!

四種常見初始化方式:

自動初始化:無法被阻止的,先于構(gòu)造器,即所謂的基本類型賦空值(0),對象賦null

指定初始化:定義類成員的時候直接賦初始值

初始化子句:(匿名內(nèi)部類的初始化的必需品!且一定先于構(gòu)造器執(zhí)行)

public class Example {
  int i;
  int j;
  {
    i = 1;
    j = 2;
  }
}

構(gòu)造器初始化:在構(gòu)造器中對成員賦上值

靜態(tài)域的初始化:

java中的static關(guān)鍵字是只能用于域,而不能用于普通的局部變量

未賦值過的類的靜態(tài)域默認有初值:(object=null、基本數(shù)據(jù)類型 = 0)

靜態(tài)子句的概念:包含有多個靜態(tài)域初始化的的語句塊,舉例:

class Cups {
  Static cup cup1;
  Static cup cup2;
  static { // 靜態(tài)子句
    cup1 = new Cup(1);
    cup2 = new Cup(2)
  }
 
}

數(shù)組的初始化:

java是不允許定義數(shù)組時指定數(shù)組大小的

所有數(shù)組都有一個固定成員length

對象數(shù)組初始化方法:

形式1:只能被用在數(shù)組定義處,比較受限
Integer[] a = {
  new Integer(1),
  new Integer(2),
  3, // 會被自動包裝
}
形式2:可用于任何地方,典型在函數(shù)傳參時:如:Example.func( new Ingeger[] { new Integer(1), new Integer(2), 3 } )
Integer[] b = new Ingeger[] {
    new Integer(1),
    new Integer(2),
    3, // 會被自動包裝
}

可變參數(shù)列表

public class Example {
  static void f( int i, String... trailing ) {
    ...
    for( String s : trailing  )
      ...
  }
  public static void main( String[] args ) {
    f( 1, "one" );
    f( 1, "one", "tow" );
    f( 1 );
  }
}

特別注意:

若函數(shù)參數(shù)只使用可變函數(shù)列表這將會使重載變得難以理解,解決辦法是:(1)要么在參數(shù)中加一個非可變參數(shù);(2)要么只在重載方法的一個版本上使用可變參數(shù);(3)不要嘗試這種做法

初始化的順序:

static成員先于non-static

類成員定義順序=初始化順序(即使變量散布于類方法之間)

某個成員先定義,然后再在構(gòu)造器中初始化,其值的就先被編譯器賦空值(null和0),然后再被賦上具體值,這個是有個先后關(guān)系的!

關(guān)于this

當以object來調(diào)用方法時,編譯器會將該對象的引用作為第一個參數(shù)來傳給方法:object.func(1) = Class.func(object,1)

注意類的static方法無this,且static方法內(nèi)部不可調(diào)用非static方法,反過來ok

this可以用來在constructor中調(diào)用constructor,舉例:

// 利用this實現(xiàn)constructor中調(diào)用constructor
public class Example {
  int _i = 0;
  String s = "";
  Example( int i ) { this._i = i; }
  Example( String s, int i ) {
    this(i); // 該句必須在最開始,且this()這種只能使用一次
    this._s = s;
  }
}
關(guān)于重載

java重載唯一規(guī)則:獨一無二的參數(shù)列表

永遠不要幻想以返回值區(qū)分重載

關(guān)于清理(finalize終結(jié)處理 和 jvm垃圾回收

關(guān)于jvm的垃圾回收,有幾點必須記住的:

對象可能不被垃圾回收

垃圾回收并不等于C++中的destructor

垃圾回收只與內(nèi)存有關(guān)

java允許在類中創(chuàng)建一個名為finalize()的方法做終結(jié)處理,但該函數(shù)一般不是來給你做內(nèi)存釋放這類動作的!

建議: 如果是進行除釋放存儲空間之外的清理工作(如關(guān)閉文件句柄等),還是由程序員來明確地調(diào)用某個恰當?shù)姆椒?/pre>
關(guān)于枚舉類型

java中enum也是一個類,擁有自己的方法

舉例:

// 定義一個枚舉類型
public enum Spiciness {
  NOT, MILD, MEDIUM
}

// 使用枚舉類型
Spiciness howHot = Spiciness.MEDIUM;
System.out.println(howHot); // ① 打印 MEDIUM

for( Spiciness s : Spiciness.values() ) {
  System.out.println( s + ", ordinal " + s.ordinal() );
}
// output:
// NOT, ordinal 0
// MILD, ordinal 1
// MEDIUM, ordinal 2

Spiciness exam = Spiciness.MILD;
switch( exam ) {
  case NOT:
    ...
  case MILD: // 所以這個case一定會走到這個分支!
    ...
  case MEDIUM:
    ...
  default:
    ...
}

由上面的例子可以看出:

編譯器自動在enum中添加了tostring()方法,所以上面的①處可以打印出MEDIUM

編譯器自動在enum中創(chuàng)建了ordinal()方法用來表示某個enum常量的聲明順序

編譯器自動在enum中創(chuàng)建了static的values()方法,用來按照enum常量的聲明順序來生成由這些常量值所構(gòu)成的數(shù)組

switch和enum是絕配啊!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/68138.html

相關(guān)文章

  • Java編程思想學習連載:內(nèi)部類)

    摘要:非內(nèi)部類通過一個特殊的鏈接到其外圍類的對象,而類型的內(nèi)部類無此引用。 showImg(https://segmentfault.com/img/remote/1460000012925199); 用thinkpad打字確實很爽??! Thinking in java系列博文目錄: Java編程思想學習錄(連載之:一切都是對象) Java編程思想學習錄(連載之:初始化與清理) Java...

    Meils 評論0 收藏0
  • Java編程思想學習連載:異常)

    摘要:系列博文目錄編程思想學習錄連載之一切都是對象編程思想學習錄連載之初始化與清理編程思想學習錄連載之內(nèi)部類編程思想學習錄連載之異常本篇文章將講述關(guān)于異常的相關(guān)知識注本文首發(fā)于公眾號,可長按或掃描下面的小心心來訂閱基本概念使用異常來提供一致性的錯 showImg(https://segmentfault.com/img/remote/1460000013228854); Thinking ...

    pkhope 評論0 收藏0
  • 利用K8S技術(shù)棧打造個人私有云(連載:私有云客戶端打造)

    摘要:前端技術(shù)棧還是非常龐大的,為了能夠借助已經(jīng)存在的輪子來造出一輛車,所以我選擇了進行實踐。狀態(tài)的管理的狀態(tài)管理依靠完成,用其來管理的所有組件狀態(tài)。私有云客戶端打造主頁面首先是主頁面,可以打開任何一個云主機系統(tǒng)的頁面看,基本類似。 showImg(https://segmentfault.com/img/remote/1460000013930354); 【利用K8S技術(shù)棧打造個人私有...

    Jingbin_ 評論0 收藏0
  • 利用K8S技術(shù)棧打造個人私有云(連載:私有云客戶端打造)

    摘要:前端技術(shù)棧還是非常龐大的,為了能夠借助已經(jīng)存在的輪子來造出一輛車,所以我選擇了進行實踐。狀態(tài)的管理的狀態(tài)管理依靠完成,用其來管理的所有組件狀態(tài)。私有云客戶端打造主頁面首先是主頁面,可以打開任何一個云主機系統(tǒng)的頁面看,基本類似。 showImg(https://segmentfault.com/img/remote/1460000013930354); 【利用K8S技術(shù)棧打造個人私有...

    shiina 評論0 收藏0
  • 利用K8S技術(shù)棧打造個人私有云(連載:K8S資源控制)

    摘要:將用戶命令通過接口傳送給,從而進行資源的增刪改等操作。要使用編寫應用程序,當下大多語言都可以很方便地去實現(xiàn)請求來操作的接口從而控制和查詢資源,但本文主要是利用已有的客戶端來更加優(yōu)雅地實現(xiàn)的資源控制。 showImg(https://segmentfault.com/img/remote/1460000013517345); 【利用K8S技術(shù)棧打造個人私有云系列文章目錄】 利用K8S...

    Reducto 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<