方法声明以及调用

 方法 

把一些常用的代码定义为方法,可以实现代码的重用。简化了程序的编写和维护工作。

方法名 起一个贴近的名字

形参列表 (参数) 运行时所需要的数据

返回值类型 方法数据结果类型 给别人的数据类型

方法体 完成功能的代码

return 表达式 将结果返回 代表代码结束 在用时return的数据必须和返回值类型相匹配

方法的定义

方法定义三要素 方法名 参数 返回值类型  

参数的语法就是定义变量 如果方法有多个参数 使用逗号相隔 例:(int x,int y)

如果方法没有返回值 则返回值类型需要使用void关键字

如果方法定义时 有返回值类型 那么在方法体中至少出现一个return关键字将数据返回

 return 返回的数据必须和返回值类型匹配

 执行到return即意味着方法执行结束 后不能再编写代码

可以在同一个方法体中写多个return 但是要保证只能执行其中一个

public static int abs (int x) {
		
		if (x>=0) {
			return x;
		} else {
			return -x;
		}
	
	}
}

1. 有参数有返回值

如果方法定义时 有返回值类型 那么在方法体中至少出现一个return关键字将数据返回

例:  定义一个计算整数平方的方法 (有计算就有返回值 需要写返回值类型 )

public static int square (int x) {
				
		int y = x*x;
		return y;
		
	}

2.有参数无返回值

如果方法没有返回值 则返回值类型需要使用void关键字 void代表返回值类型为空 可以写return 但必须什么都不能带

例:  定义一个打招呼的方法 (没有返回值)

public static void sayHi (String name) {
		System.out.println("你好,我是"+name+"今天想吃面,什么面,想见你一面");		
	}

3.无参数有返回值

	public static int chuanMen3() {
		System.out.println("景绪第三次去明旭家里骂骂咧咧...哭哭啼啼");
		return 20;
		
	}

 ​​​​​​​4.无参数无返回值

无参数的情况下 小括号里不填

例:  定义一个方法,输出10次 建...庆 既没有参数也没有返回值

public static void show () {
		
		for(int i=1;i<=10;i++) {
			System.out.println("建党百年普天同庆");
			
		}
	}

方法的调用

通过名字来调用 

主方法运行时也是需要调用 只不过是java虚拟机调用的

除了主方法之外 其余方法的调用需要代码来完成

通过方法名来调用某个方法的执行

1.无参数无返回值方法调用

 调用方法:  方法名 () ;

例:

public static void show () {
		System.out.println("hello,我是思聪,一口吃一个热狗");
	}
	public static void main(String[] args) {
		System.out.println("主方法运行了");
		show();
		show();
	}

2. 有参数无返回值方法调用

调用有参方法时 必须传参 传参就是传数据

传参时的注意事项 数量 类型 顺序 必须和方法定义时一致

只有在方法需要改变属性时才传参

传参其实就是隐含的赋值

定义时的参数是形参 传参时的参数是实参

传参可以是常量也可以是变量

public static void add(int x, int y) {
		System.out.println(x+"+"+y+"="+(x+y));
	}
        add(10,5);
		add(100,200);
        //此时直接把 x=10 y=5和x=100 y=200 传参给add方法 结果为10+5=15 100+200=300

        public static void main(String[] args) {
		int m,n;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一个整数");
		m = sc.nextInt();
		System.out.println("请输入第二个整数");
		n = sc.nextInt();
		add(m,n);
        //此时把键盘输入的m,n传参给add方法 假如m=3 y=5 结果为3+5=8
}

例题 : 输入一个年份判断平年闰年

public class 平年闰年 {
	public static void leapYear (int year) {
		if (year%4==0 && year%100!=0) {
			System.out.println(year+"是闰年");
		} else {
			System.out.println(year+"是平年");
		}
	}
	public static void main(String[] args) {
		int y;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个年份");
		y = sc.nextInt();
		leapYear(y);
	}
}

3. 有参数有返回值方法调用

定义一个和返回值类型相同类型的变量 接收返回值数据 或者直接使用(但只能使用一次)

public static int square(int x) {
		return x*x;		
	}
public static void main(String[] args) {
        //1.定义一个和返回值类型相同类型的变量 接收返回值数据
        int r = square(5);
        //此时给aquare的参数x赋值5 回到方法 5*5=25 把结果25 return到主方法 int r =25
		System.out.println(r);//结果为25
		
		//2.直接在代码中使用返回值数据
		System.out.println(square(10));
		
		
	}

例题:  根据商品总价,计算出对应的折扣

public static double discount (double price) {
		if (price>0 && price<100) {
			return price;
		} else if (price>=100 && price<=199) {
			return price* 0.95;
		} else {
			return price* 0.85;
		}
	}
	public static void main(String[] args) {
		 double p;
		 Scanner sc = new Scanner(System.in);
		 System.out.println("请输入一个价格");
		 p = sc.nextInt();
		 
		 double x = discount(p);
		 System.out.println("打折后的价钱为"+x);
        //或者写成  System.out.println("打折后的价钱为"discount(p));
		
		
	}

方法的调用基本数据类型和引用类型比较

任何一个方法被调用虚拟机都会为它分配一个栈区

//任何一个方法被调用虚拟机都会为它分配一个栈区
	//形参也是方法中定义的变量
	public static void getX (int x) {
		x = x*3;
	}
	public static void getY (int []y) {
		y[0] = y[0]*3;
	}

	public static void main(String[] args) {
		int x = 10;
		System.out.println("调用getx方法之前 x的值是"+x);//10
		getX(x);//此时传递的是数据 不是变量x
		System.out.println("调用getx方法之后 x的值是"+x);//此时输出的是main里面的x 不是方法getX里的x
		System.out.println("------------------------------------------");
		int [] y = {10};
		System.out.println("调用getx方法之前 y的值是"+y[0]);
		getY(y);//此时传递的是数组在堆区所在的地址  所以 getX里的y[0]变为30 main里的y[0]也变为30
		System.out.println("调用getx方法之后 y的值是"+y[0]);
	}
   //结果顺序为 10 10 10 30

方法重载

方法的重载就是在同一个类中允许同时存在一个以上同名的方法

重载的规则 名字可以相同 参数类型必须不同 或者参数个数不同 返回值可以相同也可以不同

调用重载方法时是根据传参的类型来决定要用哪个方法

public static int add(int x,int y) {
		System.out.println("整数平方和");
		return x*x+y*y;
	}
	public static double add(double x,double y) {
		System.out.println("小数平方和");
		return x*x+y*y;
	}
	
	public static void main(String[] args) {
		System.out.println(add(3,5));//结果为 整数平方和 34 3和5都是整数 所以走第一个方法
		System.out.println(add(1.1,2.2));//结果为 小数平方和 6.05  1.1和2.2都是小数 所以走第二个方法
		//调用重载方法时是根据传参的类型来决定要用哪个方法
	}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值