(11.06)Java小知识

  最近由于课程变化,学习计划也跟着改动,留给我写博客的时间也越来越少。今天晚上没有课,抽空过来图书馆写一写,许久不写感觉都有点陌生了!

  今天要和大季家分享的衔接了上一篇博客,是关于方法的嵌套调用与递归调用,是学习方法过程中不可避免的两个版块,大家一起来看一看!

  关于嵌套调用:

  在Java语言中,各个方法之间是平行的,不存在上一级方法和下一级方法的问题,并且在Java语言中允许在一个方法的定义中出现对另一个方法的调用,于是便有了方法的嵌套调用,即在被调用的方法中又电泳其他方法。例如:执行main方法中调用a方法的语句时,即转去执行a方法,在a方法中调用b方法时,又转去执行b方法,b方法执行完毕返回a方法的断点继续执行,a方法执行完毕返回main方法的断点继续执行。

   计算 s=(2*2)!+(3*3)!

public class demo{
    public static void main(String[] args){//
        int i;long s=0;
        for(i=2;i<=3;i++) s=s+fun1(i);
        System.out.println(s);
    }
    static long fun1(int p) {//定义fun1方法用来计算平方值并调用fun2方法
    	int k;long r;
    	k=p*p;
    	r=fun2(k);
    	return r;
    }
    static long fun2(int q) {//计算阶乘值的方法fun2
    	int i;long c=1;
    	for(i=1;i<=q;i++) c=c*i;
    	return c;
    }
}

  解析:在主程序中,执行循环程序依次把i值作为实参调用方法fun1求i的平方的值。在fun1中又发生了对方法fun2的调用,这时是把i的平方的值作为实参去调用fun2,在fun2中完成(i*i)!的计算。fun2执行完毕之后把C值(即i*i!)返回给fun1,再由fun1返回主方法实现叠加。

  关于递归调用:

  其实递归方法就是直接或者间接调用自身的方法。许多数学函数都是使用递归来定义的,这样的 函数在Java中也能来定义与调用。设计算n!的方法为fun1,根据n阶乘的递归定义方式,计算fun1的递归算法可以简单地描述如下:

    if(n==0) return 1;
    else return n*fun1(n-1);

  例:输入一个非负整数,显示该数的阶乘值。

import java.util.Scanner;

public class demo{
    public static void main(String[] args){
    	Scanner input = new Scanner(System.in);
    	System.out.println("请输入一个非负整数:");
    	int n = input.nextInt();
    	System.out.println(n+"的阶乘值是:"+fun1(n));
    }
    public static long fun1(int n) {
    	if (n==0) return 1;
    	else return n*fun1(n-1);
    }
}

  其实嵌套调用与递归调用都只是方法的拓展,只是前者是调用另一个方法,而后者是调用自身的方法。

时间: 2024-10-20 01:32:32

(11.06)Java小知识的相关文章

java 小知识

1.JDK就是Java Development Kit.是 Java 语言的软件开发工具包(SDK),简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境.基本上每个学java的 人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录.在目录下面有六个文件夹.一个src类库源码压缩包.和其他几个声明文件.其中,真正在运 行java时起作用的是以下四个文件夹:bin.include.lib. jre.现在我们可以看出这样一个关系,JDK包含JRE

(11.13)Java小知识!

今天想要与大家分享一下有关于构造方法的知识! 构造方法的定义与作用 构造方法是一种特殊类型的方法.当一个对象被创建的时候,构造方法用来初始化对象,也就是说构造方法其实是一个名词而不是动词,像我刚刚开始接触的时候会把构造方法当成动词理解,就比较麻烦.构造方法和它所在类的名字相同,但构造方法没有返回值,因此不能再构造方法中使用return语句返回一个值. 构造方法的语法格式如下: [访问修饰符]<类名>([参数列表]){ 构造方法的语句体 } 其中,修饰符可以为public,protect,pri

[Java]Java小知识总结01

Title>初识Java 1>小概念 IDE (集成开发环境)是一类软件,它将程序开发环境和程序调试环境集合在一起, 一般包括代码编辑器.编译器.调试器和图形用户界面等工具帮助程序员开发软件. JRE (Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库. JDK 是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序. JDK是整个java开发的核心,它包含了JAVA的运

java小知识,驼峰规则

单词之间不以空格.连接号或者底线连结(例如不应写成:camel case.camel-case或camel_case形式).共有两种格式: 1.小驼峰式命名法(lower camel case): 第一个单字以小写字母开始,第二个单字的首字母大写.例如:firstName.lastName. 2.大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName.LastName.CamelCase,也被称为 Pascal 命名法. 补充说明,在JA

每天学点Java小知识【1】

一 Java标识符和关键字 1.标识符 作用:用来标识类名.变量名.方法名.类型名.数组名.文件名的有效字符序列. 组成规则:由字母.下划线.美元符号和数字组成,且第一个字符不能是数字字符.注意:标识符中的字母是区分大小写的,Boy和boy是不同的标识符. 2.关键字 Java语言中一些单词被赋予了一些特定意义,不可以将这些词作为名字来用.其中的关键字有:abstract.boolean.break.byte.case.catch.class.continue.do.double.else.en

Java小知识--length,length(),size()方法详细介绍

Java中length,length(),size()区别 length属性:用于获取数组长度. eg: int ar[] = new int{1,2,3} /** * 数组用length属性取得长度 */ int lenAr = ar.length;//此处lenAr=3 System.out.println("Arr length:"+lenAr); length()方法:用于获取字符串长度. String str = "Hello World Java"; /

java小知识(整理了一些)

判断为空 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法.2:if(s == null || s.length() <= 0);方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法3:if(s == null || s.isEmpty()); 判断字符串是否为空 StringUtils

JAVA小知识

1.重载 方法的重载是同一个类中多态性的一种表现. 方法重载须遵循如下两条规则 (1)方法名相同. (2)参数列表不同. 注意:方法的返回值类型不能用来区分重载的方法.这是因为当调用一个方法时,返回值的类型是不显示的. 2.重写 方法的重写是子类对父类的方法进行改造. 方法重写必须满足下列条件. (1)子类的方法的名称及参数必须和所重写的方法完全相同. (2)子类的方法返回类型必须和所重写的方法相同. (3)子类方法不能缩小所重写方法的访问权限. (4)子类方法不能抛出比所覆盖方法更多的异常.

开发中遇到的java小知识

今天在优化一个功能的时候遇到了instr与substr函数,之前没有接触过这两个函数,但是今天无意中用到,一查才发现,真是实用的一对兄弟啊. 先来说说substr函数,这个函数返回的是字符串的一部分. substr(string,start,length) 其中string参数为必须参数,要截取的字符串内容. start为必须参数,为起始的位置,可以为正数也可以为负数,正数的话代表从在字符串的指定位置开始:负数代表从字符串结尾的指定位置开始:0代表在字符串中的第一个字符处开始.  length不