静态方法

89 阅读4分钟

静态方法

1. 方法的概念

用来解决特定的问题(实现特定的功能)的一段代码,可以反复使用。

2.定义语法

public static void 方法名称( ){
//方法主体
}

3. 定义位置

与main方法平级

4.调用

在需要调用方法的位置,直接书写方法名();即可实现调用

代码执行到调用方法的位置,会先执行方法内部的代码,再接着执行后续的代码

package com.qfedu.test1;
/**
 * 	以两种 方式打印诗句 每句诗以后有十个横线
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		System.out.println("窗前明月光");
		System.out.println("----------");
		System.out.println("疑是地上霜");
		System.out.println("----------");
		
		
		
		System.out.println("举头望明月");
		for(int i =1;i <= 10;i++) {
			System.out.print("-");
		}
		System.out.println();
		
		System.out.println("低头思故乡");
		for(int i =1;i <= 10;i++) {
			System.out.print("-");
		}
		System.out.println();

	}
}
package com.qfedu.test1;
/**
 * 	使用方法实现 横线 的打印
 * 	方法的概念:用来解决特定的问题(实现特定的功能)的一段代码,可以反复使用。
 * 	定义语法:public static void 方法名称(){ // 方法体}
 * 	定义位置:与main方法平级
 * 	
 * @author WHD
 *
 */
public class Test2 {
	
	
	public static void main(String[] args) {
		System.out.println("窗前明月光");
		printSign();
		
		System.out.println("疑是地上霜");
		printSign();
		
		System.out.println("举头望明月");
		printSign();
		
		System.out.println("低头思故乡");
		printSign();
	}
	
	public static void printSign() {
		for(int i = 1;i <= 10;i++) {
			System.out.print("-");
		}
		System.out.println();
	}
	
	
}

5.参数

多数情况下,方法与调用者之间需要数据的交互;调用者必须提供必要的数据,才能使方法完成相应的功能。

形参:形式参数,指方法定义的时候书写的参数,形参相当于局部变量的声明

形参规定了参数的个数、类型、顺序,指实参必须遵守这个规定

实参:实际参数,指用户调用方法的时候传入的参数,实参相当于局部变量的赋值

5.1 单个参数

package com.qfedu.test2;
/**
 * 	使用单个参数实现 可以让用户指定打印符号的个数
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		System.out.println("窗前明月光");
		printSign(10); // 实参
		
		System.out.println("疑是地上霜");
		int num = 5;
		printSign(num); // 实参
		
		System.out.println("举头望明月");
		int count = 7;
		printSign(count); // 实参
		
		System.out.println("低头思故乡");
		int a = 10;
		int b = 2;
		int c = a + b;
		printSign(c); // 实参
	}
	
	/**
	 * 	count 属于形参(形式参数,指方法定义的时候书写的参数)
	 * 	形参规定了参数的个数、类型、顺序,指实参必须遵守这个规定
	 * 	实参:实际参数,指用户调用方法的时候传入的参数
	 * @param count 这个参数用于让用户指定符号个数
	 */
	public static void printSign(int count) {
		for(int i = 1;i <= count;i++) {
			System.out.print("-");
		}
		System.out.println();
	}
	
}

5.2 多个参数

多个参数,在方法定义的时候可以根据需求写任意个数的,任意类型的参数

使用多个参数实现 可以让用户指定个数和类型 打印符号

package com.qfedu.test2;
/**
 * 	多个参数,在方法定义的时候可以根据需求写任意个数的,任意类型的参数
 * 	使用多个参数实现 可以让用户指定个数和类型 打印符号
 * @author WHD
 *
 */
public class Test3 {
	public static void main(String[] args) {
		System.out.println("窗前明月光");
		printSign(8,"&");
		
		System.out.println("疑是地上霜");
		int count = 5;
		String str1 = "$";
		printSign(count,str1);
		
		System.out.println("举头望明月");
		String str2 = "#";
		printSign(12,str2);
		
		System.out.println("低头思故乡");
		printSign(3,"@");
	}
	
	public static void printSign(int count,String sign) {
		for(int i = 1;i <= count;i++) {
			System.out.print(sign);
		}
		System.out.println();
	}
	
}

6.  返回值和返回值类型

方法调用时,一些情况下无需返回结果;另一些情况下则必须返回结果。

如果方法需要返回结果,则将void替换为需要返回结果的类型,然后再方法的末尾使用return关键字返回对应

类型的值即可。

return表示中断方法并且返回内容。也就是说return关键字之后不能再写代码了。

package com.qfedu.test3;
/**
 * 	编写一个方法  计算两个数之和  然后 针对结果进行 对2取余操作 判断结果是偶数还是奇数
 * @author WHD
 *
 */
public class Test1 {
	public static int add(int numa,int numb) {
		System.out.println("两个数之和是:"+ (numa + numb));
		int sum =  numa + numb;
		return sum;
	}
	
	public static void main(String[] args) {
		int sum = add(200,200);
		if(sum % 2 == 0) {
			System.out.println("这个数字是偶数");
		}else{
			System.out.println("这个数字是奇数");
		}
	}
}

7. return关键字用法

7.1 用法1

package com.qfedu.test4;
/**
 * 	使用方法模拟加法计算
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		add(10,20);
		
		System.out.println(addtion(10,20));
	}
	
	public static void add(int a,int b) {
		System.out.println("方法体中打印结果:" + (a + b));
	}
	
	public static int addtion(int a,int b) {
		return a + b;
	}
	
	
}

7.2 用法2

在分支结构中书写返回值,如果在分支结构中书写了return关键字,必须保证每一种情况都有正确的返回值

package com.qfedu.test4;
/** 	
 * 	在分支结构中书写返回值,必须保证每一种情况都有正确的返回值
 * @author WHD
 *
 */
public class Test2 {
	public static void main(String[] args) {
		System.out.println(isEven(1));
		
		System.out.println(newIsEven(11) == true ? "偶数" : "奇数");
	}
	
	public static String isEven(int num) {
		if(num % 2 == 0 ) {
			return "偶数";
		}
		return "奇数";
	}
	
	
	public static boolean newIsEven(int num) {
		if(num % 2 == 0) {
			return true;
		}
		return false;
	}
	
	
}

7.3 用法3

应用在没有返回值类型(void)的方法中:

return表示结束当前方法

package com.qfedu.test4;
/**
 * 	返回值类型为void  在方法中也可以使用return  但是return之后不能加任何内容
 * 	此时return只表示中断方法
 * @author WHD
 *
 */
public class Test3 {
	public static void main(String[] args) {
		m1();
		// 后续代码
	}
	
	public static void m1() {
		for (int i = 1; i <= 20; i++) {
			if(i == 10) {
				return; // break
			}
			System.out.println(i);
		}
		
		System.out.println("m1方法执行结束");
		
	}
}

8. 多级调用

方法与方法之间 可以互相直接调用

package com.qfedu.test5;
/**
 * 	多级调用
 * 	方法与方法之间 可以互相直接调用
 * @author WHD
 *
 */
public class Test1 {
	public static void main(String[] args) {
		m1();
	}
	
	public static void m1() {
		System.out.println("m1 method start");
		m2();
		System.out.println("m1 method end");
	}
	
	
	public static void m2() {
		System.out.println("m2 method start");
		
		System.out.println("m2 method end");
	}
}