方法可以用于定义可重用的代码以及组织和简化编码。

6 . 2 定义方法

方法的定义由方法名称、参数、返回值类型以及方法体组成。

定义方法的语法如下所示:

修饰符 返回值类型 方法名( 参数列表 ){ 
// 方法体 ; 
}

java的方法函数类有什么区别_值类型

方法可以返回一个值。retumValiieType 是方法返回值的数据类型。有些方法只是完成某些要求的操作,而不返回值。在这种情况下,retuniValueType 为关键字 void。方法中返回 值类型也是如此。如果方法有返回值,则称为带返回值的方法(, 否 则就称这个该方法为 void 方法。

================================================================================

定义在方法头中的变量称为形式参数或者简称为形参。参数就像占位符。当调用方法时,就给参数传递一个值,这个值称为实际参数或实参。参数列表指明方法中参数的类型、顺序和 个数。方法名和参数列表一起构成方法签名。参数是可选的,也就是说, 方法可以不包含参数。例如:Math.random()方法就没有参数。

注意:在方法头中,需要对每一个参数进行独立的数据类型声明。例如:max(int numl,1nt num2)是正肩的,而 max(int numl,mim2)是错误的。

6.3调用方法

方法的调用是执行方法中的代码。

在方法定义中,定义方法要做什么。为了使用方法,必须调用它。根 据方法是否有返回值,调用方法有两种途径。

 

无返回值的函数 只能调用 不能打印、赋值、运算
有返回值的函数 除了调用 参与打印、赋值、运算

函数的运行时基于栈的
    栈内存 函数运行叫作函数入栈 函数结束叫作函数出栈
实际参数:实际传递给函数的数据 可以是变量 也可以是常量
形式参数:用于接收调用者传递来的数据
形式参数使其所属函数的局部变量
局部变量:在函数中定义的变量
    随着函数进栈而存在
    随着函数出栈而消亡

6.4函数的重载
表面上来看:一个类中有若干个重名函数
重载和函数的权限修饰符有关系没?没关系
重载和函数的类型修饰符有关系没?有 为啥
重载和函数的返回值类型有关系没?没
和函数名有关系吗?有 前提重名
和函数的参数列表有关系没?和参数名没关系 和类型有关系
目前而言 重载的前提是函数重名
具体到底是不是重载关系 看参数类型的排列组合(个数,顺序)
add(double,double)
add(int,int)
add(int,double,int)
add(double,int,int)
add(int,int,double)
重载的好处?对函数的参数进行拓展

函数的内存调用:

                                       

java的方法函数类有什么区别_java_02

     (图中标号代表了执行的流程),先介绍一下,在运行一个程序时,首先加mian()函数,因为mian()函数时程序的开始,前面已经介绍了函数是在“栈内存”中开始的,所以首先将mian()加载到我们的栈内存中,图中红色圆点代表加载进来的mian()函数。然后mian()函数调用sum()函数并传递给了该函数两个实际参数1和10,此时注意,我们的实际参数并不是直接付给变量了,而是将所有的实际参数都存放在了“常量池”中,并且每个参数都有一个存放的地址,此时程序中变量传递的都是参数的地址,所以执行②和③,此时加载第一个调用的sun()函数,并将两个参数的地址传递给两个变量,在sum()函数中定义的其他变量所赋的初值都是传递的是参数的地址,当sum()函数计算完成后,将结果返回,此时sum()函数弹栈,再调用下一次的sum()函数进行参数传递。与第一次执行流程一样。
 

import java.util.Scanner;
//运行的流程图 UML
//内存的流程图 UML
class Home26{
    public static void main(String[] args){
        //1.提示用户输入一个数字
        int number=initData();
        //2.判断是否是回文素数
        if(isHuiWenSuShu(number)){
            System.out.println("是");
        }else{
            System.out.println("不是");
        }
    }
    public static int initData(){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        return scanner.nextInt();
    }
    public static boolean isHuiWenSuShu(int num){
        //3.判断是否是素数且回文
        return isHuiWen(num)&&isSuShu(num);
    }
    public static boolean isHuiWen(int num){
        //4.计算翻转数字
        int revNum=reverse(num);
        return revNum==num;
    }
    public static int reverse(int num){
        int sum=0;
        while(true){
            sum=sum*10+num%10;
            num/=10;
            if(num==0){
                break;
            }
        }
        return sum;
    }
    public static boolean isSuShu(int num){
        //5.计算素数
        boolean flag=true;//是素数
        for(int i=2;i<=num/2;i++){
            if(num%i==0){
                flag=false;
                break;
            }
        }
        return flag;
    }
}

PS C:\Users\gaoyu\Desktop\javaseday04> javac Home26.java
PS C:\Users\gaoyu\Desktop\javaseday04> java Home26
请输入一个数字:131

 

//计算一个整数n的m次幂 2^3 2^-3
 
class Demo04{
    public static void main(String[] args){
 
        System.out.println(pow(2,4));  //对函数不同传参的条用,查看程序运行结果是否正确
        double a=pow(3,2)+10;
        a=pow(2,-4);
        System.out.println(a);
        //System.out.println(pow(0,0));
        System.out.println(pow(0,1));
        System.out.println(pow(0,-9));
        System.out.println(pow(2,0));
    }
    public static double pow(int n,int m){  //定义一个计算一个整数n的m次幂的函数,返回值为double类型,因为整数的负数次幂是分数
        if(n==0&&m==0){    //首先判断特殊情况,0的0次幂是没有意义的,也没有正常返回值
            //没有正常返回值了!只能抛异常
            throw new ArithmeticException("0 and 0");  //这里可以先用抛异常的方式提示用户输入的不正确
        }
        if(n==0){   //其次0的任何次幂(除了0)都为0
            return 0;
        }
        if(m==0){   //任何数(除了0)的0次幂都为1
            return 1;
        }
        double multi=1; 
        for(int i=1;i<=Math.abs(m);i++){  //如果和m都不为0,则将n乘m次,
            multi*=n;
        }
        if(m>0){
            return multi; //如果m大于0,表示是整数次幂,为正整数
        }else{
            return 1/multi;   //如果m小于0,表示是负数次幂,为分数
        }        
     }
  }
}