天天看点

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

二维数组后一个数组不定义会出现空指针问题