複習:1類和對象
- 對象:符合類的特征獨立存在的個體 真實存在
- 類:所有同種類型的對象所有的特征/行為,抽象成為類 不真實存在
- 類和對象的關系:寫java代碼時:先有類,才有對象
邏輯分析:先有對象,總結出類
定義實體類:成員變量 有預設的初始值;引用資料類型:NULL 基本資料類型:0 成員方法
類的使用:a建立類的對象-在主方法中建立 b調用類的成員變量 c調用類的成員方法
一個檔案夾裡隻能存在一個public修飾的類
局部變量和成員變量的差別:1在方法裡的稱為局部變量 在類内方法外的稱為成員變量
2 局部變量使用前必須初始化 成員變量可以不用初始化(有預設初始值)
3 局部變量的數量由聲明個數決定 成員變量個數由聲明對象決定
4 jvm記憶體中的差別

局部變量存放在方法棧中 方法結束 方法棧消失 局部變量消失
成員變量和對象一起存在堆中
2.學習内容
類的構造 1.構造方法/構造器
- 目的:成員變量初始化
- 定義:a.方法名和類名一緻
b.沒有傳回值類型
c.預設添加無參構造方法
d.如果有自定義的構造方法,就不會在預設添加無參構造方法
this關鍵詞
- this關鍵詞表示目前對象
- 構造方法中 this可以調用自己的成員變量 如果成員變量名和局部變量名同名是 必須用this關鍵詞 不能省略
- 可以在構造方法中調用自己的成員方法 this可以省略
- This可以調用自己的構造方法,this不能省略 而且不能同時調用,會造成死循環,且隻能在構造方法中第一行使用。
方法重載
- 方法名一樣,成員參數不一樣的幾個方法,成為方法重載
- 參數不一樣的情況
- 個數不同
- 順序不同
- 類型不同
- 與參數名無關
C.方法重載和傳回值無關
D.前提:必須在同一個類中才能造成方法重載
數組和引用資料類型
- 數組和引用資料類型的結合 稱為引用數組
- 可能出現的異常:空指針異常
- 産生的原因 調用了空值的成員變量和成員方發
- 解決方法:調用前new一個對象(執行個體化)
3 使用步驟
- 給數組初始化 circle[] c = new circle[3];
- 給數組元素初始化 c[1] = new circle();
在記憶體中的圖示
部分繪制俄羅斯方塊中的方塊
public class Tetris {
int row;
int col;
Tetris(){}
Tetris(int row,int col){
this.col=col;
this.row=row;
}
public void print(){
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 10; j++) {
if((row==j)&&(col==i)){System.out.print("* ");continue;}
System.out.print("- ");
}
System.out.println();
}
}
}方塊類 調用print可以繪制單個方塊
public class I {
Tetris ixing;
I(){}
I(Tetris cell){
ixing=cell;
}
public void print(){
int flag=0;
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 10; j++) {
if((ixing.row==j)&&(ixing.col==i)){
System.out.print("* ");
flag++;
if(flag<4)
ixing.col++;
continue;
}
System.out.print("- ");
}
System.out.println();
}
}
}繪制I型俄羅斯方塊
public class S {
Tetris sxing;
S(){}
S(Tetris cell){
sxing=cell;
}
public void print(){
Tetris[] s=new Tetris[4];
for (int i = 0; i < 4; i++) {
s[i]=new Tetris();
}
s[0]=sxing;
s[1].col=s[0].col+1;
s[1].row=s[0].row;
s[2].col=s[0].col;
s[2].row=s[0].row+1;
s[3].col=s[0].col+1;
s[3].row=s[0].row-1;
for (int i = 0; i < 20; i++) {
y:for (int j = 0; j < 10; j++) {
for (int k = 0; k < 4; k++) {
if((s[k].row==j)&&(s[k].col==i)){System.out.print("* ");continue y;}
}
System.out.print("- ");
}
System.out.println();
}
}
}繪制s型俄羅斯方塊
public class T {
Tetris txing;
T(){}
T(Tetris cell){
txing=cell;
}
public void print(){
Tetris[] s=new Tetris[4];
for (int i = 0; i < 4; i++) {
s[i]=new Tetris();
}
s[0]=txing;
s[1].col=s[0].col+1;
s[1].row=s[0].row;
s[2].col=s[0].col;
s[2].row=s[0].row+1;
s[3].col=s[0].col;
s[3].row=s[0].row-1;
for (int i = 0; i < 20; i++) {
y:for (int j = 0; j < 10; j++) {
for (int k = 0; k < 4; k++) {
if((s[k].row==j)&&(s[k].col==i)){System.out.print("* ");continue y;}
}
System.out.print("- ");
}
System.out.println();
}
}
}T型俄羅斯方塊
public static void main(String[] args) {
Tetris t=new Tetris(7,7);
Tetris t1= new Tetris(3,6);
I i1 = new I(t1);
//i1.print();
//t.print();
//S s1 = new S(t1);
//s1.print();
T t2 = new T(t1);
t2.print();
}調用繪制 現在學到的水準有限 隻能實作這種水準的俄羅斯方塊
二維數組的使用
int數組a有三個元素 第一個元素有4個元素 第二個元素有3個元素 第2個元素的第一個元素為2
第三個元素有5個元素
int[][] a= new int[3][];
a[0]=new int[4];
a[1]=new int[3];
a[1][0]=2;
a[2]=new int[5];
二維數組後一個數組不定義會出現空指針問題