Java基礎整理(一)

成熟的人不問過去,聰明的人不問現在,豁達的人不問未來
應該讓自己忙着做些什麼才能夠開心! —— LB Zhang


1. 編程基礎

1.Java開發包的種類:JavaEE(企業級),JavaME(移動),JavaSE(標準)
2.Java語言的特性:簡單的程序設計語言。 面向對象、分佈式、健壯、安全、跨平臺、多線程
3.命名Java變量: 包、類、成員、方法、常量
4.理解成員: 成員變量有初始值,局部變量沒有。 實例成員:對象是以類爲藍本創建的類的實例。在類中一般定義了類的成員(變量和方法),所以實例變量包括實例變量和實例方法,在創建類的對象時,對象會擁有類中所定義的變量的副本,對象的變量也稱爲實例變量。對象的方法定義了該對象的行爲,一般稱爲實例方法。實例的方法屬於類的每個對象,而方法的實現是所有類的實例共享的。屬於對象的實例變量和實例方法合稱爲實例成員。
靜態成員:靜態成員隸屬於類,而不屬於任何類生成的對象,當類加載時就會初始化靜態變量;同樣,靜態方法也是隸屬於類的,而不是對象。靜態變量和靜態方法稱爲靜態成員。靜態成員只屬於類。
5.Java中,對象是如何傳遞消息:Java對象通過調用彼此的消息傳遞,是通過調用相互的實例方法來實現的,而不是靜態方法。

6.類的靜態變量的理解:靜態變量不屬於某個實例對象,而是屬於類,所以也稱爲類變量,只要程序加載了類的字節碼,不用創建任何實例對象,靜態變量就會被分配空間,靜態變量就可以被使用了。
7.UML建模表示圖多種,繼承使用一個空心三角來表示,方向是子類指向父類的,表明子類依賴父類。private屬性不能繼承。

8.Java開發的原則:【1】Java中的代碼必須封裝在類中;【2】Java中有兩種值:對象的引用和元數據類型值【3】引用代表根據類的創建【4】對象只能通過引用加以操作【5】Java中的對象不能包含其他的對象,對象只能擁有指向其他對象的引用.

2. 語言基礎


/**
 * Java語言基礎
 */
/**
 * @author MrLBZ
 * 1. String 和 StringBuffer的區別:Java提供了兩個字符串類,String和StringBudder 。他們可以儲存和操作字符串,即包含多個
 * 字符的字符串數據。String提供了值不可變的字符串,StringBuffer類提供了字符串可以進行修改。當知道字符數據要改變的時候,就可以
 * 使用StringBuffer類創建,典型的,可以使用StringBuffer來動態的構造字符串。
 * 2.  
 * 
 */

package ic.lbz.ch02;
/** 
 * @author LbZhang
 * @version 創建時間:2016年5月26日 上午10:44:39 
 * @description Java標識符
 * Java的標識符可以由一系列的字符,每個字符可以是字母、數字和_以及貨幣符。
 * 注意:Java標識符的第一個字母不能是數字,Java語言是區分大小寫的。中文變量和中文字符是合法的。
 */
public class JavaSign {

    //public int 48abc = 20;
    private int Num=100;
    //private int m-48abc;
    private int m_abc=30;
    private int number=60;
    private String $hk;
    private String 我的變量="我是yigebing";
    private double ¥money = 22.00;
    //private String my@email = "hello";

    public static void main(String[] args) {
        JavaSign js = new JavaSign();
        System.out.println(js.get我的變量());
    }

    public int getNum() {
        return Num;
    }

    public void setNum(int num) {
        Num = num;
    }

    public int getM_abc() {
        return m_abc;
    }

    public void setM_abc(int m_abc) {
        this.m_abc = m_abc;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public String get$hk() {
        return $hk;
    }

    public void set$hk(String $hk) {
        this.$hk = $hk;
    }

    public String get我的變量() {
        return 我的變量;
    }

    public void set我的變量(String 我的變量) {
        this.我的變量 = 我的變量;
    }

    public double get¥money() {
        return ¥money;
    }

    public void set¥money(double ¥money) {
        this.¥money = ¥money;
    }


}
package ic.lbz.ch02;
/** 
 * @author LbZhang
 * @version 創建時間:2016年5月26日 上午11:07:37 
 * @description Java關鍵字
 * 
 */
public class JavaKey {

    private int java=100;
    public String True = "Myjava";

    public static void main(String[] args) {
        int integer = 20;
        JavaKey key = new JavaKey();
        System.out.println(key.java);

    }

    /* //這是一個有效註釋 */
}

package ic.lbz.ch02;
/** 
 * @author LbZhang
 * @version 創建時間:2016年5月26日 下午7:45:10 
 * @description 變量初始化
 */
public class TestVariableInit {
    public static void main(String[] args) {

        TestClass tc = new TestClass();
        //int j;
        int j=0;
        System.out.println(tc.str);
        System.out.println(tc.i);
        System.out.println(j);//局部變量不會自動初始化


    }

}

class TestClass{
    int i;
    String str;
}

3. 運算符和類型轉換


/**
 * 運算符和類型轉換
 */
/**
 * @author MrLBZ
 *1. 位運算 : 非 與 或 
 *2. equal和==的區別:【1】原始數據的比較:相等和不等運算符可以比較原始數據類型。不過在軟件開發中需要注意浮點型的數值的比較,
 *看似相等其實可能不想等。【2】引用比較:equals在沒有覆蓋的時候和==一樣比較引用,不過equal相比於==的特殊的地方是可以覆蓋。
 *String就覆蓋了equal方法。
 *3. 參數傳遞:Java參數傳遞是傳值,只不過可以分爲基本類型的傳值和 引用值傳值。
 *4. 數據類型轉換:【1】低級到高級自動類型轉換【2】高級到低級強制類型轉換【3】包裝類過渡類型能夠轉換
 *
 *
 */
package ic.lbz.ch03;

import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import sun.util.calendar.Gregorian;

/** 
 * @author LbZhang
 * @version 創建時間:2016年5月26日 下午10:14:12 
 * @description 日期選擇題
 * 
 */
public class DateTest {

    /**
     * Java統計從1970年1月1號起的毫秒數量來計算日期
     * @param args
     */
    public static void main(String[] args) {
        Date mydate = new Date(0);
        System.out.println(mydate);

        Date now = new Date();
        long nowLong = now.getTime();
        System.out.println(nowLong);

        DateFormat df = DateFormat.getDateInstance();
        String s = df.format(now);
        System.out.println(s);

        GregorianCalendar  gc = new GregorianCalendar(2016,Calendar.APRIL,36);
        Date dt = gc.getTime();
        String ss = df.format(dt);

        System.out.println(ss);

    }


}

4. 訪問控制

/**
 * 聲明和訪問控制
 * 1. 數組聲明: 多維數組必須從左到右的創建。
 * 
 * 2. 類的聲明只能是public abstract final 而不能使private
 * 
 * 3. 非靜態方法有一個this 的對象引用,但是該引用是不能被改變的
 * 
 * 4. Java中可以使用的修飾符
 * 類:abstract、static、public、protected、final
 * 方法:abstract、static、public、protected、private、synchronized(同步)、native(本地)、final
 * 成員變量:static、public、protected、private、transient(過渡)、volatile、final
 * 局部變量:final
 * 
 * 5.final finally finalize的區別
 * final用於聲明屬性、方法和類,分別表示屬性不可變、方法不可覆蓋、類不可繼承
 * finally是異常處理語句結構的一部分,表示總是執行
 * finalize是object類的一個方法,在垃圾收集器執行的時候,會調用被回收的對象的此方法,可以覆蓋此方法,提供垃圾收集時的其他資源的回收,例如關閉文件等。
 * 
 * 6. 包含抽象方法的一定是抽象類
 * 
 * 7. 構造器和普通方法
 * 【1】構造器是爲了創建一個類的實例、方法是 執行Java代碼
 * 【2】修飾符、返回值和命名不同:構造器可以有任何訪問的修飾符,例如public、protected、private或者沒有修飾符。不同於方法的是構造器不能夠有下面的
 * 非訪問性的修飾符:abstract final native static synchronized等
 * 返回類型也是比較重要的。方法能夠返回void或者任何類型的值,構造器沒有,也不需要。
 * 構造器和類使用相同的名字,多爲名詞,完全一致。方法通常用小寫字母開始,多爲動詞。
 * 【3】this的用法:構造器中this必須在第一行;方法引用this只想執行方法的類型的實例,靜態方法不能使用this,因爲靜態方法不屬於類的實例。
 * 【4】super的用法:子類的方法可以使用super調用父類的方法,構造器中調用super是調用父類的構造器實例化加入到子類中。
 * 【5】編譯器自動加入不帶參數的構造器
 * 【6】繼承:構造器是不能被繼承的,在構造器中不能構造自己,會引起死循環。
 * 【7】構造方法的初始化順序
 * 對象創建時的初始化順序是:設置成員的默認初始值-》調用對象的構造方法(但是沒有執行構造方法體)-》調用父類的構造方法-》使用初始化程序和初始化塊初始化成員-》執行構造方法體
 * 注意:在編程中初始化順序:父類靜態變量-》子類靜態變量-》父類非靜態變量-》父類靜態代碼快-》父類構造函數-》子類非靜態變量-》子類靜態代碼塊-》子類構造函數。
 * 
 */
/**
 * @author MrLBZ
 *
 */
package ic.lbz.ch04;
package ic.lbz.ch04;
/** 
 * @author LbZhang
 * @version 創建時間:2016年5月27日 上午9:58:48 
 * @description 類說明
 */
public class MyClass {

    public static void main(String[] args) {
        int [][]a = new int[4][];
        int []aa[] = new int [4][];
        //int ii[] = new int[2] {1,2};//不要重複聲明
        int i[] = new int[] {1,2};//
        //數組大小是通過初始化代碼隱含給定的,在一個數組引用的聲明中不需要指定數組的大小,數組的大小總是同數組的實例而不是
        //同數組的引用相關聯的。

        //aa.length 表示數組的長度



    }

}
發佈了69 篇原創文章 · 獲贊 34 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章