方法
1、注意什么是method signature。
2、return结束方法。return可返回数组。void方法return可有可无,可中止方法。return;
3、声明变量分配内存。定义不分配。
4、main方法由JVM调用。
5、控制流在调用者与被调方法间转换。
6、可兼容类型的参数可以不用显式转换。如int转double。
7、值传递:形参的变化不影响实参,实参该多少该多少。实参与形参内存独立。都在栈里。
8、重载:方法名相同,参数列表(个数+类型)不同。
模糊调用:多个匹配方法,编译器不知道该访问谁。
Math类
1、Trigonometic Method
public static double sin(double radians)
//cos,tan
public static double toRadians(double degree)
public static double toDegrees(double radians)
public static double asin(double a)
2、Exponent Method
public static double exp(double x)
//e^x
public static double log(double x)
//ln(x)
public static double log10(double x)
3、Rounding Method
public static double ceil(double x)
//向上取整
public static double floor(double x)
//向下取整
public static double rint(double x)
//取最近整数,等距取偶数。
public static int round(float x)
//(int)Math.floor(x+0.5),即(x+0.5)向下取整。
public static long round(double x)
4、Math类和JOptionPane类无main方法。
Array
1、数组声明不为数组元素分配内存。只给数组的引用分配内存。
数组是引用数组元素的变量。
2、一维数组:int[ ]a=new int[10];
//声明 赋值 创建
声明:int[] a;
创建:a=new int[10];
初始化:int[] a={8,6,3,4};
ora[0]=8,a[1]=6,...
默认值:数值型0,字符型’\u0000’,布尔型false。
3、复制数组:复制引用值,不是数组内容。
方法:①循环赋值;②System.arraycopy(源数组,源起始复制位,目标数组,目标起始复制位,length);注:目标数组必须在此之前已建立。③clone();
4、匿名数组:new int[]{4,6,9,…};
5、传递:按共享传递pass-by-sharing,传引用值。方法内外的数组是一个。在方法内操作等同于在方法外操作,即调用方法会改变调用者原有数组的内容。
JVM把数组存在堆中。
eg传递数组实参:
int[] a={1,2};
void swap(int n1,int n2){……};
void swap1(int[] array){……};
swap(a[0],a[1]);
syso(a[0],a[1]);
swap1(a);
syso(a[0],a[1]);
结果:1,2;2,1。
6、可变长参数:类型...变量名
可作数组使用。double...num
注:①调用时,如果同时能匹配固定参数和可变长参数的方法,则优先匹配固定参数方法。
②如果同时和2个包含可变参数的方法匹配,则编译报错。(模糊调用)③一个方法只能有一个可变参数,且可变参数应放在所有参数里最后。
7、Arrays类:java.lang.Arrays
sort(array)
:array数组升序排列。
sort(array,s_pos,e_pos)
:第几位到第几位升序排列。
binarySearch(array,num)
:二分法找num,返回位置。
equals(array1,array2)
:两数组内容是否相同。
fill(array,num):整个数组都是num。
fill(array,s_pos,e_pos,num):第几位到第几位之间都是num。
8、二维数组:
int[][] a=new int[2][3]或new int[2][ ]; a[0][0]=1;a[0][1]=2;...
orint[][] a={{1,2,3},{4,5,6}};
x.length=2,x[0].length=3。x[0]=new int[3];
锯齿数组ragged array:每行元素个数不同。
算法
1、随机洗牌
double[] array={1,2.5,3,6.4};
for(int i=0;i<array.length;i++){
int index=(int)(Math.random()*array.length);
double temp=array[i];
array[i]=array[index];
array[index]=temp;
}
2、二分法查找
n个元素,查找log2(n)+1次。
3、选择排序:由小到大
第一个数作当前最小数,找剩余里最小的记位置再换。
public static void selectionSort(int[] a){
for(int i=0;i<a.length-1;i++){
int currentMin=a[i];
int currentIndex=i;
for(int j=i+1;j<a.length;j++){
if(a[j]<currentMin){
currentMin=a[j];
currentIndex=j;
}
if(currentIndex!=i){
a[currentIndex]=a[i];
a[i]=currentMin;
}
}
}
}
4、插入排序:由小到大
public static void insertSort(int[] a) {
for(int i=1;i<a.length;i++) {
int temp=a[i];
for(int j=i-1;j>=0;j--) {
if(j>=1&&a[i]<a[j]&&a[i]>a[j-1]||j==0&&a[i]<a[j]) {
for(int k=i-1;k>=j;k--) a[k+1]=a[k];
a[j]=temp;}
}
}
}