方法的重载
-
规则:
-
方法名必须相同
-
参数列表必须不同(个数不同、类型不同、参数排列顺序不同)
-
-
实现理论:
-
方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错
-
package com.baidu.method; import javax.xml.transform.Result; public class M2 { public static void main(String[] args) { int max = max(99, 99); System.out.println(max); } //比较大小 /* 方法重载:方法名称相同 参数列表不同(个数不同,类型不同,参数列表顺序不同...) */ public static int max(int a,int b){ int result=0; if (a==b){ return 0;//终止方法 } if (a>b){ result=a; }else { result=b; } return result; } public static double max(double a,double b){ double result=0; if (a==b){ return 0;//终止方法 } if (a>b){ result=a; }else { result=b; } return result; } public static double max(double a,double b,double c){ double result=0; if (a==b){ return 0;//终止方法 } if (a>b){ result=a; }else { result=b; } return result; } }
命令行传参
-
有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令参数给main()函数实现
package com.baidu.method; public class M3 { public static void main(String[] args) { //args.length :数组长度 for (int i=0;i< args.length;i++){ System.out.println("args["+i+"]"+args[i]); } } }
-
使用命令行来编译
-
javac M3.java
-
cd.. 退回src目录
-
java com.baidu.method.M3
-
java com.baidu.method.M3 +命令
可变参数
-
在JDK1.5开始,Java开始支持传递同类型的可变参数给一个方法
-
在方法声明中,在指定参数类型后加一个省略号
package com.baidu.method; public class M4 { public static void main(String[] args) { M4 m4 = new M4(); M4.test(1,2,3,5); } public static void test(int... i){ System.out.println(i[0]); System.out.println(i[1]); System.out.println(i[2]); System.out.println(i[3]); } }
递归
-
递归就是自己调用自己
-
递归包括两个部分:
-
递归头:什么时候不调用自身方法,如果没有头,将陷入死循环
-
递归体:什么时候需要调用自身方法
-
package com.baidu.method; public class M5 { public static void main(String[] args) { System.out.println(f(6)); } //求i的阶乘 public static int f(int i){ if (i==1){ return 1; }else { return i*f(i-1); } } }
作业:
初学java中的选择,判断,循环和方法的概念,写一个简易的两位数计算器
思路推荐: 写4个方法:加减乘除 利用循环+switch进行用户交互 传递需要操作的两个数 输出结果
package com.baidu.test; import com.sun.org.apache.bcel.internal.generic.SWITCH; import java.util.Scanner; public class T2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入:"); double a=scanner.nextDouble(); String sign= scanner.next(); double b= scanner.nextDouble(); scanner.close(); switch (sign){ case "+": add(a,b); break; case "-": sub(a,b); break; case "*": mul(a,b); break; case "/": div(a,b); break; default: System.out.println("输入有误!"); } } public static double add(double a,double b){ System.out.println(a+b); return 0; } public static double sub(double a,double b){ System.out.println(a-b); return 0; } public static double mul(double a,double b){ System.out.println(a*b); return 0; } public static double div(double a,double b){ System.out.println(a/b); return 0; } }
数组
数组声明创建
dataType[] arrayRefVar=new dataType[arraySize];
-
数组的元素是通过索引访问的,数组索引从0开始
-
获取数组长度:
array.length
package com.baidu.array; public class A1 { public static void main(String[] args) { int[] nums=new int[6];//声明和创建一个数组nums //给数组元素赋值 nums[0]=2; nums[1]=2; nums[2]=2; nums[3]=2; nums[4]=2; nums[5]=2; //计算所以元素的值 int sum=0; for (int i=0;i< nums.length;i++){//获取数组的长度array.length sum=sum+nums[i]; } System.out.println("元素总和:"+sum); } }
三种初始化
-
静态初始化,动态初始化
package com.baidu.array; public class A2 { public static void main(String[] args) { //静态初始化:创建+赋值 int[] a={1,2,3,4,5,6}; System.out.println(a[2]); System.out.println("------------"); //动态初始化:包含默认值 int[] b=new int[8]; b[0]=1; b[1]=3; System.out.println(b[0]); System.out.println(b[1]); System.out.println(b[3]); System.out.println(b[7]); } }
-
数组的默认初始化
数组边界
-
ArrayIndexOutOfBoundsException:数组下标越界异常!
-
数组是相同数据类型(数据类型可以为任意类型)的有序集合
数组的使用
package com.baidu.array; public class A3 { public static void main(String[] args) { int[] arrays={1,2,3,4,5}; //打印全部的数组元素 for (int i=0;i< arrays.length;i++){ System.out.println(arrays[i]); } System.out.println("------------"); //计算所有元素的和 int sum=0; for (int i=0;i< arrays.length;i++){ sum+=arrays[i]; } System.out.println("所有元素和为:"+sum); System.out.println("------------------"); //查找最大元素 int max=arrays[0]; for (int i=1;i<arrays.length;i++){ if (arrays[i]>max){ max=arrays[i]; } } System.out.println("max:"+max); } }
-
增强的for循环
package com.baidu.array; import javax.xml.transform.Result; public class A4 { public static void main(String[] args) { int[] arrays = {1, 2, 3}; /* //JDK1.5,没有下标 for (int array : arrays) { System.out.println(array); } */ // printArray(arrays); int[] reverse=reverse(arrays); printArray(reverse); } //反转数组 public static int[] reverse(int[] arrays){ int[] result= new int[arrays.length]; for (int i=0, j= arrays.length-1;i< arrays.length;i++,j--){ result[j]=arrays[i]; } return result; } //打印数组元素 public static void printArray(int[] arrays){ for (int i=0;i< arrays.length;i++){ System.out.print(arrays[i]+" "); } } }