(1)数组的定义
数组是内存中的一块连续的存储空间
数组是一次性定义多个相同类型的变量
(2)定义一个数组:
int[] a; //定义一个数组,变量名就是指向数组首地址的指针
a=new int[10]; //为数组分配空间,分配了长度为10,int类型的数组空间,把首地址赋值给a,数组长度一旦确定不能改变
一个数组在java中就是一个对象,数组是一个没有方法,只有属性的对象。
a.length; //得到数组的长度
访问数组元素:
for(int i=0;i
System.out.println(a[i]);
}
数组元素有默认值:默认值是各式各样的0
数组元素默认值规则:
int 0
long 0l
float 0f
double 0d
boolean false
对象数组 null(空指针)
(3)初始化:
int[] i = {0,1,2,3}; //显示初始化
(4)二维数组:
定义二维数组:int[][] a=new int[3][4] 3行4列
java中的二维数组其实是一维数组,一维数组的元素又是个一维数组
1) 有效定义
int[][] a = new int[2][3]; (同时给定一维,二维的空间)
int[][] b = new int[3][]; (给定一维的空间,二维空间待定,不规则的二维数组,只有java中有,C++没有)
b[0] = new int[2];
b[1] = new int[4];
b[2] = new int[3];
2) 无效定义
int[][] i1 = new int[][3]; //不能不指定行数
3) 显示初始化二维数组
int[][] c={{1,2,3,4}{5,6,7,8}{9,8,7,6}};
3) 数组长度
int[] b = new int[5];
int len = b.length; //len = 5;
int[][] a = new int[4][6];
len = a.length; //len = 4;
len = a[0].length; //len = 6;
2、面向对象
(1)对象:现实生活中一切客观存在的事物(万物皆对象)
有什么:属性
能做什么:方法,行为
(2)抽象:对具体的对象中抽取有用信息
对象有其固有属性,对象的方法,即对象的行为(对象能做什么)
对象本身是简单的(功能简单),多个对象可以组成复杂的系统(对象之间彼此调用对方的方法)
(3)面向对象的优点
1)对象应当是各司其职(功能简单),各尽所能(把自己的功能作到最好)。(弱耦合性实现了前面所述的对象的特点)
2)对象的弱耦合性,是对象之间的联系
对象的耦合性要尽量的弱,也就是对象之间的联系尽可能的弱
弱耦合是通过标准来实现的
3)可重用性
对象的功能越简单,复用性就越好。(对象的耦合性弱,复用性就比较强)
4)可扩展性
系统的可插入性,是在系统中加入新的对象之后的系统稳定性。
对象的可替换性,是在系统中替换原有的对象之后的系统的稳定性。
(4)面向过程和面向对象的比较
面向过程是先有算法,后又数据结构 --- (怎么解决问题)
面向对象是先有对象(数据结构),后有算法(对象间的方法调用) --- (用什么做)
(5)类的定义:类是对象共性的抽象,是客观事物在人脑中的主观反映,类是对象的模板
1)属性
类型 变量名; --> 实例变量,系统赋初始值
默认值 使用范围 命名冲突
实例变量 系统赋初始值 本类的内部使用 允许实例变量和局部变量发生命名冲突,在命名冲突的时候变量的值->局部优先
局部变量 先赋值后使用 定义他的代码块 同范围内不允许两个局部变量发生命名冲突
2)方法的定义:
不允许方法的声明和实现分开
方法声明(定义,实现)的组成:修饰符 返回值 方法名(参数表)抛出的异常
(a)方法的修饰符(0或多个修饰符,出现的顺序无关)
(b)方法的返回值类型
(c)方法名
(d)方法的参数表
(e)方法中允许抛出的异常
(6)方法重载(overload)
同一个类中方法名相同,参数表不同(指参数的个数,参数的类型,排列顺序)就叫方法重载,与返回值无关
在编译时,编译器会根据参数选择适当的方法,所以重载也叫编译时多态方法重载又叫编译时多态
调用时要给出明确参数并确定调用某一方法。在编译时,编译器会根据参数选择适当的方法,所以重载也叫编译时多态。
** 方法的重载可以屏蔽一个对象同一类方法由于参数不同所造成的差异 **
作业:
请输出一个九阶的矩阵
九宫格:定义一个奇数阶二维数组,把每个元素顺序填入不同的自然数,要求行列和对角线元素相加的结果相等
算法:先在第一行的中间位置放置1
1)行列都越界或右上角有数时,这个数放在上个数的下面
2)行越界列不动放入列的最后一行
3)列越界行不动放入行的第一列
阅读(1981) | 评论(0) | 转发(0) |