二维数组 面向对象

一·二维数组

1·静态初始化

格式:数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2},{元素1,元素2}}

范例:int[][] arr = new int[][]{{11,22},{33,44}};

简化格式:数据类型[][] 数组名 = {{元素1,元素2},{元素1,元素2}};

获取:arr([0][0]); 表示获取第1一个数组的0索引

2·二维数组的动态初始化

格式:数据类型[][] 数组名 = new[m][n];

        m表示这个二维数组,可以存放多少个一维数组

        n表示每一个一维数组,可以存放多少个类型数据

3·二维数组在堆里储存的元素其实是两个一维数组的地址值

二·面向对象 

1·类和对象

类(设计图):是对象共同特征的描述;

对象:真实存在的具体东西;

1·定义类

public class 类名{

        1 成员变量(代表属性,一般是名词)

        2 成员方法(代表行为,一般是动词)

        3 构造器

        4 代码块

        5 内部类

}

2·得到对象

public class 类名 {

        1 成员变量(代表属性,一般是名词)

        2 成员方法(代表行为,一般是动词)

}

类名 对象名 = new 类名();

调用对象:对象.成员变量

                  对象.成员方法()

3·补充

·用来描述一类事物的类,专业叫做:Javabean类。

        在javabean类中,是不写main方法的

·在以前,编写main 方法的类,叫做测试类,

        我们可以在测试类中创建javabean类的对象并进行赋值调用。

·类名首字母建议大写,需要见名知意,驼峰模式。

·一个java文件里可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码的文件名。

·实际开发中建议一个文件定义一个class类

·成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;(一般无需指定初始化值,存在默认值)

 2·封装

对象代表什么,就得封装对应的数据,并提供数据对应的行为

1·private 关键字是一个权限修饰符

2·可以修饰成员(成员变量和成员方法)

3·被private修饰的成员只能在本类中才能被访问

4·针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

5·提供“setXxxv(参数)”方法,用于给成员变量赋值,方法用public修饰

6·提供“getXxx()”方法,用于获取成员变量的值,方法用public修饰 

 3·就近原则和this关键字 

1·就近原则:

上图 打印age变量 时 诺没有“this.” 则age时局部变量里的

2·this关键字

本质是:所在方法调用者的地址值,也就是对象的地址值

 上图 有this关键字则是成员变量里的

区分局部变量和成员变量

4·构造方法

在创建对象时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化的。

1·概念

构造方法也叫做构造器,构造函数

2·作用:

在创建对象时给成员变量进行初始化的

3·格式 :

public class 类名 { 

        修饰符 类名(参数){

                方法体;

        }

}

特点:

1·方法名与类名相同,大小写也要一致

2·没有返回值,连void都没有

3没有具体的返回值(不能由retrun带回结果数据)

注意事项: 

1·构造方法的定义

 如果没有定义构造方法,系统将会给出一个默认的无参数的构造方法

 如果定义了构造方法,系统将不会提供默认的构造方法

2·构造方法的重载

 带参构造方法,和无参构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载

3·推荐使用的方式

 无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法

5·三种情况的对象内存 

1·一个对象的内存:

1·加载class文件(在方法区加载class,有类的所有信息例如变量和方法)

2·声名局部变量(创建对象等号左边的代码在栈内存中开辟一个空间)

3·在堆内存中开辟一个空间(创建对象等号右边的代码在堆内存中开辟一个空间,将所有成员变量copy过来,还会储存成员方法的地址值)

4·默认初始化

5·显示初始化

6·构造初始化

7·将内存堆中的地址复制给左边的局部变量

2·两个对象的内存:

1·创建第一个对象过程如上面

2·创建第二个对象时不需要加载class文件了,在堆内存中开辟了一个新的空间,并有一个新的地址值

3·对象一二的new关键字在堆中是互不干扰不同的空间

3·两个引用指向了同一个对象

创建一个名为student的类

定义对象:

student stu1 = new student;

stu1.name = “阿强”;

student stu2 = stu1;

stu2.name = “阿珍”;

sout(stu1.name + “......” + stu2.name);

“stu1和stu2指向同一个内存空间”

打印结果:阿珍......阿珍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值