1.一维数组:在内存开辟一段连续的空间用来存值.
2.二维数组:在内存开辟一段连续的空间用来存值,每个空间存的是一个一维数组.
3.n维数组:在内存开辟一段连续的空间用来存值,每个空间存的是一个n-1维数组.
4.二维数组特征:
4.1:二维数组是引用数据类型.
4.2:二维数组的四个组成部分(四要素):数据类型,数组名,元素(二维数组每个元素是一个一维数组),索引(二维数组的索引,二维数组每个元素即一维数组也有索引).
4.3:同一个数组中,元素的数据类型相同,不同的数组数据类型可不同.
4.4:访问二维数组中每个空间:数组名[二维数组的索引]
访问二维数组中每空间中一维数组中每个元素:
数组名[二维数组的索引][一维数组的索引]
4.5:二维数组的长度:数组名.length
二维数组的每个元素即一维数组长度:数组名[二维数组索引].length
4.6:二维数组的索引范围:0~数组名.length-1.
二维数组的每个元素即一维数组索引范围:0~数组名[二维数组索引].length-1
4.7:数组的索引不能超过索引范围,如果超过就报ArrayIndexOutOfBoundsException
4.8:二维数组一但分配了空间,它的长度是固定.
4.9:二维数组不赋初值,系统会默认给二维数组的每个一维数组分配初始值
数组类型 默认初始值
int 0
double 0.0
char \u0000,在window系统下解析是空格
String null
boolean false
4.10:数组一但分配了空间,就可以使用.
4.11:数组直接输出,输出的是内存地址.
5.二维数组使用
5.1:二维数组声明的语法:数据类型[][] 数组名;(推荐)
数据类型 数组名[][];
eg://声明二维数组
String[][] stuName1;
int stuAges1[][];
5.2:二维数组分配空间
5.2.1:给已经声明二维数组分配空间:二维数组长度固定,每个一维数组长度不定.
数组名=new 数据类型[二维数组的长度][]
数组名[二维数组索引]=new 数据类型[一维数组的长度];
5.2.2:给已经声明二维数组分配空间:二维数组每个元素即一维数组的长度也固定.
数组名=new 数据类型[二维数组的长度][一维数组的长度];
5.2.3:在声明二维数组的同时分配空间:
数据类型[][] 数组名=new 数据类型[二维数组的长度][]
数组名[二维数组索引]=new 数据类型[一维数组的长度];
5.2.4:在声明二维数组的同时分配空间:
数据类型[][] 数组名=new 数据类型[二维数组的长度][一维数组的长度];
eg://第一种:给数组分配空间
stuName1=new String[3][4];
//第二种:给数组分配空间
stuAges1=new int[3][];
stuAges1[0]=new int[2];
stuAges1[1]=new int[4];
stuAges1[2]=new int[3];
//第三种:声明数组同时分配空间
double[][] height1=new double[3][2];
//第四种:声明数组同时分配空间,一维数组长度不定
double[][] weight1=new double[2][];
weight1[0]=new double[3];
weight1[1]=new double[2];
5.3:二维数组赋值
5.3.1:动态赋值:在任何情况下都可以用.
数组名[二维数组索引][一维数组索引]=值;
eg://给二维数组动态赋值
stuName1[0][0]="张三1";
stuName1[0][1]="张三2";
stuName1[0][2]="张三3";
stuName1[0][3]="张三4";
stuName1[1][0]="李四1";
stuName1[1][1]="李四2";
stuName1[1][2]="李四3";
stuName1[1][3]="李四4";
5.3.2:静态赋值:在数组元素已知时候用
5.3.2.1:将声明数组,给数组分配空间,静态赋值合三为一语法:
数据类型[][] 数组名=new 数据类型[][]{{值10,值11...},{值20,值21...}...};
5.3.2.2:将声明数组,给数组分配空间,静态赋值合三为一语法:
数据类型[][] 数组名={{值10,值11...},{值20,值21...}...};
eg://给数组静态赋值
int[][] stuAges2=new int[][] {{20,30},{23,24,25}};
//给数组静态赋值
double[][] height2= {{1.75,1.8},{1.7,1.72},{1.6,1.69}};
5.4:二维数组遍历
eg:/*用for循环遍历二维数组*/
//外层循环遍历二维数组每个空间
for (int i = 0; i < stuName1.length; i++) {
//内层循环遍历二维数组每个元素即一维数组每个空间
for (int j = 0; j < stuName1[i].length; j++) {
System.out.print(stuName1[i][j]+"\t");
}
//输出二维数组每个空间的一维数组后换行
System.out.println();
}
System.out.println("*****************************************");
/*用增强版for循环遍历二维数组*/
//外层循环遍历二维数组每个空间
for (double[] ds : height2) {
//内层循环遍历二维数组每个元素即一维数组每个空间
for (double d : ds) {
System.out.print(d+"\t");
}
//输出二维数组每个空间的一维数组后换行
System.out.println();
}
6.文档注释:/*注释内容/
6.1:适用范围:在类上,成员属性上,成员方法上.
6.2:作用:解释说明这个类,属性,方法的作用;
方便调用者用对象调用属性和方法时,不能看这个类的源码都知道这个属性和方法的作用;
生成当前工程的JavaDoc文档.
6.3:文档注释常用标签:
6.4:根据文档注释生成javadoc文档
生成javadoc文档:package explore中选中项目-》鼠标右键-》export-》java/javadoc-》下步-》选中要生成文档注释的项目,同时在destination后面选 择文档生成的目的地-》下一步,下一步-在vm option选择下写字符编 码-encoding UTF-8 -charset UTF-8 -》下一步,点完成。
7.程序错误叫bug,调试错误debug
7.1:编译出错:代码一写完,就报一条红线或报红X.
原因:语法写错了,变量超过作用范围.
7.2:运行出错:代码写完后不报错,一运行就报错或一运行就不按你写的流程执行.
原因:代码设计不合理或者写错了.
7.3:解决运行出错:
7.3.1:代码调试:原理:程序由main开始由上到下一行一行执行.
做法:在认为有问题的代码地方:System.out.println();
7.3.2:断点调试:
7.3.2.1:在认为有问题设置断点:在行号旁双击.
7.3.2.2:启动程序调试:点击debug运行(虫子按纽).
7.3.2.3:一步一步运行,观察Variables这个变量窗体,通过变量变化和代码执 行找到错误.
F6:单步跳过,执行完当前行代码,接收执行下一行代码.
F5:单步跳入,跳到这行代码底层去执行.
7.3.2.4:解决错误或异常.
7.3.2.5:取消断点.