国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

[Java編程思想-學習筆記]第2章 一切都是對象

2019-11-15 00:37:46
字體:
來源:轉載
供稿:網(wǎng)友
[java編程思想-學習筆記]第2章 一切都是對象2.1創(chuàng)建新的數(shù)據(jù)類型:類

通過第一章掌握了面向對象的理論后,我們知道每個對象必定屬于一個類型,那么Java如何創(chuàng)建新的數(shù)據(jù)類型?如下程序所示:

class Circle {    // 屬性    // 方法}

如上所示,使用關鍵字class定義了類Circle,用花括號{ }將整個類包括起來。當然,這個類還不能做任何事,它還需要定義一些屬性和方法。

2.2屬性和方法

面向對象的一個特性就是將數(shù)據(jù)和方法結合起來。比如對一個圓抽象,可見圓有它的屬性半徑,它還有方法,如告訴我們它的周長和面積。不光是圓,其他任何對象都有它的屬性和方法,針對這樣的特點,面向對象就把屬性和方法結合起來。如下程序所示:

class Circle {    double radius;// 半徑    Circle() {}// 構造器    double getArea() { return 3.14 * radius * radius; }// 獲取面積    double getPerimeter() { 2 * 3.14 * radius; }// 獲取周長}

其中 Circle() {}是類Circle的構造器,它雖未做任何事,但它是用來在創(chuàng)建對象時初始化對象的,構造器的名字必須和類名相同。

值得一提的,類的屬性都有默認值,這里的radius的默認值是 0.0。此外,屬性以及方法的參數(shù)和返回值不僅可以是基本數(shù)據(jù)類型,還可以是引用數(shù)據(jù)類型,也就是對象和數(shù)組,如下所示

class MyClass {    boolean bo;    char c;    byte b;    short s;    int i;    long lo;    float f;    double d;        String str;        void getDefaultFieldValue() {        PRint(bo);// false        print(c);// '/0'        print(b);// 0        print(s);// 0        print(i);// 0        print(lo);// 0        print(f);// 0.0        print(d);// 0.0                print(str);// null    }        String fun(String[] s) {// 返回值和參數(shù)可以是引用數(shù)據(jù)類型        return s[1];    }}
2.3創(chuàng)建對象

有了類以后,就要創(chuàng)建對象了。創(chuàng)建對象很簡單,直接使用new創(chuàng)建即可,比如我們要創(chuàng)建一個Circle對象

new Circle();

這里使用了括號,很容易使我們想到方法,因此創(chuàng)建對象的同時必定調用了一個方法,即構造器。我們也可以向構造器傳入?yún)?shù),但前提是類必須要定義帶有參數(shù)的構造器。

2.4用引用操縱對象

創(chuàng)建對象后就該拿來使用,那如何操縱對象呢?用引用操縱對象,打個比方,我們創(chuàng)建了電視機這樣的對象,它是放在堆里的,但平時我們總是使用遙控器控制它,遙控器就相當于引用變量,它是放在堆棧里的,這個引用變量不光可以控制一個電視機,當我們再創(chuàng)建一個相同的電視機時,這個引用變量也可以控制它。如下圖解

上圖說明了遙控器A(電視機的引用變量)能控制電視機 A(一個電視機對象)。遙控器A還可以改變它所控制的對象,轉而控制電視機 B 或 C,如下所示

如上所示,遙控器 A既可以控制電視機 A,也可以改變控制方向,控制電視機 B。用Java程序來說明,如下

Television tv = new Television();// 電視機Atv.on();// 打開電視機Atv.off();// 關閉tv = new Television();// 引用變量tv轉而控制電視機Btv.on();tv.off();

可見,一個電視機引用變量就可以控制電視機 A 或 B。

除了用遙控器間接操縱對象,也可以直接按電視機的按鈕,那就是直接操縱匿名對象,如下所示

new Television().on();// 打開電視機Anew Television().on();// 打開電視機B

然而,因為對象是匿名的,所以用過一次后就找不到它了,因此上述程序的兩臺電視機再也無法關閉了。

2.5永遠不需要銷毀對象

使用完對象后,就得把對象銷毀掉,在Java中都是通過垃圾回收器自動銷毀對象的。那么當對象超出其作用域時會不會馬上被銷毀呢?不會,即使整個程序退出了,對象還不會馬上被銷毀,垃圾回收器總會在適當?shù)臅r間銷毀對象。

關于對象的創(chuàng)建和銷毀涉及了JVM的內存分配和回收的機制,若要詳細闡述,定會超出本文篇幅,且不再本文討論范圍,故此一筆略過。

2.6第一個Java程序

終于可以編寫第一個Java程序了,這里就展示經(jīng)典的 Hello, world 程序

public class HelloWorld {    public static void main(String[] args) {        System.out.println("Hello, world");    }}

逐行解釋一下,public指的是訪問控制符,這里的意思是HelloWorld是公共類,它可以在包外被訪問,此外一個Java文件只能有一個public類,可以包含任意多個非public類,文件名必須和public類的名字相同。第二行指的是main方法,它必須要用publicstatic修飾,如果把public改為其它修飾符,或者去掉static,結果是雖然通過了編譯,但是運行時報錯。String[] argsmain方法的參數(shù),指的是接收String數(shù)組,比如我輸入命令"java HelloWorld hello world"讓程序運行,那么String數(shù)組的第一個元素是hello,第二個元素是world。第三行打印結果,System是一個Java類庫定義好的類,out是它的一個屬性,或者說成員,是引用數(shù)據(jù)類型的。第三行所做的事是,類System的成員調用println方法打印了"Hello, world"。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鱼台县| 新邵县| 卓尼县| 楚雄市| 安化县| 新丰县| 遂昌县| 昌都县| 台南市| 长垣县| 宁陕县| 台安县| 文登市| 宜阳县| 临沂市| 全椒县| 于都县| 额尔古纳市| 盐津县| 吉安县| 土默特左旗| 永年县| 沙湾县| 娄底市| 黔东| 成武县| 晋中市| 枝江市| 潢川县| 花垣县| 台东市| 济源市| 冀州市| 涿鹿县| 新巴尔虎右旗| 新宁县| 密山市| 淅川县| 年辖:市辖区| 金坛市| 潮州市|