Java方法

方法概念

1.方法的概念:

​方法(method)是将具有独立功能的代码组织成一个整体,使其具有特殊功能的代码集.

注意: 方法必须先创建后使用,该过程就是方法的定义

方法创建后并不是直接可以运行的,需要主动调用才执行,这一过程就是方法的调用

方法的定义和调用

1.方法定义
方法的格式:  []在笔记中表示可以有,可以没有
	访问修饰符 [其他修饰符] 返回值类型 方法名(参数列表){
		方法体;
		[return 数据;]
	}
说明: 访问修饰符:  public公共的  private私有的  protected受保护的  默认
	 返回值类型:  当该方法执行后,需要返回一个结果,这时候就需要设置一个返回值类型,规定方法返回数据的类型
	 			返回值类型可以是任意类型,  void表示无返回值类型(不需要返回数据)
	   return: 	当有返回值类型的时候,需要使用return返回一个对应类型的数据,同时方法结束
	  参数列表:  参数列表中所有的参数都叫做形参,参数的个数0--n个
	 		  形参: 形式参数,只需要声明变量即可,用于等待方法被调用的时候,接收传递进来的实际参数(真实数据)
	 		  实参:调用方法时,为形参传递的真实数据,且数据的类型要与形参类型保持一致
访问修饰符

​Java中访问修饰符 public protected 默认 private设定程序被访问的范围

修饰符本类同一个包不同包子类任何地方
private
默认(可以不写)
protected
public
public class Person {
	String name;
	String sex;
	int age;
	String address;
	//无参无返回值方法
	public void eat() {
		System.out.println(name+"在食堂吃了一顿大餐");
	}
	//带参无返回值方法
	public void he(String drink) {
		System.out.println("今天天气太热"+name+"喝了一瓶冰镇"+drink);
	}
	//带参带返回值方法
	public String print(String job) {
		return "我的姓名叫:"+name+", 性别为:"+sex+",  年龄为:"+age+", 出生地址:"+address+", 现在的职业为:"+job;
	}
}
2.方法的调用
public class PersonDemo {

	public static void main(String[] args) {
		Person npy = new Person();
		//初始化
		npy.name = "陈慧敏";
		npy.sex = "男";
		npy.age = 26;
		npy.address = "香港";
		
		//调用无参无返回值方法
		npy.eat();
		
		//调用带参无返回值方法
		//旺仔牛奶为String类型的实际参数,赋值给调用方法he的形参,类型保持一致
		npy.he("旺仔牛奶");
		
		//调用带参带返回值方法
		//该方法已调用,但方法中没有输出语句,是返回字符串
		//带返回值的方法一般需要使用对应类型的变量接收返回的结果
		String str = npy.print("明星");
		System.out.println(str);
	}

}
3.方法的参数传递

方法的参数传递,采用的是值传递方式

​将实际参数的副本复制给形式参数,本身不受影响.

​值传递过程中分为: 基本数据类型传递, 引用数据类型传递

在这里插入图片描述

使用基本数据类型传递
public class SiZeOpratorDemo {
	/*
	 * 请输入第一个数,请输入第二个数,输入运算符 多个形参之间使用逗号隔开 做4个带参,带返回值的方法,进行四则运算
	 */
	public static void main(String[] args) {
		// 因为main是static,只能调用static修饰的方法
		Scanner in = new Scanner(System.in);
		System.out.println("请输入第一个数:");
		int num1 = in.nextInt();
		System.out.println("请输入第二个数:");
		int num2 = in.nextInt();
		int result = 0,flag=0;
		String oper = "";
		do {
			flag=0;
			System.out.println("请输入运算符");
			oper = in.next();
			switch (oper) {
			case "+":
				result = jia(num1, num2);
				break;
			case "-":
				result = jian(num1,num2);
				break;
			case "*":
				result = cheng(num1, num2);
				break;
			case "/":
				result = chu(num1, num2);
				break;
			default:
				System.out.println("对不起,您的运算符有误,请重新输入!");
				flag = 1;
			}
		}while(flag!=0);
		System.out.println(num1+ oper+ num2 +" = " +result );
	}
	
	public static int jia(int num1,int num2) {
		return num1 + num2;
	}
	public static int jian(int num1,int num2) {
		return num1 - num2;
	}
	public static int cheng(int num1,int num2) {
		return num1 * num2;
	}
	//方法调用参数传递为值传递,将基本数据类型的值,复制给了形参,所以该方法对形参做任何操作,实际参数不受影响
	public static int chu(int num1,int num2) {
		Scanner in = new Scanner(System.in);
		do {
			if(num2==0) {
				System.out.println("除数不能为0,请重新输入:");
				num2 = in.nextInt();
			}else {
				break;
			}
		}while(true);
		return num1 / num2;
	}
}
引用数据类型传递
public class Operator {
	int num1;
	int num2;
	String oper; //运算符
	int result;
}

public class SiZeOpratorDemo1 {
	/*
	 * 请输入第一个数,请输入第二个数,输入运算符 多个形参之间使用逗号隔开 做4个带参,带返回值的方法,进行四则运算
	 */
	public static void main(String[] args) {
		// 因为main是static,只能调用static修饰的方法
		Scanner in = new Scanner(System.in);
		System.out.println("请输入第一个数:");
		int num1 = in.nextInt();
		System.out.println("请输入第二个数:");
		int num2 = in.nextInt();
		System.out.println("请输入运算符");
		String op = in.next();
		int flag=0;
		Operator oper = new Operator();
		oper.num1 = num1;
		oper.num2 = num2;
		oper.oper = op;
		yunSuan(oper);
		System.out.println(oper.num1+ oper.oper+ oper.num2 +" = " +oper.result );
	}
	
	/*方法调用参数传递为值传递,引用数据传递的是地址值,实际两个对象,指向的同一空间
		当形参被改变时,实际操作的还是原空间数据
	*/
	public static void yunSuan(Operator oper) {
		Scanner in = new Scanner(System.in);
		//调用Operator对象中的oper运算符属性
		switch (oper.oper) {
		case "+":
			oper.result = oper.num1 + oper.num2;
			break;
		case "-":
			oper.result = oper.num1 - oper.num2;
			break;
		case "*":
			oper.result = oper.num1 * oper.num2;
			break;
		case "/":
			do {
				if(oper.num2==0) {
					System.out.println("除数不能为0,请重新输入:");
					oper.num2 = in.nextInt();
				}else {
					break;

				}
			}while(true);
			oper.result =  oper.num1 / oper.num2;
			break;
		}
	}
}
方法设计的应用场景

​在何时需要使用形参?在何时需要返回方法结果?

​在方法设计时,如果方法执行体中,有不确定数据,这些数据通过参数传递的方式从外部进入到方法, 也就是说形参是方法入口

​在设计方法时,如果该方法执行后,需要返回结果,那么这时候就需要设置返回值类型,并给出返回值.

方法重载

​概念:在一个类中,多个方法,方法名相同,参数列表不同(参数的类型,个数),与返回值无关

public class Person {

	String name;
	String sex;
	int age;
	String job;
	//方法重载: 同一个类中,方法名相同参数列表不同,与返回值无关
	public void eat() {
		System.out.println(name+"在食堂吃了一顿大餐..");
	}
	//同名同参数方法是不允许存在
	public void eat(String food) {
		System.out.println(name+"今天有钱了,在食堂点了一个小炒"+food);
	}
	//参数列表中的形参,跟名称没关系,只对应类型和个数
	public void eat(String address,String food) {
		System.out.println(name+"今天心情不错,去"+address+"点了一个"+food);
	}
	public void eat(String food,int weight) {
		System.out.println(name+"今天发财了,去711点了"+food+"重量为:"+weight+"斤");
	}
	
	public void drink(String fruit) {
		System.out.println("将"+fruit+"榨汁,榨出了"+fruit+"汁");
	}
	public void read() {
		System.out.println("好好学习,天天向上");
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢木木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值