Java中方法

Java基础知识之方法

目录

Java基础知识之方法

一、方法的概述及基本使用

1、方法的概述:

2、方法编写(求和方法的编写)

注意事项:

案例代码:

3、方法调用

代码演示:

二、方法的练习及注意事项

1、方法的练习

1.4 打印1到n之间的数据

2、注意事项:

三、方法的重载及参数传递

1. 方法重载的概述和基本使用

2、方法重载练习

3、方法中参数传递


一、方法的概述及基本使用

1、方法的概述:

  • 简单的说:方法就是完成特定功能的代码块;在很多语言里面都有函数的定义 , 函数在Java中被称为方法
  • 方法格式:

    修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {

                       方法体;

                       return 返回值;

    }

  • 方法格式解释:

修饰符 :目前记住 public static

返回值类型 :用于限定返回值的数据类型

方法名: 一个名字,为了方便我们调用方法

参数类型: 用于接收调用方法时传入的数据的类型

参数名:  用于接收调用方法时传入的数据的变量

方法体: 完成功能的代码

return: 结束方法,把返回值带给调用者

 

2、方法编写(求和方法的编写)

注意事项:

  • 写一个方法首先有两点需要明确

返回值类型 :明确功能结果的数据类型

参数列表 :明确有几个参数,以及参数的类型

案例代码:

/ * 
 * 方法的两个明确:
 * 		A:返回值类型 明确功能结果的数据类型
 * 		B:参数列表 明确有几个参数,以及参数的类型
 * 
 * 案例:
 * 		求两个数和的案例。
 */
public class MethodDemo {
	public static void main(String[] args) {
		
	}

     /*
	 * 写一个方法,用于求和。 两个明确: 返回值类型 int 参数列表 int a,int b
	 */
	public static int sum(int a, int b) {
		// int c = a + b;
		// return c;

		return a + b;
	}
	
}

 

3、方法调用

  • 方法的执行特点:

        不调用,不执行。

A:有明确返回值的方法
            a:单独调用,没有意义
            b:输出调用,不是很好
            c:赋值调用,推荐方案
 B:void类型修饰的方法
            a:单独调用

代码演示:

public class FunctionDemo {
	public static void main(String[] args) {
		int x = 10;
		int y = 20;
		
		//方式1:单独调用
		//sum(x,y);
	
		//方式2:输出调用
		//System.out.println(sum(x,y));
		//System.out.println(30);
	
		//方式3:赋值调用
		int result = sum(x,y);
		//result在这里可以进行操作
		System.out.println(result);
	}
	
	/*
		需求:求两个数据之和的案例
		
		两个明确:
			返回值类型:int
			参数列表:2个,都是int类型。
	*/
	public static int sum(int a,int b) {
			//如何实现呢?
			//int c = a + b;
			//return c;
			
			//c就是a+b,所以,我可以直接返回a+b
			return a + b;
	}
	
}
  • 方法的调用图解:

 

二、方法的练习及注意事项

1、方法的练习

1.1 方法练习之获取两个数据中的较大

代码:

import java.util.Scanner;

/*
 * 需求:键盘录入两个数据,返回两个数中的较大值
 * 
 * 两个明确:
 * 		返回值类型:int
 * 		参数列表:int a,int b
 */
public class MethodTest {
	// 返回两个数中的较大值
	public static int getMax(int a, int b) {
		if (a > b) {
			return a;
		} else {
			return b;
		}
	}
	
	public static void main(String[] args) {
		//创建对象
		Scanner sc = new Scanner(System.in);
		
		//接收数据
		System.out.println("请输入第一个数据:");
		int x = sc.nextInt();
		
		System.out.println("请输入第二个数据:");
		int y = sc.nextInt();
		
		//调用方法
		int max = getMax(x,y);
		System.out.println("max:"+max);
	}
}

1.2 方法练习之比较两个数据是否相等

代码:

import java.util.Scanner;

/*
 * 需求:键盘录入两个数据,比较两个数是否相等
 * 
 * 两个明确:
 * 		返回值类型:boolean
 * 		参数列表:int a,int b
 */
public class MethodTest2 {
	//比较两个数是否相等
	public static boolean compare(int a,int b){
		if(a==b){
			return true;
		}else {
			return false;
		}
	}
	
	public static void main(String[] args) {
		//创建对象
		Scanner sc = new Scanner(System.in);
		
		//接收数据
		System.out.println("请输入第一个数据:");
		int a = sc.nextInt();
		
		System.out.println("请输入第二个数据:");
		int b = sc.nextInt();
		
		//调用方法
		boolean flag = compare(a,b);
		System.out.println("flag:"+flag);
	}
}

1.3 方法练习之获取三个数据中的较大值

代码:

import java.util.Scanner;

/*
 * 需求:键盘录入三个数据,返回三个数中的最大值
 * 
 * 两个明确:
 * 		返回值类型:int
 * 		参数列表:int a,int b,int c
 */
public class MethodTest3 {
	// 返回三个数中的最大值
	public static int getMax(int a, int b, int c) {
		if (a > b) {
			if (a > c) {
				return a;
			} else {
				return c;
			}
		} else {
			if (b > c) {
				return b;
			} else {
				return c;
			}
		}
	}
	
	public static void main(String[] args) {
		//创建对象
		Scanner sc = new Scanner(System.in);
		
		//接收数据
		System.out.println("请输入第一个数据:");
		int a = sc.nextInt();
		
		System.out.println("请输入第二个数据:");
		int b = sc.nextInt();
		
		System.out.println("请输入第三个数据:");
		int c = sc.nextInt();
		
		//调用方法
		int max = getMax(a,b,c);
		System.out.println("max:"+max);
	}
}

1.4 打印1到n之间的数据

代码:

/*
 * 需求:写一个方法,传递一个整数(大于1),在控制台打印1到该数据的值。
 * 
 * 两个明确:
 * 		返回值类型:void
 * 		参数列表:int n
 */
public class MethodTest {
	//在控制台打印1到该数据n的值
	public static void printNumber(int n) {
		for(int x=1; x<=n; x++) {
			System.out.println(x);
		}
	}
	
	public static void main(String[] args) {
		printNumber(10);
		System.out.println("-------------------");
		printNumber(100);
	}
}

1.5 打印所有的水仙花数

代码:

/*
 * 写一个方法,把所有的水仙花数打印在控制台
 * 
 * 两个明确:
 * 		返回值类型:void
 * 		参数列表:无参数
 */
public class MethodTest2 {
	//把所有的水仙花数打印在控制台
	public static void printFlower() {
		for(int x=100; x<1000; x++) {
			int ge = x%10;
			int shi = x/10%10;
			int bai = x/10/10%10;
			
			if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x){
				System.out.println(x);
			}
		}
	}
	
	public static void main(String[] args) {
		printFlower();
	}
}

 

2、注意事项:

  • void修饰的方法的调用

    写一个方法,在控制台输出10次HelloWorld案例

    没有明确返回值的函数调用:

    其实就是void类型方法的调用

    只能单独调用

代码:

/*
 * 需求:写一个方法,在控制台输出10次HelloWorld案例。
 * 
 * 两个明确:
 * 		返回值类型:void
 * 		参数列表:无参数
 * 
 * 如果一个方法没有明确的返回值类型,java提供了void进行修饰。
 * 
 * void修饰的方法的调用:
 * 		A:单独调用
 */
public class MethodDemo {
	//在控制台输出10次HelloWorld案例。
	public static void printHelloWorld() {
		for(int x=1; x<=10; x++) {
			System.out.println("HelloWorld");
		}
	}
	
	public static void main(String[] args) {
		//单独调用
		printHelloWorld();
		
		//输出调用
		//System.out.println(printHelloWorld());
		//System.out.println(void);
		
		//赋值调用
		//void v = printHelloWorld();
	}
}
  • 方法的注意事项:
            A:方法不调用不执行
            B:方法与方法是平级关系,不能嵌套定义
            C:方法定义的时候参数之间用逗号隔开
            D:方法调用的时候不用在传递数据类型
            E:如果方法有明确的返回值,一定要有return带回一个值

代码:

class FunctionDemo2 {
	public static void main(String[] args) {
		/*
		错误的
		public static int sum(int a,int b){
			return a + b;
		}
		*/
		
		//sum(10,20);
		
		//int x = 10;
		//int y = 20;
		//错误
		//sum(int x,int y);
	}
	
	public static int sum(int a,int b){
		return a + b;
	}
}

 

三、方法的重载及参数传递

1. 方法重载的概述和基本使用

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

方法重载特点:

返回值类型无关只看方法名和参数列表

在调用时,虚拟机通过参数列表的不同来区分同名方法

 

代码演示:

/*
 * 方法重载:在同一个类中,出现了方法名相同的方法,这就是方法重载。
 * 方法重载特点:
 * 		方法名相同,参数列表不同。与返回值无关。
 * 		参数列表不同:
 * 			参数的个数不同。
 * 			参数对应的类型不同。
 * 注意:
 * 		在调用方法的时候,java虚拟机会通过参数列表的不同来区分同名的方法。
 */
public class MethodDemo {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;

		// 求和
		int result = sum(a, b);
		System.out.println("result:" + result);

		int c = 30;
		// 求和
		//int result2 = sum2(a,b,c);
		//System.out.println("result2:"+result2);
		result = sum(a,b,c);
		System.out.println("result:"+result);
	}
	
	
	//两个float类型的数据求和
	public static float sum(float a,float b) {
		return a + b;
	}

	// 三个整数的求和
	public static int sum(int a,int b,int c) {
		return a + b + c;
	}
	
	/*
	public static int sum2(int a, int b, int c) {
		return a + b + c;
	}
	*/

	// 两个整数的求和
	public static int sum(int a, int b) {
		return a + b;
	}
}

2、方法重载练习

  比较数据是否相等

代码:

/*
 * 需求:比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,
 *     并在main方法中进行测试
 */
public class MethodTest {
	public static void main(String[] args) {
		// 调用
		System.out.println(compare(10, 20));
		System.out.println("-------------");
		System.out.println(compare((byte)10, (byte)20));
		System.out.println("-------------");
		System.out.println(compare((short)10, (short)20));
		System.out.println("-------------");
		//System.out.println(compare((long)10, (long)20));
		System.out.println(compare(10L, 20L));
	}

	// 两个byte类型的
	public static boolean compare(byte a, byte b) {
		System.out.println("byte");
		// 第一种写法
		// boolean flag = a==b?true:false;
		// return flag;
		// 第二种写法
		// boolean flag = a == b;
		// return flag;
		// 第三种写法
		return a == b;
	}

	// 两个short类型的
	public static boolean compare(short a, short b) {
		System.out.println("short");
		return a == b;
	}

	// 两个int类型的
	public static boolean compare(int a, int b) {
		System.out.println("int");
		return a == b;
	}

	// 两个long类型的
	public static boolean compare(long a, long b) {
		System.out.println("long");
		return a == b;
	}
}

3、方法中参数传递

  • 方法的形式参数为基本数据类型

    方法的参数是基本类型的时候:

                 形式参数的改变不影响实际参数。

      形式参数:用于接收实际数据的变量

      实际参数:实际参与运算的变量

代码:

public class ArgsDemo {
	public static void main(String[] args) {
		// 定义变量
		int a = 10;
		int b = 20;
		System.out.println("a:" + a + ",b:" + b);// a:10,b:20
		change(a, b);
		System.out.println("a:" + a + ",b:" + b);// a:10,b:20
	}

	public static void change(int a, int b) { // a=10,b=20
		System.out.println("a:" + a + ",b:" + b);// a:10,b:20
		a = b; // a=20;
		b = a + b;// b=40;
		System.out.println("a:" + a + ",b:" + b);// a:20,b:40
	}

}

图解:

 

  • 方法的形式参数为引用数据类型

代码:

/*
 * 方法的参数是引用类型:
 * 		形式参数的改变直接影响实际参数
 */
public class ArgsDemo2 {
	public static void main(String[] args) {
		// 定义数组
		int[] arr = { 1, 2, 3, 4, 5 };
		// 遍历数组
		for (int x = 0; x < arr.length; x++) {
			System.out.println(arr[x]);
		}
		System.out.println("----------------");
		change(arr);
		for (int x = 0; x < arr.length; x++) {
			System.out.println(arr[x]);
		}
	}

	public static void change(int[] arr) {
		for (int x = 0; x < arr.length; x++) {
			// 如果元素是偶数,值就变为以前的2倍
			if (arr[x] % 2 == 0) {
				arr[x] *= 2;
			}
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值