复习: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];
二维数组后一个数组不定义会出现空指针问题