稳稳当当学java之方法(6)

第八章 方法

1.作业回顾

1,使用for循环求1-100的和。

public class Day081 {
	public static void main(String[] args) {
		//1,使用for循环求1-100的和。 
		int sum = 0;
		for (int i = 1; i <= 100; i++) {
			sum = sum + i;
		}
		System.out.println(sum); //5050
	}
}

2,使用for循环打印1-100的偶数。

public class Day082 {
	public static void main(String[] args) {
		//2,使用for循环打印1-100的偶数。 
		for (int i = 1; i <= 100; i++) {
			if(i % 2 == 0) {
				System.out.println(i);
			}
		}
	}
}

3,使用嵌套的for循环打印99乘法表。

public class Day083 {
	public static void main(String[] args) {
		//3,使用嵌套的for循环打印99乘法表。
		/*1×1=1 
		 1×2=2 2×2=4 
		 1×3=3 2×3=6 3×3=9 
		 1×4=4 2×4=8 3×4=12 4×4=16 
		 1×5=5 2×5=10 3×5=15 4×5=20 5×5=25 
		 1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36 
		 1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49 
		 1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64 
		 1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81*/
		
		//m代表行数,n代表列数
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(j + "*" + i + "=" + (i*j) + " ");
			}
			System.out.println();
		}
	}
}

		

2.方法的定义

下面是打印直角三角形的例子

public class Day084 {

	public static void main(String[] args) {
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

方法是一段可以重复执行的代码 。

方法总是预先设计好,并且在被调用的时候执行。

package aaa;

public class Day084 {

	public static void main(String[] args) {
		//调用Day084类的print方法
		//当方法被调用时,执行方法中的代码
		//当print方法中的代码块执行结束后,才会继续执行main方法中后续的代码
//		Day084.print();
		//由于print方法和main方法在同一个类中,因此可以忽略掉类名直接调用
		print();
		System.out.println("第一个方法结束调用");
		Day084.print();
		System.out.println("第二个方法结束调用");
		Day084.print();
		System.out.println("第三个方法结束调用");
	}
	
	//public指示这个方法是公有的,可以在其他类中调用
	//static指示这个方法是静态的,可以不创建对象通过类名调用
	//void指示这个方法是没有返回值的
	//这是方法声明,方法声明不必在main方法之前
	//{}之间的代码是方法体
	//方法的名字是print
	//每个方法都提供一个功能
	//这个方法的功能是打印一个5行的直角形
	public static void print() {
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}
package abc;

import aaa.Day084;

public class Day085 {

	public static void main(String[] args) {
		//调用Day084的print方法
		Day084.print();
	}
}

3.向方法传递参数

public class Day806 {
	
	public static void printX(int num) {
		for (int i = 1; i <= num; i++) {
			for (int j = 1; j <= i ; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	
	public static void main(String[] args) {
		// 7是实际参数
		// 调用printX时,7将被拷贝给形式参数num
		printX(7);
		
		// 10是实际参数
		// 调用printX时,10将被拷贝给形式参数num
		printX(10);
		
		int n = 5;
		printX(n);
//		printX("5"); //编译错误,实际参数的类型,必须要和形式参数匹配		
	}
}

方法参数可以有多个

public class Day807 {
	//动态控制三角形的行数num和图案str
	//调用这个方法时必须传递两个参数,int和str
	public static void printX(int num, String str) {
		for (int i = 1; i <= num; i++) {
			for (int j = 1; j <= i ; j++) {
				System.out.print(str);
			}
			System.out.println();
		}
	}
	
	public static void main(String[] args) {
		//打印7行的,使用.组成的直角三角形
		//7传递给了num,.传递给了str
		printX(7, ".");
		
		//打印10行的,使用o组成的直角三角形
		//n和str是实际参数,它们的值将被拷贝给对应的形式参数
		int n = 10;
		String str = "o";
		printX(n, str);
	}
}

4.方法返回值

public class Day0881 {
	
	public static void main(String[] args) {
		System.out.println(f1());
		System.out.println(f2());
		System.out.println(f3());
		f4(-1);
	}
	
	//如果方法声明了返回值,那么就必须要返回一个值
//	public static int f() {
//		
//	}
	
	//实际返回的数据类型必须和声明的返回值的类型相匹配
//	public static int f() {
//		return "你好";
//	}
	
	public static int f1() {
		return 'A'; //65
	}

	public static int f2() {
		return (int)10L; //10
	} 
	
	public static long f3() {
		//int可以自动转换成long
		return 1; //1
	}  
	
	//void方法也可以使用return
	public static void f4(int num) {
		if(num <= 0) {
			System.out.println("数据非法");
			//return;表示终止方法执行
			return;
		}
		//动态控制三角形的行数num
		for (int i = 1; i <= num; i++) {
			for (int j = 1; j <= i ; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	
	//return语句后面不能再有其他代码
	public static int f() {
		return 0;
//		System.out.println("Hello"); //编译错误	
	}
}

5.方法重载

在同一个类中,一个方法可以和另外一个方法有相同的方法名,但是必须有不同的参数列表,这种情况叫做方法重载。

方法重载,可以为一组方法使用相同的名字,增加可读性。

public class Day089 {
	//同一个类中不能有重复的方法签名,方法签名由 方法名+(参数列表)组成
	
	//参数列表为空
	//方法签名为f()
	public static void f() {
		System.out.println("f()");
	}
	
	//参数列表为int
	//方法签名为f(int)
	//变量名不属于参数列表
	public static void f(int number) {
		System.out.println("f(int number)");
	}
	
	//参数列表为int
	//方法签名为f(int)
	//编译错误,参数名不属于参数列表,因此方法重复定义
//	public static void f(int n) {
//		
//	}

	//方法签名f(int , String)
	public static void f(int number, String str) {
		
	}
	//方法签名f(String, int)
	public static void f(String str, int number) {
		
	}
	
	public static void main(String[] args) {
		f(); //f()
		f(1); //f(int number)
	}
}
public class Day0810 {

	public static int max(int a, int b) {
		return a > b ? a : b;
	}
	
	public static double max(double a, double b) {
		return a > b ? a : b;
	}
	
	public static void main(String[] args) {
		//在调用方法时,编译器会根据实际参数的类型查找匹配的方法
		System.out.println(max(1, 2)); //2
		System.out.println(max(1.0, 2.0)); //2.0
		//调用max(double a, double b),因为float可以自动转换为double
		System.out.println(max(1.0f, 2.0f)); //2.0
		
		//以println方法演示方法重载
		System.out.println(1); //1
		System.out.println("a"); //a
		System.out.println(2L); //2
	}
}

6.变量的作用域

变量的作用域决定了变量可以在什么地方被访问到。

变量的作用域决定了变量什么时候产生,什么时候销毁。

public class Day0811 {
	//声明了一个类变量,是全局变量,只要能访问到它,都可以直接使用
	//可以在本类的所有方法中使用
	//也可以在其他类的方法中使用
	//前提是这个类变量使用了public修饰符
	//如果使用private修饰符,只能在本类中访问
	public static int count = 0;
	
	public static void f1() {
		//n在方法中声明的,它的作用域是从声明的地方开始,一直到方法结束
		int n = 2;
		if(n >= 2) {
			//a在if块中声明的,它的作用域是从声明的地方开始,一直到块结束
			int a = 5;
			System.out.println(a);
		}
		System.out.println(n);
//		System.out.println(a); //编译错误,a已经销毁
		
		System.out.println(count);
	}
	
	public static void f2() {
//		System.out.println(n); //编译错误,n是在f1方法中声明的
//		System.out.println(a); //编译错误,a是在f1方法中声明的
		
		System.out.println(count);
	}
	
	public static void f3(int n) {
		System.out.println(n);
        
		System.out.println(count);
	}
	
	public static void main(String[] args) {
		
	}
}

7.使用类常量和类方法

在类中使用static修饰的变量叫做类变量 。

public static int count = 0;

如果使用final修饰类变量,就成为了类常量 。

public static final int count = 0;

在类中使用static修饰的方法叫做类方法 。

public class Day0813 {
	//类变量
	public static int x = 0;
	
	//类常量
	public static final int count = 0;
	
	//类方法
	public static void f() {
		
	}

	public static void main(String[] args) {
		//访问Math类的类常量PI
		//public static final double PI = 3.14159265358979323846;
		System.out.println(Math.PI);
	}
}

8.练习

1,定义一个方法,功能是打印m行n列的指定符号的矩形,在主方法中调用此方法。

2,定义一个方法,功能是计算长为x,宽为y的矩形的面积,在主方法中调用此方法,在主方法中打印结果。

3,定义一个方法,实现找出三个数的最大值,并在主方法中调用此方法,在主方法中打印结果。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十年之伴

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

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

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

打赏作者

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

抵扣说明:

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

余额充值