一、解耦思想
耦合:一个方法完成了两个功能
这是不好的编码方法,当需要修改一个功能,需要牵扯到整个方法
解耦:每一个功能都是独立存在的
每个功能都可以两两组合,完成更强大的功能,修改和维护都是独立的
日常写代码一定要往低耦合写,更便于维护
返回值的设置:看方法有没有产生新的对象,产生了就返回
二、数组
数组拷贝和打印
数组拷贝
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;
}