递归(能不用递归就不用,数字小的情况下用递归)
-
A方法调用B方法,我们很容易理解
-
递归就是:A方法调用A方法!就是自己调用自己
-
递归结构包括两个部分
数组
数组概述
数组的定义
-
数组是相同类型数据的有序集合
-
数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
-
其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。
数组声明创建(ArryDeom01)
-
首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法
dataType[] name;//首选方法
或
dataType name[];//效果相同但不是首选 -
Java语言使用new操作符来创建数组,语法如下:
dataType[] name =new dataType [arraySize];
-
数组的元素是通过索引访问的,数组索引从0开始。
-
获取数组长度
arrays.length
数组的四个基本特点
-
其长度是确定的。数组一旦被创建,他的大小就是不可以改变的。
-
其元素必须是相同类型,不允许出现混合类型。
-
数组中的元素可以是任何数据类型,包括基本类型和引用类型。
-
数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中。
数组边界
-
下标的合法区间:[ 0,length-1],如果越界就会报错;
public static void main (String[] args){
int[] a = new int[2];
System.out.printfln(a[2]);
} -
ArraylndexOutOfBoundsException:数组下标越界异常!
数组使用
-
普通的For循环
-
For-Each循环
-
数组作方法入参
-
数组作返回值
多维数组
-
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一堆数组其中每一个元素都是一个一维数组。
-
二维数组
int a[][]=new int [2][5];
Arrays类
冒泡排序
//冒泡排序
//比较数组中,两个相邻元素,如果第一个比第二个大,我们就交换位置
//每次比较,都会产生出一个最大或最小的数字
//下一轮就会少一次
//一次循环,直到结束
public static int[] sort(int[] array){
//临时变量
int temp=0;
//外层循环,判断我们这个循环要走多少次;
for (int i = 0; i < array.length-1; i++) {
boolean flag = false;//通过flag减少没有意义比较
//内层循环,如果第一个数大于第二个数则交换位置
for (int j = 0; j < array.length-1-i; j++) {
if (array[j+1]<array[j]) {
temp = array[j];
array[j]=array[j+1];
array[j+1]=temp;
flag = true;
}
}
if (flag ==false){
break;
}
}
return array;
}
稀疏数组
PS.今天可以的,虽然跟计划有点出入 ,所谓的初入就是全在学 Java,数学跟数据库完全没动,然后晚上复习时间不够,Java东西搞得有点多,现在得睡觉了,剩下的每天早上起来搞吧,打算明天Java不看新的,把今天跟之前的内容再复习一遍,然后看看数学跟数据库,emmm就这样,问题不大。
然后下面是我晚上复习按自思路走的数组概念,时间太少,我可能也不是很聪明,有点搞不完,明天继续睡觉睡觉。
//静态数组的创建
int[] y ={1,2,3,4,5,6};
//动态数组的声明,创建
int[] x = new int[10];
//数组的赋值
x[0]=20;
x[1]=30;
x[2]=40;
//获取数组的长度考arrays.length
int i = x.length;
System.out.println(i); //输出出来i会等于上面定义的数组长度10
int a = y.length;
System.out.println(a); //输出出来a会为上面静态数组的个数,也就是该数组的长度6
//数组边界,数组中下标的合法区间在[0,length-1],如果越界则会报错
//例:System.out.println(x[10]);
//这个输出报错会显示:ArraylndexOutOfBoundsException:
//数组的使用1.for循环
//打印出数组中的全部元素
for (int i1 = 0; i1 < x.length; i1++) {
System.out.print(x[i1]+" ");
}
//计算所有元素的总和
int sum=0;
for (int i1 = 0; i1 < y.length; i1++) {
sum+=y[i1];
}
System.out.println(sum);
//查找最大元素
int max =y[0];
for (int i1 = 1; i1 < y.length; i1++) {
if (y[i1]>max) {
max = y[i1];
}
}
System.out.println(max);
}
public static void main(String[] args) {
int[] x={5,6,9,8,4,10};
int[] reverse = reverse(x);
printArray(reverse);
}
//打印数组中的各个元素
public static void printArray(int[] arrays) {
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i] + " ");
}
}
//反转数组
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
for (int i = 0, j=arrays.length-1; i <arrays.length; i++,j--) {
result[j]=arrays[i];
} return result;
}