一:方法(函数)
1.静态方法的调用:属于类而非对象,类名.方法名(),如果在同一个类中,可直接方法名调用(默认为main方法所在的类)
2.静态方法不能调用非静态方法
3.java中函数返回值为void时,说明函数没有返回值,可用return 结束该函数(此时return可有可无)
4.方法的参数列表既可以是有参数的,也可以是没有参数的
5.如果方法有返回值, 方法中必须使用关键字return返回该值
二.方法参数的传递
1.传递的参数是基本数据类型(数值型和字符型,但布尔型(boolean)
不能作为参数类型),接收到的实际上是这个数据的值拷贝
可以理解为编译器会为形参和实参分别开辟内存来存储该类型的数据,为两个不同的内存空间;
2.如果传递的参数是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址
可以理解为将实参的地址传递给形参,但编译器未给形参开辟存储该类型数据的空间,形参和实参共同指向同一块内存空间;
二:数组
1.一个数组变量就是在内存空间划出一串连续的空间


2.int[ ] score1; 意为还未给数组分配内存空间;
3.注意:声明数组时不规定数组长度,否则编译出错
4.数组未初始化时int型默认为0,double默认为0.0,String默认为NULL;
4.二维数组的每行从下标0(左对齐)开始,但每行长度可以不同;


5.静态初始化是声明初始化,动态初始化是运行初始化
三.插入排序
1.n个数据共需要排序n-1趟,从第二个元素开始插入,将每次要插入的元素作为指示灯数据,
用一个变量J来记录指示灯数据的前一个数据,每趟排序为:指示灯数据依次与指示灯数据前面数据相比较,
如果指示灯数据较小,就将该数据后移一位,最大的比较次数是指示灯数据都比前面的数据小,后移次数最多,
此时指示灯数据是最小的(有序序列中),此趟排序结束, 如果不小于则为正序(排序正常),跳出本趟排序(break),
进行下一趟排序;
四.冒泡排序
n个数据需比较n-1趟,每趟排序将本趟排序的最大值放在最后,
第一趟比较n-1次,第二趟比较n-2次,...第n趟排序比较n-i次,i为第i趟排序;
优化;如果本趟排序没有进行数据交换,说明为正序,则不需进行排序,直接跳出整个排序过程
实现方法为,可在外层循环上结束条件加flag标识,内层循环每交换一次将flag标识更新;
五.快速排序
从待排序的数据序列中任取一个数据(如第一个数据)作为分界值,所有比它小的数据元素放到左边,
所有比它大的数据元素放到它的右边。
思想:将数据序列的第一个值作为分界值,设start为待排序数组的起始下标,设end为待排序数组的结束下标,
红军i指向第二个数据,寻找比分界值大的数,蓝军j指向最后一个数据,寻找比分界值小的数,红军依次与分界值比较,找比分界值大的数,
如果小于则前进一个继续比较,如果找到跳出寻找的循环,如果红军走到end处还没找到则结束寻找
蓝军同理,只是找比分界值小的数据而已,
红军蓝军寻找结束后,如果红军未超越蓝军进行数据交换,否则说明为正序,直接跳出最外层循环即可
最后将分界值与蓝军交换,此时分界值左边全为比分界值小的,右边全为比分界值大的,