数组的定义:数组类型[] 数组名 int[]ary;
创建数组空间 ary=newint[10];
元素:数组中的变量
下标:数组中用来区分不同元素,下标初始值为0
数组的长度:数组中的元素的个数,数组名.length;
数组:数据类型[] 数组名=new 数据类型[length]
确定数组元素的默认值
byte,short,long,int,char,-->0
数组往往是保存多个元素,当元素的数量比较多的时候一般都是使用循环,来辅助对数组的操作
因为数组的元素的个数是固定的,使用for较多
for中的i,往往是跟数组元素的下标一一对应
格式 for(int i=0;i<=length-1;i++){}
定义一个整型数组,每个元素赋值,然后显示元素的内容
Arrays中常用的方法
Arrays.sort(ary1);//按升序排序
二分查找
Arrays.binarySearch(ary1,100):注意平台
根据元素值,查找对应元素的 下标
int index=Arrays.binarySearch(ary1,67);
如果元素存在,返回下标
元素不存在,返回一个负数
元素的值一样,不确定返回哪个值的下标
数组的复制
System.arraycopy(src,srcIndex,desc,descIndex,length)
冒泡排序
int[]a={5,6,7,1,12,4,4647,746,513,4761,7646,1344,5764};
System.out.println(Arrays.toString(a));
//永远把最大值放在后面 注意:i的取值范围0->length-1
for(int i=0;i<a.length-1;i++){//控制比较的轮次
for(intj=0;j<a.length-1-i;j++){//值之间进行交换
//因为j的最后取值是j+1,而且上轮排好的值本次不用排序
if(a[j]<a[j+1]){
intt=0;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
System.out.println(Arrays.toString(a));
冒泡排序
外层只要length-1个数,固定好位置,最后一个数只有一个位置
外层的循环length-1次
内层循环每次都从下标为0的地方开始,到到length-i;
内层循环每次比较都是相邻元素比较[j]<-->[j+1],j的取值范围从0开始,到length-i-1
递归调用:自己调用自己
方法:把具有一定“业务逻辑”代码封装在一起
格式:修饰词 返回值类型 方法名(参数列表){方法体}
返回值类型:方法在执行的时候,最后一个会返回一个结果,这个结果的返回值类型
没有返回值,java默认是void,作为返回值类型
方法名:作为一个方法的标识
参数列表:方法在调用的时候传入的参数
方法调用:方法名(参数列表)
无参数无返回值
方法中的参数,可以没有
返回值:方法调用之后,返回的结果
return:“返回”
1 1) return结果(必须跟方法的返回值类型保持一致)
2) return;终止该方法
2 返回的结果放在哪里?什么地方调用方法,返回的结果就方在什么地方
字符串的大小是根据字母在表中的顺序排列的
首先比较首字母的位置,越靠前越小
如果一致的话比较,比较第2位的字母
数组对象(数组这个东西)
对象数组:(每个元素是对象的数组,每个元素都是个东西的数组)
1 声明数组的引用变量
类型[] 变量名;
2 数组变量的初始化
空与空数组
3 创建数组对象的方式
A new 类型[数量]
B {元素} 静态初始化-->只能用于声明变量时候初始化
C new 类型[]{元素}
上述方式创建的对象没有差别
二维数组
1 元素是数组的数组,每个数组元素是数组对象
2 本质上java没有二维数组,是一维数组套一维数组
3 有极端性能要求的算法中,建议使用一维数组代替二维数组
语法
1 声明二维数组变量
int[][] ary;声明变量
ary = null;
2 创建二维数组对象
ary = new int[2][3];{{0,0,0},{0,0,0}}
ary = new int[2][];{null,null}
ary = new int[][]{null,null};
int[][] a = {null,null};
ayr = new int[][]{{2,3},null,{3,4,5}};
3 迭代二维数组
迭代:Iterat 遍历,就是将数组的每个元素访问一遍