Java连载29-方法执行内存分析、方法重载
一、JVM包含三个内存区:栈内存、堆内存、方法区内存

二、注意点
(1)在MyEclipse中字体是红色的是一个类的名字,并且这个类除了我们自定义的类是JavaSE类库中自带的
(2)其实JavaSE类库中自带的类,例如:String.class\System.class,这些类的类名也是标识符
(3)只要是类名就一定是标识符
内存分析举例:
public class D29_{
public static void main(String[] args) {
int a = 10;
int b = 20;
int retValue = sunInt(a,b);
System.out.println(retValue);
}
public static int sumInt(int i ,int j) {
int result = i + j;
int num = 3;
int retValue = divide(result,num);
return retValue;
}
public static int divide(int x,int y) {
int z = x/y;
return z;
}
}
三、方法重载
1.以下代码不使用“方法重载机制“,不使用overload,分析存在的缺点
public class D29_{
public static void main(String[] args) {
int result1 = sumInt2(1,2);
System.out.println(result1);
double result2 = sumDouble(1.0,2.0);
System.out.println(result2);
long result3 = sumLong(1L,2L);
System.out.println(result3);
}
public static int sumInt2(int a, int b) {
return a+b;
}
public static double sumDouble(double a,double b) {
return a+b;
}
public static long sumLong(long a ,long b) {
return a+b;
}
}

缺点:(1)上面定义的方法功能虽然都不相同,但是功能都是类似的,就是求和,对于我们来说三种方法名字太多不好记,调用不方便,记忆难(2)不美观
需求机制:功能虽然不同,但是功能相似的时候,可以使用这些方法的时候,就想在使用同一种方法一样,后民安编写代码方便,也不需要记忆过多方法名,代码美观,这种机制就是方法重载(overload)
2.改写代码,具体解析下次更新再说。
public class D29_{
public static void main(String[] args) {
//调用方法的时候像在使用一个方法一样
//参数的类型不同,对应调用的方法不同
//此时区分方法不再依靠方法名依据的是参数的数据类型
System.out.println(sum(2,7));
System.out.println(sum(2.0,7.0));
System.out.println(sum(2L,7L));
}
public static int sum(int a,int b) {
return a+b;
}
public static double sum(double a ,double b) {
return a+b;
}
public static long sum(long a,long b) {
return a+b;
}
}

四、源码:
D29_method_overload_and_perform_memory_analysis.java
地址:
https://github.com/ruigege66/Java/blob/master/D29_method_overload_and_perform_memory_analysis.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载29-方法执行内存分析、方法重载的更多相关文章
- Java连载34-对象的内存分析、对象之间建立关系
一.内存分析 代码:引用可以是局部变量也可以是成员变量 public class Test1{ public static void main(String[] args){ User u = new ...
- Linux下java进程CPU占用率高分析方法
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- Linux下java进程CPU占用率高分析方法(一)
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- (转)Linux下java进程CPU占用率高-分析方法
Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source ...
- 乐字节Java构造器(构造方法|构造函数)、方法与内存分析
一. 构造器(构造方法|构造函数) 在创建对象时(new),必会调用一个特殊的方法,这个方法是初始化对象信息的为new服务的.这个方法称为“构造器” 使用 new + 构造方法创建一个新的对象. 构造 ...
- 1.4(java学习笔记) 面向对象内存分析
首先介绍几个概念 栈: 1.栈是方法执行的内存模型,每调用一个方法都会创建一个栈帧. 2.jvm为每个线程创建一个栈,存放方法相关信息,栈属于线程私有不共享. 3.栈由系统自动分配,是连续的内存空 ...
- Java创建对象时的简单内存分析
简单创建对象的内存分析 主程序: 1 public class Application { 2 public static void main(String[] args) { 3 Animal do ...
- 【编译原理】自底向上分析方法——LR文法分析方法的总结
LR(0).SLR(1).LR(1).LALR(1) de 若干方面的区别 目录 推导过程 分析能力 本质区别 文法对比 可以适当利用物理意义对二义性文法进行冲突处理 推导过程 LR(0)的基础上才有 ...
- Linux下java进程CPU占用率高-分析方法
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4% mem:14.6% ...
随机推荐
- 洛谷P3572题解
这道题实在是一道 毒瘤 题,太坑爹了.那个写 \(deque\) 的题解亲测只有80分,原因 不言而明 ,这道题居然 丧心病狂 到 卡STL . 好了,不吐槽了,进入正题 题目分析: 这是一道十分 简 ...
- ASP.NET CORE系列【七】分析NetCore启动原理
前言 有很久一段时间没更新了,因为工作和家里的问题导致没能坚持, 现在开始会继续每周更新,主要是记录自己所学和一起讨论解决过的问题,一起成长, 为.net圈子添砖加瓦! 介绍 到目前为止应该很多同学已 ...
- 使用sublime调试node.js
安装node相关 从node官网下载node的安装文件,我下的版本是node-v0.10.22-x64.exe,安装完node,node相关工具应该都加都环境变量path中了. 命令行下安装node- ...
- Java程序员备战“金九银十”必备的面试技巧(附携程Java岗面试题)
一.面试前的准备 1.1 如何准备一场面试1.1.1 如何获取大厂面试机会1.1.2 面试必知 ①. 准备介绍自己 ②. 关于着装 ③ .随身带上自己的成绩单和简历 ④. 如果笔试就提前刷一些笔试题 ...
- MySQL-EXPLAIN执行计划字段解释
做 MySQL 查询优化遇到明明建了索引查询仍然很慢,看这个 SQL 的执行计划,看它到底有没有用到索引,执行的具体情况.我们可以用 EXPLAIN 命令查看 SQL 的执行计划,SQL 优化的重要性 ...
- Kubernetes 服务发现
目录 什么是服务发现? 环境变量 DNS 服务 Linux 中 DNS 查询原理 Kubernetes 中 DNS 查询原理 调试 DNS 服务 存根域及上游 DNS 什么是服务发现? 服务发现就是一 ...
- Java虚拟机详解(五)------JVM参数(持续更新)
JVM参数有很多,其实我们直接使用默认的JVM参数,不去修改都可以满足大多数情况.但是如果你想在有限的硬件资源下,部署的系统达到最大的运行效率,那么进行相关的JVM参数设置是必不可少的.下面我们就来对 ...
- python使用zabbix的API接口
一.实验环境 python3.6.6 zabbix 3.0.9 二.实验目的 了解Zabbix的API接口格式 通过python实现登陆zabbix服务,获得登陆token 通过python检索zab ...
- Homebrew 安装 Docker Desktop for Mac
无意中发现Homebrew现在已经支持Docker Desktop for Mac了,因此特意把原来通过 https://docs.docker.com/docker-for-mac/install/ ...
- mybatis+spring+springMVC处理org.springframework.beans.factory.BeanDefinitionStoreException:java.lang.IllegalArgumentException异常
java.lang.IllegalArgumentException异常有三种情况 org.springframework.beans.factory.BeanDefinitionStoreExcep ...