-
规则:
-
方法名必须相同
-
参数列表必须不同(个数不同、类型不同、参数排列顺序不同)
-
-
实现理论:
-
方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错
-
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;imax){
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};
// 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]+" ");
}
}
}


