Java-方法

Day06

6.1 方法的定义及分类

方法:

也叫做函数,实现某个功能

方法分类:

系统提供的方法
  • 常用的系统提供的方法:
    如:nextInt(),next(),nextDouble(),print()。。。

  • 用户自定义方法

6.2 方法的基本语法格式

[修饰符]  返回值类型  方法名称([参数列表]){
	方法体
}
  • []中的内容是可有可无的
  • 暂时将方法的修饰符编写为public static
  • 返回值类型有两种情况:
      第一种:无返回值类型,也就是编写为void
      第二种:有返回值类型,目前可有编写9中数据类型之一
  • 方法名称,也就是标识符,建议编写单词,即见名知义。建议采用驼峰命名法,如age,getAge
  • 方法体实现具体的功能

6.3 方法的调用

语法格式

类名.方法名称([参数列表]);
方法名称([参数列表]);//只能调用本类的方法

public class Method01 {
	//使用方法完成输出5遍HelloWorld
	//注意:1.方法是编写在类中的,2.用户自定义方法不并不会自动执行,则必须进行方法的调用
	public static void print(){
		for(int i = 1;i <= 5;i++){
			System.out.println("第"+i+"遍HelloWorld");
		}
	}
	public static void main(String[] args){
		System.out.println("OK");
		//调用Method01类中的print方法,如果方法在本类中类名可省略,即print();即可
		Method01.print();
	}
}

流程图

class Method02 {		
	public static void main(String[] args){
		//调用Method01类中的print方法,调用其他类的方法,类名不可省略
		Method01.print();
	}
}

6.4 无参无返回类型方法

public static void 方法名称();

class Method03 {
	//输入1-100中的每个数要求使用无参无返回类型的方法完成(void),参数列表去掉
	public static void print(){
		for(int i = 1;i <= 100;i++){
			System.out.println(i);
		}
	}
}

class Method04 {		
	public static void main(String[] args){
		//调用Method03类中的print方法
		Method03.print();
	}
}

6.5 无参带返回类型方法

public static 返回类型 方法名称();

  • 题目只有一个结果,此时就可以编写为带返回类型的方法完成
  • 如果方法有返回类型,则在方法体中必须编写return,通过return返回结果
  • 方法的返回类型必须与return后面值的类型一致
  • 通过return将结果返回到方法的调用处,因此在调用处处理结果
  • 可以在一个方法体中编写多个return,但最终只执行一个相匹配的值将值返回
class Method03 {
	/*
	//输入1-100中的每个数要求使用无参无返回类型的方法完成(void),参数列表去掉
	public static void print(){
		for(int i = 1;i <= 100;i++){
			System.out.println(i);
		}
	}
	*/
	
	//计算1+2的和,要求使用方法完成
	public static int sum(){
		int s = 1 + 2;
		return s;//通过return将结果s返回到方法调用处
	}
}

class Method04 {		
	public static void main(String[] args){
		/*
		//调用Method03类中的print方法
		Method03.print();*/
		
		int a = Method03.sum();//先调用方法,然后将方法返回的结果如3再赋给左侧变量名称a
		System.out.println(a);
	}
}
class Method05 {
	//判断一个字符是大写字母,小写字母,还是数字字符
	public static String result2(){
		char ch = 'd';
		if(ch >= 'A' && ch <= 'Z'){
			return "大写字母";
		}else if(ch >= 'a' && ch <= 'z'){
			return "小写字母";
		}else if(ch >= '0' && ch <= '9'){
			return "数字字符";
		}
		return "其他字符";
	}
	//判断12是奇数还是偶数
	public static String result(){
		if(12 % 2 == 0){
			return "是偶数";
		}else{
			return "是奇数";
		}
	}
	public static void main(String[] args){
		//调用return方法
		String s = result();
		System.out.println(s);
		System.out.println(result2());
	}
}

6.6 break,continue,return之间区别

break:

  • 表示中断,可以在switch case以及循环中使用,当遇到break则结束当前整个switch case或循环

continue:

  • 表示继续,只能在循环中使用,遇到continue时则结束本次循环,继续执行下一次循环

return:

  • 表示返回,只能在方法中使用。当遇到return时则返回到方法的调用处
  • 特殊形式:当方法是无返回类型时,可以在方法体中编写return,但是必须编写为return;
class Method06{
	
	public static void print3(){
		for(int i = 1;i <= 5;i++){
			if(i == 3){
				return;//是3的时返回方法调用出即终止方法
			}
			System.out.print(i+"\t");
		}
		System.out.println("OK");
	}
	
	public static void print2(){
		for(int i = 1;i <= 5;i++){
			if(i == 3){
				continue;
			}
			System.out.print(i+"\t");
		}
		System.out.println("yes");//是3的时候跳出for循环,继续下一个循环
	}
	
	public static void print(){
		for(int i = 1;i <= 5;i++){
			if(i == 3){
				break;
			}
			System.out.print(i+"\t");
		}
		System.out.println("Hello");//是3的时候中断for循环,执行此语句
	}
	
	public static void main(String[] args){
		print();//1	2	Hello
		print2();//1	2	4	5	yes
		print3();//1	2
	}
}
class Method07{
	//根据输入的星期返回每天做的事情
	public static String getInfo(){
		String week = "星期五";
		switch(week){
		case "星期一":
		case "星期二":
		case "星期四":
			return "学习";
			//break;编译错误,因为return后面不必有代码
		case "星期三":
		case "星期五":
			return "自习";
			//break;
		default:
			return "休息";
			//break;
		}
	}
	public static void main(String[] args){
		//调用本类中的getInfo
		System.out.println(getInfo());
	}
}

6.7 带参无返回类型方法

当题目中有未知的数,因此可以编写为带参数的方法

class Method08{
	//计算两个数的差,可编写带参无返回类型的方法完成
	public static void sub(double num1,double num2){
		double result = num1 - num2;
		System.out.println(num1+"-"+num2+"="+result);
	}
	
	//使用方法完成,输出1-n中的每个数
	//分析:题目含有未知参数,因此编写带参数的方法
	//参数语法格式:数据类型  参数名称,多个参数使用英文逗号隔开。方法中未知参数为形参
	public static void print(int n){   //n就是形参
		for(int i = 1;i <= n;i++){
			System.out.println(i);
		}
	}
	public static void main(String[] args){
		//调用本类中的print方法
		print(5);//5表示实参,实参必须与形参个数一致,类型一致,顺序一致
		System.out.println();
		print(10);
		sub(1.2,3);
	}
}

方法内存分析图

方法内存分析图
总结:

  • 方法中声明的变量未局部变量,其中形参也属于局部变量
  • 方法执行完毕,该方法出栈(弹栈),同时该方法的局部变量也随之释放空间
  • 各方法中声明的局部变量可以同名,但没有任何影响,各自都是独立的

6.8 带参带返回类型方法

class Method09{
	//判断一个三位数是否为水仙花数
	//分析:三个未知数,编写为参数,有两种情况但只得到一个结果,是否这种情况一般编写为Boolean类型
	public static boolean isFlag(int num){
		//先判断是否为三位数
		if(num >= 100 && num <= 999){
			//获取num中各个位的数
			int gw = num % 10,sw = num / 10 % 10,bw = num / 100;
			//计算各个位立方和
			int sum = gw*gw*gw+sw*sw*sw+bw*bw*bw;
			
			//判断立方和是否和当前数相等
			/*
			if(sum == num){
				return true;//true是水仙花数
			}else{
				return false;//false表示不是水仙花数
			}*/
			return sum == num;//等价于前面的if else
		}else{
			return false;//false表示不是水仙花数
		}
	}
	//判断一个年龄,输出老年,中年,青年,少年
	public static void print(int age){
		if(age > 65){
			System.out.println("老年");
		}else if(age >= 30){
			System.out.println("中年");
		}else if(age >= 18){
			System.out.println("青年");
		}else{
			System.out.println("少年");
		}
	}
	
	//编写带返回带参数的方法
	public static String getInfo(int age){
		if(age >= 65){
			return "老年";
		}else if(age >= 30){
			return "中年";
		}else if(age >= 18){
			return "青年";
		}
		return "少年";
	}
	
	public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		System.out.print("请输入年龄:");
		int age = input.nextInt();
		print(age);
		
		System.out.println(getInfo(age));
		
		System.out.println(isFlag(12));
	}
}

综合案例:

class Method10{
	//编写方法输出所有三位数的水仙花数
	public static void print(){
		for(int i = 100;i <= 999;i++){
			if(Method09.isFlag(i)){
				System.out.println(i);
			}
		}
	}
	public static void main(String[] args){
		//调用本类中的print方法
		print();
	}
}

6.9 方法重载

在同一个类中,方法的名字可以相同,参数类型必需不同(类型不同、个数不同、顺序不同),与返回类型无关,构成方法的重载

class Method11{
	//总结:在同一个类中,方法的名字可以相同,参数类型必需不同(类型不同、个数不同、顺序不同),与返回类型无关,构成方法的重载
	//练习:使用方法完成,获取两个数的最大数
	public static int max(int a,int b){
		return a > b ? a : b;
	}
	public static void max(double x,int y){//void不带返回
		System.out.println(x > y ? x : y);
	}
	public static void main(String[] args){
		System.out.println(max(12,11));
		max(0.9,1);
	}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值