天天看點

java學習日記day7

複習:1類和對象

  1. 對象:符合類的特征獨立存在的個體 真實存在
  2. 類:所有同種類型的對象所有的特征/行為,抽象成為類 不真實存在
  3. 類和對象的關系:寫java代碼時:先有類,才有對象

邏輯分析:先有對象,總結出類

定義實體類:成員變量 有預設的初始值;引用資料類型:NULL 基本資料類型:0  成員方法

類的使用:a建立類的對象-在主方法中建立 b調用類的成員變量 c調用類的成員方法

一個檔案夾裡隻能存在一個public修飾的類

局部變量和成員變量的差別:1在方法裡的稱為局部變量 在類内方法外的稱為成員變量

2 局部變量使用前必須初始化 成員變量可以不用初始化(有預設初始值)

3 局部變量的數量由聲明個數決定 成員變量個數由聲明對象決定

4 jvm記憶體中的差別

java學習日記day7

局部變量存放在方法棧中 方法結束 方法棧消失 局部變量消失

成員變量和對象一起存在堆中

2.學習内容

類的構造 1.構造方法/構造器

  1. 目的:成員變量初始化
  2. 定義:a.方法名和類名一緻

      b.沒有傳回值類型

      c.預設添加無參構造方法

      d.如果有自定義的構造方法,就不會在預設添加無參構造方法

this關鍵詞

  1. this關鍵詞表示目前對象
  2. 構造方法中 this可以調用自己的成員變量 如果成員變量名和局部變量名同名是 必須用this關鍵詞 不能省略
  3. 可以在構造方法中調用自己的成員方法 this可以省略
  4. This可以調用自己的構造方法,this不能省略 而且不能同時調用,會造成死循環,且隻能在構造方法中第一行使用。

方法重載

  1. 方法名一樣,成員參數不一樣的幾個方法,成為方法重載
  2. 參數不一樣的情況
  1. 個數不同
  2. 順序不同
  3. 類型不同
  4. 與參數名無關

C.方法重載和傳回值無關

D.前提:必須在同一個類中才能造成方法重載

數組和引用資料類型

  1. 數組和引用資料類型的結合 稱為引用數組
  2. 可能出現的異常:空指針異常
  1. 産生的原因 調用了空值的成員變量和成員方發
  2. 解決方法:調用前new一個對象(執行個體化)

3 使用步驟

  1. 給數組初始化   circle[] c = new circle[3];
  2. 給數組元素初始化   c[1] = new circle();

在記憶體中的圖示

java學習日記day7

部分繪制俄羅斯方塊中的方塊

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];      

二維數組後一個數組不定義會出現空指針問題