一,方法:类似于函数,可被多次执行;
定义结构:修饰符 返回值类型 方法名(参数表){执行语句;return 返回值;}
参数表是用于描述方法在被调用时需要接收的参数,如果方法不需要参数,则参数表为空;方法的返回值必须为方法声明的返回值类型,如果没有返回值,返回值类型要声明为void,此时,方法中的return语句可以省略。
重载:与C++、C#类似,简单来说,重载就是方法名相同,参数表不同,与返回值无关;通过传入的参数来确定调用哪个重载的方法。
递归:再简单来说就是方法自身调用方法本身以达到递归的效果。
二,数组:定义格式:int [] x=new int [10];
获取数组长度的函数为length,通过“数组名.length”来获取,该长度为数组中元素个数;
当数组创建好后还未赋值时,该数组元素的值并非像C,C++,C#中的那样是地址,而是一个固定的值,这是因为在Java中当数组创建成功后,系统会自动为其赋上初始默认值,特定的数据类型有特定的默认值;
多维数组:定义格式:int [] [] x=new int [] [];(动态初始化);int [] [] x=new int [] {…};(静态);int [] [] x={{…},{…},{…}};(静态);多维数组的使用方法没有多大的变化,就不赘述了!
最值、排序:两个都用到了for循环体,书中的寻找最值方法,通过for循环一个一个地比较,效率太低,用折半查找的方法会快很多;排序也是,书中的冒泡也是效率比较低的方法,但是也简单易懂好上手,用快排可以大大缩短排序时间;
二分查找:
public static int binSearch(int srcArray[], int start, int end, int key)
{
int mid = (end - start) / 2 + start;
if (srcArray[mid] == key) { return mid; }
if (start >= end) { return -1; }
else if (key > srcArray[mid])
{ return binSearch(srcArray, mid + 1, end, key); }
else if (key < srcArray[mid])
{ return binSearch(srcArray, start, mid - 1, key); }
return -1;
} (实现了递归的二分)
//二分查找使用了分治法的思想,找一个点将整个数组一分为二,移动前后指针实现快速寻找目标。
快排:
public static int partition(int []array,int l,int hi)
{
int key=array[l];
while(l<hi){
while(array[hi]>=key&&hi>l){//从后半部分向前扫描 hi--; }
array[l]=array[hi];
while(array[l]<=key&&hi>l){从前半部分向后扫描 l++; }
array[hi]=array[l]; }
array[hi]=key;
return hi;
}