方法

Math.sqrt() 取平方  Math.pow(2,3) 2的3次方

方法(Method),就是数学函数(Function)。  业务方面: 是功能,是动作,一般采用动词命名。  数据层面:是利用算法操作数据模型,实现业务功能。  方法就是数据算法。

方法的声明

方法用于封装特定的逻辑功能。方法的主要要素有:方法名、参数列表和返回值。方法在类中定义,不能在方法中定义。

语法结构

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

方法要素--返回值

方法调用结束后可以返回一个数据,称之为返回值。方法在声明时必须指定返回值类型。如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为void,通过return语句返回,return语句的作用在于结束方法并且将数据返回。

return a+b;  return语句返回该表达式的值

return; 对于返回值为void的方法也可以使用return语句,此时该语句的作用在于结束方法调用。

如果方法声明的返回值,必须在方法体使用return 语句返回数据!

方法要素--参数列表

方法的参数是指:在调用时传递给方法,需要被方法处理的数据。在定义方法时,需要声明该方法所需要 参数变量。在方法调用时,会将实际的参数值传递给方法的参数变量。必须保证传递参数的类型和个数符合方法的声明。

方法的调用过程

public static int max(int a, int b){....}

int a=5;  int b=6;

int max=max(5 , 6);

(1)为main方法中的便利a b max 分配空间并赋值

(2)调用方法max,为max方法的参数变量a, b分配空间

(3)将调用值传入参数变量中

(4)max方法运行完返回,参数变量空间释放。

(5)main方法中的max变量得到返回值。

求斐波那契(Fibonacci) 数列(第n项 等于前两项的和)

public static long f(long n) {
long f1 = 1;
long f2 = 1;
long fn = 2;
for(int i = 3; i <= n; i++){
fn = f1 + f2;
f1 = f2;
f2 = fn;
}
return fn;
}

方法的递归调用

1. java 的栈是Java进程启动时候在内存中开辟的存储空间。栈内存的利用方式LIFO(后进先出)。ava所有局部变量都在栈中分配(压入), 方法的参数也是局部变量,局部变量在离开作用域时候回收 就是从栈中弹出(删除)。

2. Java方法调用使用栈实现, 递归调用就是栈实现的

3. 递归时候要按照递归深度分配全部临时变量, 栈开销很大,性能不好,要注意不要超过栈的大小, 并且一定要给出结束条件, 否则会造成栈溢出错误。

递归的优点与缺点

优点:业务问题解决的很优雅 只需要解决一个层次,其他层次问题就递归解决了。

缺点:大量消耗栈内存空间,不能进行过深层次的递归。否则可能出现栈溢出错误。

使用递归的要点

1)不能过深的递归

2)不能发散递归

3)必须有结束条件

案列

递归实现1+2+...+1000=?  fn(n)=f(n-1)+n

public static int f(int n) {
if(n == 1){
return 1;
}
return n + f(n - 1);
}

斐波那契

public static long f1(long n) {
if(n == 1 || n == 2){
return 1;
}
return f1(n - 1) + f1(n - 2);
} public static long f(long n) {
long f1 = 1;
long f2 = 1;
long fn = 1;
for(int i = 3; i <= n; i++){
fn = f1 + f2;
f1 = f2;
f2 = fn;
}
return fn;
}

java基础(7)--方法的更多相关文章

  1. Java基础02 方法与数据成员

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在Java基础01 从HelloWorld到面向对象,我们初步了解了对象(obje ...

  2. Java基础——clone()方法浅析

    一.clone的概念 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...

  3. Java基础02 方法与数据成员(转载)

    对象中的数据成员表示对象的状态.对象可以执行方法,表示特定的动作. 此外,我们还了解了类(class).同一类的对象属于相同的类型(type).我们可以定义类,并使用该定义来产生对象.   调用同一对 ...

  4. java基础(6):方法

    1. 方法 1.1 方法概述 在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法. 如:小明同学在路边准备坐车来学校学习.这就面临着一件事情(坐车到学校这件事情)需要解决,解决办法呢?可 ...

  5. Java基础之方法详解

    方法的所属性 在Java的语言中,方法相当于C语言中的函数,但是它与传统的函数也有着明确的不同:在结构化的语言中,函数是一等公民,整个程序是由一个个函数组成的:但是在面向对象的语言里,类是一等公民,整 ...

  6. 关于java基础_方法的简单习题

    package day05; import java.util.Arrays; /** * 方法作业 * @author ASUS * */ public class Demo6 { /* * 1.定 ...

  7. 【java基础】方法2

    让形参可变的方法 jdk1.5之后,java允许定义形参长度可变的参数,允许为方法指定数量不确定的形参. package object; public class VariableParam { // ...

  8. Java基础--继承方法调用顺序

    最近因为面试的原因,回过头来复习基础的知识,都忘光了,准备买本面试书回来啃. 我先把自己测试的结论总结写出来,以后忘记再来看看 如果b类继承自a类,在main方法中new出b的对象(不带参数),那么他 ...

  9. Java基础--finalize()方法

    原理: 一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并在下一次垃圾回收动作发生时,才会真正回收对象占用的内存. 用途: 1)释放通过某种创建对象方式以外的方式为对 ...

  10. [ 转载 ] Java基础13--equals方法

    一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 1 package cn.galc.test; 2 3 public class TestEquals { 4 public s ...

随机推荐

  1. boost::interprocess(1)

    发送端:#include <iostream> #include <windows.h> #include <string> using namespace std ...

  2. iOS企业开发In House ipa发布流程

    这两天需要发布一个ipa放到网上供其他人安装,需要用到企业级开发者账号.在网上查了一下资料,感觉没有一个比较完善的流程,于是决定把整个流程写下来,供大家参考. 首先详细说明一下我们的目标,我们需要发布 ...

  3. 爬虫入门【10】Pyspider框架简介及安装说明

    Pyspider是python中的一个很流行的爬虫框架系统,它具有的特点如下: 1.可以在Python环境下写脚本 2.具有WebUI,脚本编辑器,并且有项目管理和任务监视器以及结果查看. 3.支持多 ...

  4. 2 CDuiString的bug

    重温了一下 Effective C++,发现这就是条款24所指出的问题,看来读书百遍不如写代码一遍啊 在Notify处理消息时会有很多if语句,我通常喜欢把常量放在双等号前面,变量放在后面,比如:   ...

  5. 更新设置api

    8.8 更新设置 API Elasticsearch允许在elasticsearch.yml文件中指定各种参数来调优.但你应该把这个文件当做 默认设置,可以在运行时通过Elasticsearch RE ...

  6. Spring4学习笔记-AOP(基于配置文件的方式)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://shamrock.blog.51cto.com/2079212/1557743 引 ...

  7. 让Windows Server 2008+IIS 7+ASP.NET支持10万个同时请求

    具体设置如下: 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools >Advanced Settin ...

  8. Django - 权限(4)- queryset、二级菜单的默认显示、动态显示按钮权限

    一.queryset Queryset是django中构建的一种数据结构,ORM查询集往往是queryset数据类型,我们来进一步了解一下queryset的特点. 1.可切片 使用Python 的切片 ...

  9. Andrew Ng机器学习总结(自用)

    监督学习: 线性回归,逻辑回归,神经网络,支持向量机. 非监督学习: K-means,PCA,异常检测 应用: 推荐系统,大规模机器学习 机器学习系统优化: 偏差/方差,正则化,下一步要进行的工作:评 ...

  10. DBCC SHRINKFILE收缩日志/收缩数据库/收缩文件

    DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小. 语法 DBCC SHRINKFILE    ( { file_name | file_id }        { [ ,t ...