java方法

方法可以理解为要做某件事情,而采取的解决办法。

java中,方法就是用来完成解决某件事情或实现某个功能的办法。

方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或计算数值。

可以通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法。方法一般都有一个返回值,用来作为事情的处理结果。

Tips:

类里面只用于定义:定义变量,容器,方法,其他处理语句不能写。

方法里不能再定义方法。

1语法格式

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

  执行语句

  ………

  return 返回值;

}

1)修饰符:public static(目前只记这一种就可以)

2)返回值类型:方法结束后想要给调用者的数据类型(基本数据类型,引用数据类型都可以)。void就是没有返回值类型,不能写return。如果不是void,则必须有return。

3)方法名:符合标识符规定即可

4)参数列表:需要外界传入参与方法中运算的值,也叫形参(如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。)

5)return关键字:用于结束方法以及返回方法指定类型的值

6)返回值:被return语句返回的值,该值会返回给调用者

例:计算圆的面积

class Demo01 
{
	public static void main(String[] args) 
	{
		//方法调用,并用一个变量接收返回值
		double area=getArea(1.2);
		System.out.println("圆的面积为"+area);
	}

	//方法定义
	public static double getArea(double r){
		double area=Math.PI*r*r;  //计算圆的面积
		return area;  //将结果返回给调用者
	}
}

 

2 内存图:

 

弹栈:方法执行完就弹栈(后进先出)

3 练习1:定义无返回值无参数方法,打印3行,每行3个*号的矩形

class Demo02{
	public static void main(String[] args){
		printStar();
	}

	public static void printStar(){
		for(int i=0;i<3;i++){
			for(int j=0;j<3;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

练习2:定义有返回值无参数方法,如键盘录入得到一个整数

import java.util.Scanner;
class InNum
{
	public static void main(String[] args){
		int n=getNum();
		System.out.println("录入的数为"+n);
	}

	public static int getNum(){
		Scanner sc=new Scanner(System.in);
		System.out.print("请输入一个整数:");
		int n=sc.nextInt();
		return n;
	}
}

练习3:定义无返回值有参数方法,如打印指定M行,每行N个*号的矩形

class Star 
{
	public static void main(String[] args) 
	{
		printStar(5,4);
	}

	//定义无返回值有参数方法,如打印指定M行,每行N个*号的矩形
	public static void printStar(int m,int n){
		for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

练习4:定义有返回值有参数方法,如求三个数的平均值

class AvgNum 
{
	public static void main(String[] args) 
	{
		double avg=calculate(10,10,10);
		System.out.println(avg);
	}

	public static double calculate(double n1,double n2,double n3){
		double avg=(n1+n1+n1)/3;
		return avg;
	}
}

4方法的重载

4.1定义

Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数或顺序必须不同,这就是方法的重载。

通过传不同的参数,来调用不同的方法。

4.2注意事项

1)在一个类中

2)方法名相同

3)参数:个数,类型,顺序,只要有一个不同,就是重载

4)与返回值无关(void method(int x)与int method(int y) 不是方法重载,不能同时存在,属于重复定义)

5)与具体的变量标识符无关(method(int x)与method(int y) 不是方法重载,不能同时存在,属于重复定义)

System.out.println()就是一个方法重载,

  

在这个文件中,

可以找到:

 

 

等等很多个,这就是方法重载,每次传的参数类型不同。

例:

class Demo03 
{
	public static void main(String[] args) 
	{
		int sum1=getSum(1,2);
		System.out.println("和为"+sum1);

		double sum2=getSum(1.1,2.2);
		System.out.println("和为"+sum2);

		double sum3=getSum(1,2.9);
		System.out.println("和为"+sum3);

		double sum4=getSum(1.8,2);
		System.out.println("和为"+sum4);
	}

	//定义方法计算两个数之和
	public static int getSum(int a,int b){
		return a+b;
	}

	//方法重载
	public static double getSum(double a,double b){
		return a+b;
	}
	public static double getSum(int a,double b){
		return a+b;
	}
	public static double getSum(double a,int b){
		return a+b;
	}
}

如果这样写,就会报错:

public static double getSum(int a,int b){

  return a+b;

}

public static int getSum(int c,int d){

  return c+d;

}

 

5 参数传递

调用一个方法时,会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,称为参数传递。

5.1

值传递:

当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响

 

引用传递:

当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响

 

例:

class Demo04 
{
	public static void main(String[] args) 
	{
		int a=0;
		double b=1;
		method01(a,b);
		System.out.println("a的值为"+a);
		System.out.println("b的值为"+b);
	}

	public static void method01(int a,double b){
		a=20;
		b=30;
	}
}

class Demo05 
{
	public static void main(String[] args) 
	{
		int[] arr={1,0};
		method01(arr);
		System.out.println("arr[0]的值为"+arr[0]);
	}

	public static void method01(int[] arr){
		arr[0]=20;
	}
}

5.2参数传递图解

因为数组进了堆,所以值会被改变

 

6 练习:

1)点名器 

import java.util.Scanner;
import java.util.Random;
class CallName
{
	public static void main(String[] args) 
	{
		String[] student=storage(5); //调用存储
		showAll(student);	//调用总览全班同学
		callOne(student);	//调用点名	
	}

	//存储所有同学姓名
	public static String[] storage(int num){		
		String[] student=new String[num];
		Scanner sc=new Scanner(System.in);

		for(int i=0;i<num;i++){
			System.out.println("请输入第"+(i+1)+"位同学的名字:");
			student[i]=sc.next();
		}
		return student;		
	}

	//总览全班同学姓名
	public static void showAll(String[] student){
		System.out.print("全班同学为:");
		for(int i=0;i<student.length;i++){
			System.out.print(student[i]+" ");
		}
		System.out.println();
	}

	//随机点名其中一人,打印到控制台
	public static void callOne(String[] student){		
		Random r=new Random();
		int n=r.nextInt(student.length);
		System.out.println(student[n]+"被点到了!");
	}
}

2)库存管理

import java.util.Scanner;
class Stock 
{
	public static void main(String[] args) 
	{
		//初始数据
		String[] proName={"MacBookAir","ThinkpadT450","ASUS-FL5800"}; //商品名
		double[] proSize={13.3,14.0,15.6};	//尺寸
		double[] proPrice={6988.88,5999.99,4999.5};	 //价格
		int[] proNum={5,10,18};	 //库存

		//功能选择
		while(true){
			System.out.println("----------库存管理----------");
			System.out.println("1.查看库存清单");
			System.out.println("2.修改商品库存数量");
			System.out.println("3.退出");			
			System.out.println("请输入要执行的操作序号:");

			Scanner sc=new Scanner(System.in);
			int select=sc.nextInt();

			if(select==1){
				showList(proName,proSize,proPrice,proNum); //把四个数组传进去
			}
			if(select==2){				
				modifyNum(proNum);	//传入库存			
			}
			if(select==3){			
				signOut();
				break;
			}
		}
	}
	
	//查看库存清单
	public static void showList(String[] proName,double[] proSize,double[] proPrice,int[] proNum){
		System.out.println();
		System.out.println("--------------------商城库存清单----------------------------");
		System.out.println("编号	品牌型号	尺寸	价格		库存数");
		
		//打印商品
		for(int i=0;i<proName.length;i++){
			System.out.println(" "+(i+1)+"	"+proName[i]+"	"+proSize[i]+"	"+proPrice[i]+"		"+proNum[i]);
		}

		System.out.println("------------------------------------------------------------");
		
		int sumNum=0; //总库存
		for(int i=0;i<proNum.length;i++){
			sumNum+=proNum[i];
		}
		System.out.println("总库存数:"+sumNum);

		double sumMoney=0; //总金额
		for(int i=0;i<proName.length;i++){
			sumMoney+=proPrice[i]*proNum[i];
		}
		System.out.println("库存商品总金额:"+sumMoney);

		System.out.println();
		System.out.println();		
	}

	//修改库存
	public static void modifyNum(int[] AfterProNum){
		System.out.println();
		Scanner sc=new Scanner(System.in);

		while(true){
			System.out.println("请输入您要修改的商品编号");	
			int proId=sc.nextInt();	
			if(proId<=AfterProNum.length&&proId>0){
				System.out.println("请输入您要修改的库存数量");
				int afterNum=sc.nextInt();		

				AfterProNum[proId-1]=afterNum;	
				System.out.println();
				break;
			}			
		}		
	}

	//退出
	public static void signOut(){
		System.out.println("您已退出");		
	}
}
原文地址:https://www.cnblogs.com/hzhjxx/p/10027426.html