- 静态方法通过类名可以直接被调用,动态方法必须实例化对象后,通过对象进行调用。
- 静态方法在程序初始化后会一直储存在于内存,不会被垃圾回收器回收。
- 动态方法,在初始化类后,会储存在内存中,方法被调用结束后,内存被垃圾回收器回收。
具体例子:
(1)静态方法:
package BinarySeach;
public class BS {
/*
params:a-带查找的升序数组
target-带查找的目标值
Return:
找到则返回索引
找不到返回-1
*/
public static int binarySearchBasic(int[] a, int target) {
int i = 0, j = a.length - 1;// 设置指针和初值
// 判断搜索的范围内有数据存在
while (i <= j) {
int m = (i + j) / 2;
if (target < a[m]) {// 目标值小于中间值,向左进行搜索
j = m - 1;
} else if (target > a[m]) {// 目标值大于中间值,向右进行搜索
i = m + 1;
} else {
return m; // 找到直接返回索引
}
}
return -1;
}
}
(2)动态方法:
package BinarySeach;
public class BST {
// 二分查找基础版
/*
params:a-带查找的升序数组
target-带查找的目标值
Return:
找到则返回索引
找不到返回-1
*/
public int binarySearchBasic(int[] a, int target) {
int i = 0, j = a.length - 1;// 设置指针和初值
// 判断搜索的范围内有数据存在
while (i <= j) {
int m = (i + j) / 2;
if (target < a[m]) {// 目标值小于中间值,向左进行搜索
j = m - 1;
} else if (target > a[m]) {// 目标值大于中间值,向右进行搜索
i = m + 1;
} else {
return m; // 找到直接返回索引
}
}
return -1;
}
}
(3)调用方式:
package Test;
import BinarySeach.BS;
public class TestBinarySearch {
public static void main(String[] args){
int[] a={1,46,24,78,23,90,34,67,13,67,89,46,39};
int index= BS.binarySearchBasic(a, 46);
BST bst=new BST();
int index1=bst.binarySearchBasic(a, 46);
}
}