大數據分析技術之JAVA基礎(三):類與對象

寫在前面:這幾天在學習課程的東西就沒能抽空出來寫一些分享,今天講一下面向對象的類與對象的相關內容

學習內容安排

JAVA基礎課程學習:數據類型(一)、運算符表達式和程序結構控制(二)、面向對象基礎:類與對象和接口(三)、面向對象基礎:繼承抽象多態封裝(四)、異常類和常用實用類(五)、組件和事件處理(六)、IO和JDBC(七)、泛型和集合函數(八)。

三、面向對象基礎:類與對象和接口

在本次分享中我們會分享什麼是類,類聲明、成員變量、類變量、方法、創建對象等,具體的點我們主要結合程序進行說明。
類聲明
那麼我們首先來說明一下什麼是類,按照我的理解類的主要內容包括兩個部分,第一個部分是相似的屬性,第二個部分是相同或者相似的行爲,前者是靜態的表現後者是動態的表現,那麼我們來試着聲明一下一個簡單的類,

package tt;

class Csdn3_1 {
    int id;
    String name, email, mobile;  //學生的學號、姓名、郵件、手機號
    
    void study(){ //學習活動  
    }
    
    void mySport(){ //運動
	}
}

這樣一個類我們描述的是學生的一些基本特徵以及學生的活動一個是study一個是mysport,本文就將在這個基礎上不斷進行擴展。下面首先對上面程序進行解釋。
package就是對文件管理存放文件名的說明;
class是對類的聲明;
void study()、mySport() 都是對於方法的聲明,所謂方法也就是常說的函數。


成員變量、類變量
所謂成員變量也就是常說的全局變量,也就是成員變量聲明後適用於該類所有方法,對應的成員變量那麼就有局部變量,局部變量僅限於在某個方法裏面進行聲明使用,當局部變量與成員變量同名時,在該方法中使用局部變量。但如果兩者都想用可以使用this調用全局的變量值。另外如果想對成員變量進行賦值需要放在方法裏纔行。成員變量在未賦值之前就存在默認值,而類變量沒有。
類變量這個概念對應的是實例變量,所謂類變量可以簡單的理解爲唯一變量,就是當樣本的某個變量值全都是一樣的,爲了簡便工作節約儲存空間,可以定義一個類變量,定義方法就是在變量之前加上static,對於類變量在後續的調用中也可直接調用,這個放在後面再說。

package tt;

class Csdn3_1 {
    int id = 10;
    String name, email, mobile; //成員變量
    static String major; //類變量
    void study(){
    	int id = 542;//局部變量
    	int id_sum;
    	id_sum = id + this.id;
    }
}

方法
說完了變量的聲明後,也就完成了類的前半部分相同的屬性,那麼開始後半部分的說明也就是相同的的行爲,也就是我們所說的方法。方法的組成部分分爲類別說明、參數和裏面的執行內容,

package tt;

class Csdn3_1 {
    int id = 10;
    String name, email, mobile; 
    static String major;
    
    float study(float grade){//浮點型帶參數的實例方法
        float y = grade;
        return (float)(y * 0.5);
    }
    
    static void mySport(){ //無類型的類方法
        System.out.println(major);
    }
}

這裏study前面的float就是在聲明該方法會返回一個浮點數,然後括號裏的float grade就是該方法接受的參數,接受一個成績,然後return返回一個強制轉換的成績處理後的值。
下面static表示聲明的是一個類方法,類方法同類變量一樣在調用時可以直接調用,不必利用new進行,這同樣放在後面來說。void表示的是無類型,值得注意的是只有類方法才能夠調用,也就是類變量major只能由類方法mySport調用。


構造方法、創建對象
講了這麼多,那麼到底如何來運行這個程序呢,如果我們僅僅是把上面的類進行聲明瞭,那此時是不可能運行的,因爲在JAVA中還需要一個構造函數和主函數,

package tt;

public class Csdn3_1 {
    int id = 10;
    String name, email, mobile; 
    private static String major; //類變量
    
    Csdn3_1(){ //構造函數
        float g = 96.5f;
        float hGrade = study(g);
        System.out.println("成績爲:"+ hGrade);
        Csdn3_1.mySport();
    }
    
    float study(float grade){//實例方法既能調用類變量也能調用實例變量
        float y = grade;
        return (float)(y * 0.5);
    }
    
    static void mySport(){ //類方法只能調用類變量
        System.out.println(major);
    }
    
    public static void main(String[] args) { //主函數
        Csdn3_1 student = new Csdn3_1(); //創建對象
        System.out.println("以下一個學生的情況");
        Csdn3_1.major = "Math"; //類變量的調用
        student.id = 542;
        student.name = "唐三";
        student.email = "[email protected]";
        student.mobile = "123456";
        Csdn3_1.mySport(); //類函數的調用
        System.out.println("ID:"+student.id);
        System.out.println("name:"+student.name);
        System.out.println("email:"+student.email);
        System.out.println("mobile:"+student.mobile);
    }
}

下面我們需要對上面的程序進行部分的說明,首先來說一下class前面的public,這個public其實是一種權限的聲明,總共有四種聲明public、private、protected以及不輸入,他們各自對應着不同的使用權限,public意味着無限制使用該類方法或者屬性、private表示僅在當前類下使用、protected表示不能在其他package和子孫類中使用,不輸入表示對於其他package不能使用,這裏的子孫類留到以後再說。然後就是說明構造方法的構造要求,要求方法名必須與類名相同,且不存在類型說明。
爲了能夠將類進行實例化,我們需要創建對象,創建對象就是首先說明類名,然後將變量使用new進行賦值類,這樣就可以調用類中的函數與屬性了。對於之前說的類變量以及類方法,可以直接類名,類變量名或者類方法就能夠進行調用,不用單獨在創建變量後使用,注意可以在實例方法中調用類方法,但是不能在類方法中調用實例方法。
整體的函數運行順序就是,首先在主方法處創建對象,然後創建的對象會自動調用構造方法,構造方法向study函數傳參數並輸出返回值,並調用mySport函數,然後返回給主函數,然後主函數並將自己大括號類函數進行輸出。具體輸出結果如下,

成績爲:48.25
null
以下一個學生的情況
Math
ID:542
name:唐三
email:[email protected]
mobile:123456

至於爲什麼構造函數直接調用類方法顯示出的是null可能類方法也只能通過類調用吧。


數組的計算
在JAVA中數組並不是基礎數據類型,那麼在對JAVA映射變量的值進行修改後會對原數組值進行更改,下面來看一個例子,


package tt;

public class Csdn3_2 {
    static float x;
    
    Test3_2(){ //構造方法,實例方法沒有static
        int s[] = {2,3,12,34,5,6,8,456};
        x = 8.55f; 
        study(s);//可以在實例方法裏使用類方法,但反過來就不行。
        float area = getArea(x);
        System.out.println(x); //輸出x看是否改變
        System.out.println(s[0]); //輸出改變後的數組

    }
    float getArea(float radius){
        float y = radius;
        y++;
        System.out.println(y);
        return (float)(y);
    }
    
    static void study(int s[]){
        int xx[];
        xx = s;
        xx[0]=120; //數組因爲不作爲基礎數據類型,所以會隨着映射對象改動而變動值
    }
    public static void main(String[] args) {
        Test3_2 tt = new Test3_2();
    }
}
9.55
8.55
120

從輸出結果可以看到,x的值賦給y後,y自增了後x並沒有變化,而數組s賦給xx後,改變xx的第一位同樣也導致了s數組的第一位改變了。
更大的數據類型
當我們發現之前講的8大基礎類型不夠用的時候,我們就可以使用類的方法,調用java.lang包裏的Btye、Integer、Short、Long、Float、Double、Character這樣就可以使用無限制位數的數值了,當然這個包是默認加載了的,

package tt;

public class Csdn3_3 {
    public static void main(String[] args) {
        String s1 = "20", s2 = "80";
        System.out.println(s1 + s2);
        Double d1 = new Double(s1);
        Double d2 = new Double(s2); // 用類來創建數字,遇到很大的數據,不能簡單的加減乘除
        double m1 = d1.doubleValue();
        double m2 = d2.doubleValue();
        System.out.println(m1+m2);
    }
}
2080
100.0

這裏需要注意的是如果是使用了類的方法來定義變量的話,我們在進行運算的時候就需要用對應的方法來處理,比如doubleValue()然後再進行計算。


結語
今天分享了一部分關於類和方法的基礎東西,下一節繼續更新。
謝謝閱讀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章