方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

1、修饰符:暂时写成public static。修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

2、返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void,同时方法体中不能编写“return 值(与返回值类型相同);”这样的语句,但是可以编写“return;”这样的语句。只要带有return关键字的语句执行,return语句所在的方法结束。在有返回值的情况下,必须保证“return 返回值;”语句百分百执行(不能放在if、while这些之中;当然if...else...就可以百分百保证能执行,就可以)。

3、方法名:是方法的实际名称。方法名和参数表共同构成方法签名。要是合法的标识符;方法名最好见名知意;最好是动词;首字母小写,后面每个单词首字母大写。

4、参数类型:形参是局部变量。参数可以有多个,0~N个,多个形参之间用逗号隔开。参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。实参列表和形参列表必须满足:数量相同;类型对应相同,类型不同的时候要求能够进行相应的自动类型转换。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

5、方法体:方法体包含具体的语句,定义该方法的功能。

方法怎么调用?

方法只定义不调用时不会执行,只有在调用的时候才会执行。

类名.方法名(实参列表);

方法的调用不一定在main方法当中,可以在其他方法当中。只要程序可以执行到的位置,都可以去调用其它方法。

对于方法的修饰符列表当中有static关键字的:“类名.”可以省略不写,如A.b()可以写成b()。总结为:同类可省。(

抽象记忆:A班吴大鹏,B班吴大鹏)

可以调用其他类(不是本类当中的)中的方法,且不可以省略“类名.”。

方法在执行过程中,在JVM中的内存是如何分配的呢?内存是如何变化的?

1、方法只定义,不调用,是不会执行的,并且在JVM中也不会给该方法分配“运行所属”的空间。只在调用这个方法的时候,才会动态给这个方法分配所属的内存空间。

2、在JVM内存划分上有三块这样的主要内存空间(除此之外还有其它的内存空间):

方法区内存

堆内存

栈内存

3、关于“栈”数据结构:

栈:stack,是一种数据结构

数据结构反映的是数据的储存形态

数据结构式独立的学科,不属于任何编程语言的范畴,只不过在大多数编程语言当中要使用数据结构

常见的数据结构:数组、队列、链表、二叉树、哈希表/散列表...

方法代码片段存在哪里?方法执行的时候执行过程的内存在哪里分配?

1、方法代码片段属于.class字节码文件的一部分,字节码文件在类加载的时候,将其放到了方法区当中。所以JVM中的三块主要的内存空间中方法区内存最先有数据,存放了代码片段。

2、代码片段虽然在方法区内存中有一部分,但是可以被重复调用。每一次调用这个方法的时候,需要给该方法分配独立的活动场所,在栈内存中分配。【栈内存中分配方法运行的所属内存空间】(辅助记忆:一部小说由两个不同的导演在两个场景拍电影)

3、方法在调用瞬间,会给该方法分配内存空间,会在栈中发生压栈动作,方法执行结束后,给该方法分配的内存空间全部释放,此时发生弹栈动作。

压栈:给该方法分配内存

弹栈:释放该方法的内存空间

4、局部变量在“方法体”中声明,局部变量运行阶段内存在栈中分配。

方法的重载机制(overload)

1、就是创建另一个有相同名字但参数不同的方法,一个类的两个方法拥有相同的名字,但是有不同的参数列表。

2、方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。

3、重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。

4、什么时候考虑使用重载?

功能相似的时候,尽可能让方法名相同;反之,功能不相似的时候,尽可能让方法名不同。

注意:方法重载时不要发生重复现象

5、什么条件满足之后构成了方法重载?

在同一个类当中;

方法名相同;

参数列表不同:数量不同、顺序不同、类型不同。

6、方法重载和什么有关系?和什么没有关系?

方法重载和方法名+参数列表有关系

方法重载和返回值类型无关

方法重载和修饰符列表无关

方法的递归调用

1、什么是递归?

方法自身调用自身:

a(){ a(); }

2、递归是很耗费栈内存的,递归算法可以不用的时候尽量别用。

3、程序发生以下错误时【不是异常,是错误】,栈内存溢出错误。

java.lang.StackOverflowError

错误无法挽回,只有一个结果,就是JVM停止工作。

4、递归必须有结束条件,没有结束条件一定会发生栈内存溢出错误。

5、递归即使有了结束条件且正确,也有可能发生栈内存溢出错误,因为递归太深了。

注意:递归需慎用!但有些功能的实现必须依靠递归。

java做法_Java方法相关推荐

  1. java 覆盖_Java 方法覆盖

    方法覆盖 1.什么时候考虑使用覆盖? 子类继承父类之后,当继承过来的方法无法满足当前子类的业务需求时, 子类有权利对这个方法进行重新编写,有必要进行"方法的覆盖" 方法覆盖又叫做: ...

  2. java中collection方法_Java 8中的Collector toCollection()方法

    toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...

  3. webservice java客户端_Java Webservice客户端(最佳方法)

    进行此JAVA的最佳方法是什么? 我个人不会使用Axis 2,即使仅用于客户端开发.这就是为什么我远离它的原因: 我不喜欢它的体系结构,讨厌它的适得其反的部署模型. 我发现这是低质量的项目. 我不喜欢 ...

  4. java的flush方法_Java中的BufferedWriter flush()方法及示例

    Java中buffered writer类的flush()方法用于刷新缓冲的writer流中的字符.语法:公共void flush()指定者:此方法由Flushable接口的flush()方法指定.重 ...

  5. java程序设计_JAVA基础程序设计之方法

    1 基本概念 Java 方法是语句的集合,它们在一起执行一个功能. l 方法是解决一类问题的步骤的有序组合 l 方法包含于类或对象中 l 方法在程序中被创建,在其他地方被引用 1.1 方法的定义 一般 ...

  6. java实验楼使用说明_Java 方法

    Java 方法 一.实验介绍 1.1 实验内容 本实验将学习Java方法的定义与语法规则.方法重载以及参数与返回值的相关内容. 1.2 实验知识点 方法的定义 方法重载 参数与返回值 1.3 实验环境 ...

  7. java中重载 参数顺序_Java方法中的参数太多,第4部分:重载

    java中重载 参数顺序 期望将过多的参数传递给Java方法的问题之一是,该方法的客户端很难确定它们是否以适当的顺序传递了适当的值. 在以前的文章中,我描述了如何使用自定义类型 , 参数对象和构建器来 ...

  8. java 可变参数方法_Java方法中的参数太多,第7部分:可变状态

    java 可变参数方法 在我的系列文章的第七篇中,有关解决Java方法或构造函数中过多参数的问题 ,我着眼于使用状态来减少传递参数的需要. 我等到本系列的第七篇文章来解决这个问题的原因之一是,它是我最 ...

  9. java中reject方法作用_Java BindingResult.rejectValue方法代碼示例

    本文整理匯總了Java中org.springframework.validation.BindingResult.rejectValue方法的典型用法代碼示例.如果您正苦於以下問題:Java Bind ...

最新文章

  1. C++中一个class类对象占用多少内字节(7个例子,很清楚)
  2. Codeforces Round #546 (Div. 2) B. Nastya Is Playing Computer Games
  3. 使用python实现大文件分割与合并
  4. 转:Java异常分类以及相应处理机制
  5. TextBox控件中只输入整数的几种方法
  6. 【图表】java 24年发展历史及长期支持jdk版本(up to 2020.04)
  7. Qt中的角度和正方向描述清单
  8. 滴滴不倒闭,世界和中国的奇迹!
  9. android 权重的使用
  10. jetbrains-docker插件文档
  11. On The Way—Step 1 :python入门之Python的历程
  12. Redis面试必看40题
  13. paip.java-asp-php-.net互相调用方法大总结
  14. 5G版聚合路由器加速释放5G潜能
  15. ping服务器时显示的ttl是什么意思,运行PING本机IP的时候显示TTL=64是什么意思啊?这个数值? 爱问知识人...
  16. 微信小程序-001-抽签功能-002-新建抽签
  17. laser_filters源码整体分析
  18. 28岁华为员工工资表曝光,牛逼的人注定会牛逼​!
  19. 服务器监控之ping监控
  20. java相关资料下载

热门文章

  1. Linux之Keepalived实现服务器集群高可用
  2. Ubuntu sudo 出现unable to resolve host 解决方法
  3. Python websocket
  4. Hibernate 框架基本知识
  5. linux中断申请之request_threaded_irq 【转】
  6. extern 声明函数和定义函数
  7. 创建精简的SharePoint页面
  8. 中山大学Delphi视频教程 共51课
  9. 可关闭与最小化的右下角浮动广告代码
  10. 文件系统的简单的操作