JAVA 函数部分

一.函数的定义

函数就是定义在类中的具有特定功能的一段独立小程序(主要解决的是那些重复的且具有独立功能的代码块)函数也称为方法。

 函数存在的意义:降低了代码的冗余,复用函数即可,降低了主函数的代码量,将主函数进行适当地拆分,以便内存的优化。

二.函数的格式

    访问权限  函数类型 返回值类型 函数名(参数列表){

       函数体

       return返回值;

     }

 

访问权限:指的就是函数的使用范围(内部和外部)。

  • public
  • protected
  • 默认不写
  • private

函数类型:指的就是函数类型分类,说的就是函数的具体使用场景和场合。

函数名:就是程序员给这一段代码自定义的名称(标识符)。

参数列表:参数列表有若干个 参数类型,参数名...组成,主要用于接收外界传递给函数的一些数据(形参)。参数可选可不选例如:MMath.random()方法中就没有参数。

函数体:具有独立功能的代码块。

return:仅仅表示结束当前函数,如果有返回值(代码块的计算结果),则函数结束前将返回值返回给调用者。如果发现return不在,是因为函数没有返回值,所以return可以忽略不写。

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

三.函数的分类

  • 有返回值有参数
  • 有返回值无参数
  • 无返回值有参数
  • 无返回值无参数

注意:有返回值的函数参与运算,输出,赋值。无返回值的函数仅仅进行调用,并不能对返回结果进行额外的操作。

 

四.函数传参

实际参数(实参):就是在调用函数的时候给函数传递的数据(常量,变量)叫做实参。

形式参数(形参):就是定义函数的时候,参数列表当中的数据,叫做形参。

注意:实参是把常量在常量池中的地址和 对象在堆内存中的地址 传递给形参的。

 

 解释:程序从主函数开始运行,a,b当中存的是4和6在常量池中的地址,遇到double c = pow(a,b),则先执行pow(a,b),得出结果sum,然后将sum中所存的地址传递给c,之后程序继续往下执行。

 

五.函数栈

 函数的运行是基于栈内存的(栈是一个先进后出的一个容器结构)。

每当调用一个方法时,系统会创建一个活动记录(也称为活动框架),用于保存方法中 的参数和变量。活动记录置于一个内存区域中,称为调用堆栈(call stack)。调用堆栈也称 为执行堆栈、运行时堆栈,或者一个机器堆栈,常简称为 “堆栈”

 

 

如图1为函数栈的运行流程:

 

 

图2堆栈中用于方法调用的记录

 

六,程序题

1.

分析:回文素数里面再调用回文函数和素数函数分别实现对应的功能。

class Demo04_06{
    public static void main(String[] args){
        int count=0;    //表示回文素数的个数
        int num=2;      //表示可能的回文素数的数字 从2开始~?
        while(true){
            //如果num是 回文素数
            if(isHuiWenAndSuShu(num)){
                count++;
                System.out.print(num+" ");
                if(count%10==0){               //每十个数换一行
                    System.out.println();
                }
            }
            if(count==100){
                break;
            }
            num++;
        }
    }
    public static boolean isHuiWenAndSuShu(int num){
        return isHuiWen(num)&&isSuShu(num);
    }
    public static boolean isHuiWen(int num){
        return reverse(num)==num;           
    }
    public static int reverse(int num){        //实现反序
        int sum=0;
        while(true){
            sum=sum*10+num%10;
            num/=10;
            if(num==0){
                return sum;
            }
        }
    }
    public static boolean isSuShu(int num){//判断素数
        for(int i=2;i<=num/2;i++){
            if(num%i==0){
                return false;
            }
        }
        return true;
    }
}

 

 

2.

分析://本身是素数
         //反转之后也是素数
         //不能是回文

class Demo04_07{
    public static void main(String[] args){
        int count=0;
        int num=2;
        while(true){
            if(isFanZhuanSuShu(num)){
                count++;
                System.out.print(num+" ");
                if(count%10==0){
                    System.out.println();
                }
            }
            if(count==100){
                return; //结束当前函数
            }
            num++;
        }
    }
    //1.本身是素数
    //2.反转之后也是素数
    //3.不能是回文
    //素数()  反转() 回文功能()
    public static boolean isFanZhuanSuShu(int num){
        return isSuShu(num)&&isSuShu(reverse(num))&&!isHuiWen(num);
    }
    //回文功能
    public static boolean isHuiWen(int num){
        return reverse(num)==num;
    }
    //素数功能
    public static boolean isSuShu(int num){
        for(int i=2;i<=num/2;i++){
            if(num%i==0){
                return false;
            }
        }
        return true;
    }
    //反转功能
    public static int reverse(int num){
        int sum=0;
        while(true){
            sum=sum*10+num%10;
            num/=10;
            if(num==0){
                return sum;
            }
        }
    }
}

 

 

 

3.

import java.util.Scanner;
class Demo04_02{
    public static void main(String[] args){
        //1.提示用户输入一个数字
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int num=scanner.nextInt();
        //2.判断该数字是否是一个回文
        if(isPalindrome(num)){  // pause1
            System.out.println("是回文");
        }else{
            System.out.println("不是回文");
        }
        //return ;
    }
    public static boolean isPalindrome(int num){
        //1.先计算该数字的反序
        //2.对比反序的数字和数字本身
               
        return reverse(num)==num; 
    }
    public static int reverse(int num){
        int sum=0;
        while(true){
            sum=sum*10+num%10;
            num/=10;
            if(num==0){
                return sum;
            }
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值