成熟的人不問過去,聰明的人不問現在,豁達的人不問未來
應該讓自己忙着做些什麼才能夠開心! —— 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 表示數組的長度
}
}