耦合:一个方法完成了两个功能
这是不好的编码方法,当需要修改一个功能,需要牵扯到整个方法
解耦:每一个功能都是独立存在的
每个功能都可以两两组合,完成更强大的功能,修改和维护都是独立的
日常写代码一定要往低耦合写,更便于维护
返回值的设置:看方法有没有产生新的对象,产生了就返回
数组拷贝
System.arrayCopy() public static String arraryCopy(int[] srcArr,int stratIndex,int length,int[] destArr,int destIndex){ for(int i=stratIndex;i<stratIndex+length;i++){ destArr[destIndex]=srcArr[i]; destIndex++; } return destArr; }
数组打印
Arrays.toString() public static String toString(int[] arr){ String s="[" for(int i=0;i<arr.length;i++){ if(i==arr.length-1){ s+=arr[i]; }else{ s+=(arr[i]+","); } } s+="]"; return s; }
每个元素是一个一维数组的一维数组是二维数组
语法:
动态初始化:类型[] [] 变量名=new 类型[外层长度] [内层长度];
静态初始化:类型[] [] 变量名={{2},{2,3},{4,5,2}};
静态数组每个内层数组长度可以不一样
二维数组的遍历:
for循环嵌套遍历
for(int i=0;i<arr.length;i++){ //外层循环 for(j=0;j<arr[i].length;j++){ //内层循环 System.out.print(arr[i][j]); } System.out.println(); }
二维数组作为一个了解
概念:对于数据的计算方式方法
算法不属于编程语言,属于数学的范畴,算法是前人总结出来的解决某种固定场景问题的方式方法
算法需要数据,算法会根据数据的存储结构来进行计算
算法应用场景
1.计算机底层离不开算法
2.算法是无数的,一些常用算法都被封装了,因为都是固定的
为何要学习算法
培养逻辑思维
将相邻的两个元素进行比较,将较大的元素往右放,较小的元素往左放
for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }
//设定一个变量用来临时存储最小值的索引,假定arr[0]是最小值,则索引值 temp=0,将之后1~arr.length-1的值进行比较,小于arr[0],就把索引值temp指向这个数值的索引,最后arr[temp]就是最小的数,然后在用arr[0]与arr[temp]进行交换。反复循环就排列好了,交换次数最多arr.length-1次。 for(int i=0;i<arr.length-1;i++){ int x=i; for(int j=i+1;j<length;j++){ if(arr[x]>arr[j]){ x=j; } } if(i!=x){ int y; y=arr[i]; arr[i]=arr[x]; arr[x]=y; } }
前提:数组有序排列
然后对半查找
public static int getIndex(int[] arr,int number){
int strat=0;
int end=arr.length-1;
int som=(strat+end)/2;
while(strat<=end){
if(number==arr[som]){
return som;
}else if(number>arr[som]){
strat=som+1;
}else {
end=som-1;
}
som=(strat+end)/2;
}
return -1;
}