day5 方法声明及调用

本文详细介绍了方法的定义,包括访问控制符、修饰符、返回值类型、方法名和参数列表等要素。方法体中使用return关键字返回结果,方法可以按参数个数和返回值类型分类。通过示例展示了无参无返回值、有参无返回值、无参有返回值和有参有返回值的方法定义与调用。还提到了方法的重载规则,即同名方法通过参数差异进行区分。
摘要由CSDN通过智能技术生成

方法声明

定义方法

  • 方法是完成某个功能的一组语句,通常将常用的功能写成一个方法。
  • 定义方法就是编写一段有特定功能的代码,在程序中使用同样功能的地方,没有必要重复编写同样的代码,只要调用定义好的方法就可以。可以实现代码的重用。简化了程序的编写和维护工作。
  • 方法声明或称为定义方法,注意:方法声明不能嵌套,也不能在类外声明
[访问控制符] [修饰符] 返回值类型 方法名(参数类型 形式参数,参数类型 形式参数,…){
方法体
}

示例

public class Hello {
  public static void main(String[] args) {
    }
}

方法使用大括号包含语句块称为方法体,用于执行特定的功能操作。方法体当中使用return关键字,它的作用是结束方法执行,并且把方法的执行(运算)结果返回到方法外部。
返回值:方法在执行完毕后返回给调用它的程序的数据
返回值类型:方法要返回的结果的数据类型

[访问控制符] [修饰符] 返回值类型 方法名(参数类型 形式参数,参数类型 形式参数,…){
代码;
返回值;
}

示例

public class Hello {
  public static int square( int x ){
      int y=x*x;
      return y;   //返回值
  }
}

方法名词解释

修饰符:
public 、static 被称为修饰符(后续会详细讲解它们);
返回值类型:
用来说明该方法运算结果的类型。如果返回其他类型,编译就可能出错;
方法名:
它作为调用时引用方法的标识;
形参列表:
在方法被调用时用于接受外部传入的变量称为形式参数简称为 形参,方法的形参个数可以是0个到多个,每个参数前面要声明参数的数据类型称为 参数类型;每个参数要用逗号分开。也可以一个参数都没有。
方法体:
它是一个语句块,执行特定的功能操作。对于有返回值类型的方法,方法体当中最后一个语句是return关键字,它的作用是把方法的执行(运算)结果返回到方法外部。
return 表达式:
return是关键字,作用是将return后面表达式的结果作为方法的返回值。需要注意表达式的类型,必须与方法头中声明的“返回类型”相 匹配

方法的分类

  • 根据参数个数:
    • 无参方法
    • 有参方法:
      • 参数类型为基本数据类型
      • 参数类型为引用数据类型
  • 根据返回值类型:
    • 有返回值的方法:
      • 返回值类型为基本数据类型
      • 返回值类型为引用数据类型
    • 无返回值的方法:
      • 返回值类型使用void关键字
方法示例

无参无返回值

  • 无返回值对于无返回值类型的方法,它不向本方法外部返回任何值。定义这样的方法时,声明方法返回类型的位置不能省略不写,而应该用关键字void来代替,即 “空”的意思。
public class FunctionRect{
   public static void drawRect(){
      int width=10;
      int height=5;
      for(int i=0;i<height;i++){
         for(int j=0;j<width;j++){
            System.out.print("#"); 
         }     
         System.out.println();
       }
    }
}

无参有返回值

  • 方法返回值:使用return关键字,完成方法的返回值遇到return语句,方法结束执行,后续语句不执行。因此在方法中return语句只能执行一次。方法的返回值,必须与方法声明中的返回值类型匹配
public class FunctionAdd{
  public static int add(){
    x=100;
    y=200;
    int z=x+y;
    return z;
  }
}

有参无返回值

  • 有参方法:形参必须注明数据类型作用域:方法参数的生命周期是方法语句块。方法的参数是已经初始化完成并赋值,因此在方法中可以参与运算。
public class FunctionRect{
  static void drawRect(int width,int height){
    for(int i=0;i<height;i++){   
       for(int j=0;j<width;j++){
           System.out.print("#");
       }            
       System.out.println();
     }
   }
}

有参有返回值

public class FunctionAdd{
  public static int add(int x,int y) {
     int z=x+y;
     return z;
  }
}

方法调用

  • 所谓调用方法,其实就是给方法的入口传入一些值(参数),然后在出口得到方法执行的结果(返回值)。
  • 注意:需要根据方法名称调用方法,方法只有在被调用后才生效。
  • 方法调用分类:
    • 按照参数
      • 无参方法的调用
      • 有参方法的调用
    • 按照返回值
      • 无返回值方法的调用
      • 有返回值方法的调用
    • 按照位置(下一章讲解)
      • 同一个类中方法调用
      • 不同类中方法调用

无参无返回值方法调用

public class 无参无返回值方法调用 {
	// 多个方法定义没有顺序要求	
	// 定义输出“周五了,我最开心”的方法
	public static void show() {
		System.out.println("周五了,我最开心");
	}
	public static void main(String[] args) {
		System.out.println("主方法开始运行");
		
		// 想要运行某个方法,必须通过代码调用才可以
		// 通过方法名调用 
		// 定义的方法可以被多次调用。
		show();	
		show();		
	}
}

有参无返回值方法调用

  • 调用有参方法:给方法的入口传入一些值(实参),给方法传入参数的过程,称为“传参”。方法传参的过程就是把实参赋值给对应的形参的过程,因此要求实参和形参的数量、类型、顺序必须匹配。
  • 调用方法时,实参直接在括号中,不需要类型声明。实参可以是常量,也可以是有值的变量。
public class 有参无返回值方法调用 {	
	// 定义输出一个整数平方值的方法
	// 方法定义时的参数 也可称之为形参
	public static void showSquare(int m) {
		System.out.println( m+"的平方"+(m*m) );
	}
	public static void main(String[] args) {
		System.out.println("主方法开始运行");
		
		// 调用有参方法时 需要在小括号中 传参 (传的数据)
		// 传参本质就是变量赋值
		// 调用时传入的参数称之为实参
		// 传参是需要注意 实参的个数和类型要和形参完全匹配
		showSquare( 10 );		
	}	
}

有参有返回值方法调用

如果方法有返回值,调用方法可以得到该方法的返回值,然后赋值给与方法返回值类型相同的变量。

import java.util.Scanner;
public class 有参有返回值方法调用 {
	// 定义计算两个整数平方和的方法
	public static int sumSquare( int x,int y ) {				
		return x*x+y*y;		
	}	
	public static void main(String[] args) {
		System.out.println("主方法开始运行");
		// 调用方法		
		int m = sumSquare(10,20);
		// 调用有返回值方法时,定义一个变量来接收返回值
		// 该变量类型必须和返回值类型一致		
		System.out.println( m );
	}
}

方法中不同数据类型改变形参

public class 改变形参比较 {	
	public static void getX(int x){
		x = 3*x;
	}    
	public static void getY(int[] y){
		y[0] = 3*y[0];
	} 
	public static void main(String[] args) {
		int x = 10;
		System.out.println("x调用方法前:" +x);
		getX(x);
		System.out.println("x调用方法后:" +x);
		int[] y = {10};
		System.out.println("y调用方法前:" +y[0]);
		getY(y);
		System.out.println("y调用方法后:" +y[0]);
	}
}

方法重载(overload)

  • 方法的重载就是在同一个类中允许同时存在一个以上同名的方法
  • 方法重载的规则
    • 方法名称相同
    • 方法的参数必须不同
      • 参数个数不同或参数类型不同
    • 方法的返回值类型可以相同,也可以不同

示例

练习

1、编写一个方法,根据传入商品总价,计算返回折扣后新价格。折扣规则如下:
总价<100,不打折
总价在100到199之间,打9.5折总价在200到999之间,打9折
总价在1000以上,打8.5折。

import java.util.Scanner;

public class 练习第一题 {
// 1、编写一个方法,根据传入商品总价,计算返回折扣后新价格。
// 折扣规则如下:总价<100,不打折 总价在100到199之间,打9.5折
// 总价在200到999之间,打9折 总价在1000以上,打8.5折
	public static double disCount(double sum) {
		if ( sum>0&&sum<100 ) {
			sum = sum;
		}else if ( sum>=100&&sum<=199) {
			sum = sum*0.95;
		}else if ( sum>199&&sum<1000) {
			sum = sum*0.9;
		}else if ( sum>=1000) {
			sum = sum*0.85;
		}
		return sum;
	}
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		double sum;
		System.out.println("请输入总价格");
		sum = sc.nextDouble();
		System.out.println("折后价格是"+disCount(sum));
	}
}

2、编写一个方法,传入一个年份,输出该年份是平年还是闰年。

import java.util.Scanner;

public class 练习第二题 {
// 2、编写一个方法,传入一个年份,输出该年份是平年还是闰年。
	public static String judgeYear(int year) {
		// 年份能被4整除并且不能被100整除
		if ( year%4==0 && year%100!=0 ) {
			return "闰年";
		} else {
			return "平年";
		}
	}
	
	public static void main(String[] args) {
		int year; // 一个年份
		Scanner sc = new Scanner(System.in);
		year = sc.nextInt();				
		System.out.println(year+"是"+judgeYear(year));		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值