• 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("您已退出");		
    	}
    }
    
  • 相关阅读:
    路由相关题目解析
    Centos7.6系统安装
    组播(二)---IGMP
    那些瞬间击中我的句子
    组播(一)
    记一次安装浪潮服务器的经历
    HP打印机驱动安装方法总结
    潍坊矿场ubuntu18 server 基本环境配置常用操作
    docker-zabbix
    MySQL 8.x 账号管理
  • 原文地址:https://www.cnblogs.com/hzhjxx/p/10027426.html
Copyright © 2020-2023  润新知