5. 方法

5.1 定义方法

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,...){
函数体;
return 返回值;
}

注意:对每一个参数都要进行独立的数据类型声明

5.2 调用方法

class text{
	public static void main(String[] args){
		//实际参数
		int a=3;
		int b=4;

		System.out.println(add(1,2));//输出调用
		//add(b,a);     //单独调用 
		//int c=add(a,10);//赋值调用 
		System.out.println(c);
	}
	public static int add(int a,int b){//形式参数
			return a+b;
	}
	
}

进栈
在这里插入图片描述
出栈
在这里插入图片描述
注意 :带返回值的方法必须有return语句

  • 程序编译错误,编辑器认为可能不返回任何值
public static int sign(int n){
	if(n>0){
		return 1;
	}else if(n==0){
		return 0;
	}else if(n<0){
		return -1;
	}
}
  • 改进
public static int sign(int n){
	if(n>0){
		return 1;
	}else if(n==0){
		return 0;
	}
	return -1;
}

5.3 参数的传递(传值)

	public static void main(String[] args){
		int n1=1;
		int n2=2;
		swap(n1,n2);
		System.out.println("n1="+n1+" , "+"n2="+n2);
		//n1=1 , n2=2,实参n1,n2的值不变
	}
	public static void swap(int a,int b){
		int temp=a;
		a=b;
		b=temp;
		System.out.println("a="+a+" , "+"b="+b);
		//a=2 , b=1形参a,b的值交换
	}

形参a,b有独立的存储空间,a,b互换不影响n1,n2的值

栈中运行过程
在这里插入图片描述
练习1:将16进制转化为10进制

import java.util.*;
class Transform16_10{
	public static void main(String[] args){
		Scanner scanner=new Scanner(System.in);
		System.out.print("输入一个16进制数:");
		//输入1个16进制数
		String hex=scanner.nextLine();
		System.out.println("16进制数:"+hex+"->"+"10进制数:"+transform(hex));
	}
	//转换为10进制
	public static int transform(String hex){
		//初始化10进制数
		int num=0;
		for(int i=0;i<hex.length();i++){
			//提取16进制数的每一个字符
			char a=hex.charAt(i);
			//调用change()函数,转换每个字符为数字
			num+=change(a)*(Math.pow(16,Math.abs(i-hex.length()+1)));
			}
			return num;
	}
	//将16进制中的字符转化为数字
	public static int change(char a){
		if(a>='A' && a<='F'){
			return 10+a-'A';//A 10 B 11 C 12 D 13 E 14 F15
		}else{
			return a-'0';  //0~9    -'0'的作用是让a参与ASCII值的运算,若无,则返回a的ASCII值
		}
	}
}

5.4 重载方法

在同一个类里面 可以存在多个同名函数

  • 函数重载的前提是函数重名
  • 重载的区别是参数类型的排列组合(个数 顺序)
class test{

	public static int add(int a,int b){
		return a+b;
	}
	
	public static int add(int a,int b,int c){
		return a+b+c;
	}

	public static double add(double a,double b){
		return a+b;
	}

	
	public static void main(String[] args){
		int a=3;
		int b=4;
		System.out.println(add(a,b));//2个整数
		System.out.println(add(10,20,30));//3个整数
		System.out.println(add(3.2,5.8));//小数
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43498251/article/details/87303293