Java面向对象
方法的重载:
1、定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。
“两同一不同”:同一个类,相同方法名;参数列表不同:参数个数不同,参数类型不同
2、判断是否是重载:跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系
3、在通过对象调用时,如何确定某个指定的方法: 方法名 -----> 参数列表
数组实例
//建新class文件,并命名为ArrayUtil。
public class ArrayUtil {
public int Max(int[] arr) {
int maxvalue=arr[0];
for(int i=0;i<arr.length;i++) {
if(maxvalue<arr[i]) {
maxvalue=arr[i];
}
}
return maxvalue;
}
public int Min(int[] arr) {
int minvalue=arr[0];
for(int i=0;i<arr.length;i++) {
if(minvalue>arr[i]) {
minvalue=arr[i];
}
}
return minvalue;
}
public int sum(int[] arr) {
int count=0;
for(int i=0;i<arr.length;i++) {
count+=arr[i];
}
return count;
}
public double Aver(int[] arr) {
int sums=sum(arr);
return sums/arr.length;
}
public void reverse(int[] arr) {
for(int i=0;i<arr.length/2;i++) {
int temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
}
//复制数组
public int[] copy(int[] arr) {
int[] arr1=new int[arr.length];
for(int i=0;i<arr1.length;i++) {
arr1[i]=arr[i];
}
return arr1;
}
//数组排序
public void sort(int[] arr) {
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-i-1;j++) {
if(arr[j]>arr[j+1]) {
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
//遍历数组
public void print(int[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
//查找指定元素
public int search(int[] arr,int dest) {
for(int i=0;i<arr.length;i++) {
if(arr[i]==dest) {
return i;
}
}
return -1;
}
}
测试文件:建新class文件,并命名为Arrayutiltest。
public class ArrayutilTest {
public static void main(String[] args) {
int[] arr=new int[] {-90,12,-53,23,834,4,-1,-35,-98,53,93};
ArrayUtil util = new ArrayUtil();
int max=util.Min(arr);
System.out.println("最大值为:"+max);
util.print(arr);
util.sort(arr);
util.print(arr);
}
}
方法的重载(overload)
“两同一不同”:同一个类,相同方法名;参数列表不同:参数个数不同,参数类型不同。如:
public void println(int i) {}
public void println(double i) {}
可变个数形参的方法:
1、可变个数形参的格式:数据类型…变量名
2、当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个
3、可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
4、可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。换句话说,二者不能共存。
5、可变个数形参在方法的形参中,必须声明在末尾。
public static void main(String[] args) {
test03 t=new test03();
t.show("a");
t.show("c","b");
}
public void show(String s) {
System.out.println(s);
}
public void show(String ...strs) {
for(int i=0;i<strs.length;i++) {
System.out.println(strs[i]);
}
}
public void show(int i,String ...strs) {
}
方法的形参的传递机制:值传递
形参:方法定义时,声明的小括号内的参数
实参:方法调用时,实际传递给形参的数据
值传递机制:
如果变量是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
如果参数是引用数据类型,此时实参赋值形参的是实参存储数据的地址值(含数据类型)。
public void swap(int[] arr,int i,int j) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
递归
递归方法:一个方法体内调用它自身
方法递归包含一个隐式循环,他会重复执行某段代码,但这种重复执行无须循环控制,递归一定要向已知方向递归,否则这种诋毁就会变成无穷递归,类似于死循环。
斐波那契数列、汉诺塔问题、快排