Day01_11_Java方法
Java - 方法
什么是java中的方法?
- 方法就是一段代码片段,并且这段代码可以完成某个特定的功能、动作、是可以被重复的使用。
- 方法就是类的一个动作。
- 方法在C语言中也叫做函数 或 function。
- 方法定义在类体当中,在一个类中可以定义多个方法,方法的编写位置没有先后顺序,可以随意。
- 方法体当中不能再定义方法。
方法的语法结构
-[修饰符列表] 返回值类型 方法名 (形式参数列表){
方法体;
}
public int sumInt (int a,int b) {
int c=a+b;
return c;
}
## 调用方法
- 静态方法(static修饰) 类名.方法名(实参列表1,2);
- sum = sumInt (a , b);
- 当两个方法在同一个类体中时, “类体.” 可以省略不写。
- return 出现在返回值为void 的方法当中,主要是为了用来结束当前方法。
- 非静态方法必须new对象之后才能调用
## 实例
class MethodTest {
public static void main(String[] args){
// 调用静态方法
int a=3,b=10,c,d;
c=ScannerTest.minus(a,b);
//调用非静态方法
ScannerTest st=new ScannerTest();
d=st.sumInt(a,b);
//输出调用结果
System.out.println("静态方法调用结果:"+c);
System.out.println("非静态方法调用结果:"+d);
}
//静态方法
public static int minus(int a,int b){
int c;
c=a-b;
return c;
}
//非静态方法
public int sumInt(int a,int b){
int c;
c=a+b;
return c;
}
}
## 方法在执行过程中,在JVM中的内存是如何分配的?
1. 当方法只定义不调用,是不会执行的,并且在jvm中也不会给该方法分配运行所属的内存空间。
2. jvm在内存划分上分成这样三块主要的内存空间
* 方法区内存
* 堆内存
* 栈内存
## 关于栈的数据结构
* 栈:stack,是一种数据结构
* 数据结构反应的是数据的存储形态
* 栈帧永远指向栈顶元素,栈顶元素处于活跃状态,其他元素静止。
* 压栈/入栈/push, 弹栈/出栈/pop
* 压栈:给方法分配内存空间, 弹栈:释放该方法的内存空间。
* 栈数据结构存储数据的特点是,先进后出,后进先出。
## 方法代码片段存在哪里?方法执行的时候执行过程的内存在哪里分配?
* 方法代码片段属于class字节码文件的一部分,方法代码片段在类加载的时候,将其存储在方法区内存中,所以JVM中的三块主要内存空间,方法区内存最先有数据,存放了代码片段。
* 方法区内存中只有一份代码片段,但是可以被重复调用,但是每一次调用这个方法的时候,都需要重新分配独立的运行空间此空间需要在栈内存中分配,栈内存中分配方法运行所属的内存空间。
* 方法在调用的时候会给该方法分配独立的内存空间,在栈中分配,此时会发生压栈动作,方法执行结束之后,给该方法分配的内存空间全部释放,此时发生弹栈动作。
* 局部变量在方法体中声明,代码片段存储在方法区内存中,在栈中分配内存空间。
Day01_11_Java方法的更多相关文章
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 【.net 深呼吸】细说CodeDom(6):方法参数
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- ArcGIS 10.0紧凑型切片读写方法
首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...
- [BOT] 一种android中实现“圆角矩形”的方法
内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
随机推荐
- sun公司和apache使用ftpclient的区别
最近因为使用FTP实现上传下载,因为已经有前辈使用了,照着敲了一遍(绝对没有复制粘贴啊,发誓).但是今天突然发现FTPClient还不一样,仔细看了看,一个是sun.net.ftp.FtpClient ...
- 解决vue 绑定事件会覆盖默认参数的问题
解决vue 绑定事件会覆盖默认参数的问题 在使用一些ui框架的时候,某些组件的框架中的事件所规定的参数不能满足实际开发的需要,但是直接传入参数会把默认的参数覆盖掉 解决方法:将参数放入箭头函数中,传递 ...
- 500GJava/Hadoop/Spark/机器学习...视频教程免费分享 百度云持续更新
参加工作这么长时间了,工作中遇到了不少技能都是看视频教程学习的,相比较看书而言看视频确实比较容易理解.分享一下自己看过的和收集的视频教程. 资源包括: 大数据方面的Hadoop(云帆,小象学院,八斗学 ...
- shell脚本,mysql数据库的备份,并压缩
db_user="root"db_passwd="xxx"db_host="localhost" databases="xxx-p ...
- 为什么要从 Linux 迁移到 BSD 5
为什么要从 Linux 迁移到 BSD 5 干净的分离 在 FreeBSD 的设计方式下,不同的组件组合在一起的,处理配置和调优,以及多年来开发和改进的所有工具,使得使用 FreeBSD 是一件很特别 ...
- 运用arcgis将标签图片(栅格图)转换为shp矢量文件
最近在做图像分割校正,需要将ecognition分割好的shp文件做优化,但是如果直接对shp文件修改非常不友好,可以先对导出的tif标签图进行修改,然后将修改后的标签图转换为新的shp文件进行输出. ...
- Python字典与集合
一 字典创建.访问.添加.删除.修改.内建函数.内建方法 创建,列表不能作为键,因为键不能变?字典也不能作为键 dict1 = {} dict2 = {'name':'qq','sex':'male' ...
- CodeMonkey少儿编程第7章 函数
目标 了解函数是什么 掌握如何定义一个函数 函数是什么 本章我们学习一个新的概念----函数. 你可以简单的将函数看作为一个黑匣子,给它输入参数后,它将会按照一定的规则,执行相应的指令或输出数据. 让 ...
- Masterwoker模式
1 public class Task { 2 3 private int id; 4 private int price ; 5 public int getId() { 6 return id; ...
- JS 字符数组和数字数组转换
var newArr = ['1','2','3'].map(Number):// [1,2,3] var newArr =[1,2,3].map(String):// ['1','2','3']