<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 2.4 新建數據類型:類 (2)4 新建數據類型:類 如果說一切東西都是對象,那么用什么決定一個“類”(Class)的外觀與行為呢?換句話說,是什么建立起了一個對象的“類型”(Type)呢?大家可能猜想有一個名為`type`的關鍵字。但從歷史看來,大多數面向對象的語言都用關鍵字`class`表達這樣一個意思:“我準備告訴你對象一種新類型的外觀”。`class`關鍵字太常用了,以至于本書許多地方并沒有用粗體字或雙引號加以強調。在這個關鍵字的后面,應該跟隨新數據類型的名稱。例如: ``` class ATypeName {/*類主體置于這里} ``` 這樣就引入了一種新類型,接下來便可用`new`創建這種類型的一個新對象: ``` ATypeName a = new ATypeName(); ``` 在`ATypeName`里,類主體只由一條注釋構成(星號和斜杠以及其中的內容,本章后面還會詳細講述),所以并不能對它做太多的事情。事實上,除非為其定義了某些方法,否則根本不能指示它做任何事情。 ## 2.4.1 字段和方法 定義一個類時(我們在Java里的全部工作就是定義類、制作那些類的對象以及將消息發給那些對象),可在自己的類里設置兩種類型的元素:數據成員(有時也叫“字段”)以及成員函數(通常叫“方法”)。其中,數據成員是一種對象(通過它的引用與其通信),可以為任何類型。它也可以是基本類型(并不是引用)之一。如果是指向對象的一個引用,則必須初始化那個引用,用一種名為“構造器”(第4章會對此詳述)的特殊函數將其與一個實際對象連接起來(就象早先看到的那樣,使用`new`關鍵字)。但若是一種基本類型,則可在類定義位置直接初始化(正如后面會看到的那樣,引用亦可在定義位置初始化)。 每個對象都為自己的數據成員保有存儲空間;數據成員不會在對象之間共享。下面是定義了一些數據成員的類示例: ``` class DataOnly { int i; float f; boolean b; } ``` 這個類并沒有做任何實質性的事情,但我們可創建一個對象: ``` DataOnly d = new DataOnly(); ``` 可將值賦給數據成員,但首先必須知道如何引用一個對象的成員。為達到引用對象成員的目的,首先要寫上對象引用的名字,再跟隨一個點號(句點),再跟隨對象內部成員的名字。即“對象引用.成員”。例如: ``` d.i = 47; d.f = 1.1f; d.b = false; ``` 一個對象也可能包含了另一個對象,而另一個對象里則包含了我們想修改的數據。對于這個問題,只需保持“連接句點”即可。例如: ``` myPlane.leftTank.capacity = 100; ``` 除容納數據之外,`DataOnly`類再也不能做更多的事情,因為它沒有成員函數(方法)。為正確理解工作原理,首先必須知道“參數”和“返回值”的概念。我們馬上就會詳加解釋。 **1. 基本類型的成員的默認值** 若某個類成員屬于基本類型,那么即使不明確(顯式)進行初始化,也可以保證它們獲得一個默認值。 基本類型 默認值 ``` Boolean false Char '\u0000'(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d ``` 一旦將變量作為類成員使用,就要特別注意由Java分配的默認值。這樣做可保證基本類型的成員變量肯定得到了初始化(C++不具備這一功能),可有效遏止多種相關的編程錯誤。 然而,這種保證卻并不適用于“局部”變量——那些變量并非一個類的字段。所以,假若在一個函數定義中寫入下述代碼: ``` int x; ``` 那么`x`會得到一些隨機值(這與C和C++是一樣的),不會自動初始化成零。我們責任是在正式使用x前分配一個適當的值。如果忘記,就會得到一條編譯期錯誤,告訴我們變量可能尚未初始化。這種處理正是Java優于C++的表現之一。許多C++編譯器會對變量未初始化發出警告,但在Java里卻是錯誤。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看