JVM内存划分以及值传递和引用传递的区别
Day05_SHJavaTraing_4-8-2017
一.JVM对自己的内存划分为5个区域
1.方法栈:所有的方法运行的时候进入内存
2.堆:存储的是容器和对象
3.方法和数据共享: 运行时期class文件进入的地方
4.本地方法栈: JVM调用了系统中的功能
5.寄存器:内存和CUP之间
二.值传递和引用传递的区别(易错内容)
1.方法参数是基本数据类型
方法参数是基本数据类型时,传递的是值。
//演示方法参数是基本数据类型的传递
class Demo{
public static void main(String[] args){
int a = 3 ;
int b = 5;
demo( a , b );
System.out.println("a="+a);//a = 3
System.out.println("b="+b);//b = 5
}
public static void demo( int a , int b ){
a = a + a;
b = b + b;
}
}
打印结果:a = 3 , b = 5

2.方法参数是引用数据类型
方法参数是引用数据类型时,传递的是内存地址值。
//演示方法参数是引用数据类型的传递
class Demo1{
public static void main(String[] args){
int[] arr = {3,6};
demo( arr );
System.out.println("arr[0]="+arr[0]);//arr[0] = 6
System.out.println("arr[1]="+arr[1]);//arr[1] = 12
} public static void demo( int[] arr ){
arr[0] = arr[0] + arr[0];
arr[1] = arr[1] + arr[1];
}
}
打印结果:arr[0] = 6 , arr[1] = 12

JVM内存划分以及值传递和引用传递的区别的更多相关文章
- python中变量在内存中的存储与地址关系解析、浅度/深度copy、值传递、引用传递
---恢复内容开始--- 1.变量.地址 变量的实现方式有:引用语义.值语义 python语言中变量的实现方式就是引用语义,在变量里面保存的是值(对象)的引用(值所在处内存空间的地址).采用这种方式, ...
- 堆栈详解 + 彻底理解Java的值传递和引用传递
本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨 ...
- Java的值传递和引用传递的说法
学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨论的话题又是充满争议:有的论坛帖子说Java ...
- JAVA不可变类与可变类、值传递与引用传递深入理解
一个由try...catch...finally引出的思考,在前面已经初步了解过不可变与可变.值传递与引用传递,在这里再次深入理解. 1.先看下面一个try..catch..finally的例子: P ...
- java中参数传递--值传递,引用传递
java中的参数传递——值传递.引用传递 参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递. 在 Java 应用程序中永远不会传递对象,而只传递对象引用. ...
- 第002弹:Java 中的值传递和引用传递
在 Java 的代码开发过程中,为了尽可能提高方法的复用性,明确方法的作用,同时防止一个方法内部过于臃肿的问题,往往会创建许多方法,那么不可避免地会涉及到参数传递的问题.通常来说,我们将 Java 中 ...
- java 传参方式--值传递还是引用传递
java 传参方式--值传递还是引用传递 参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递.写它是为了揭穿普遍存在的一种神话,即认为 Java 应用程序按引用 ...
- Java中到底是值传递还是引用传递?
Java中到底是值传递还是引用传递? 我们先回顾一下基本概念 实参和形参 参数在编程语言中是执行程序需要的数据,这个数据一般保存在变量中.在Java中定义一个方法时,可以定义一些参数, 举个例子: p ...
- 一个随意list引发的惨案(java到底是值传递还是引用 传递?)
前两天写了一个递归,因为太年轻,把一个递归方法需要用到的list定义该递归方法外了,结果开始断点测试的时候有点小问题 ,然后上线之后因为数据量太多导致了一个java.util.ConcurrentMo ...
随机推荐
- eas之kingdeeUtils
import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayL ...
- 29.es路由原理
主要知识点 1.document路由到shard的理解及原理 2.路由算法:shard = hash(routing) % number_of_primary_shards 3.routing值(_i ...
- Oracle数据库的性能调整
oracle是一个高性能数据库软件.用户可以通过参数的调整,达到性能的优化.性能优化主要分为两部分:一是数据库管理员通过对系统参数的调整达到优化的目的,二是开发人员通过对应用程序的优化达到调整的目的. ...
- jQuery源码分析 开篇(一)
解读一个开源框架,最终目的当然就是学习程序的设计思想和实现技巧. JavaScript宗旨就是Write Less, Do More,简洁的API,优雅的链式,强大的查询与便捷的操作都是我们喜欢他的原 ...
- UVALive Archive - 6196 - Party Games
题目: You've been invited to a party. The host wants to divide the guests into 2 teams for party games ...
- js 跨浏览器获取事件信息模块
var EventUtil = { addHandler: function(element, type, handler) { if (element.addEventListener) { ele ...
- HDOJ 题目5097 Page Rank(矩阵运算,模拟)
Page Rank Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Others) Tota ...
- Selenium webdriver-UI Element定位
转:http://blog.csdn.net/jillliang/article/details/8206402 1.创建Fixfox web driver实例 WebDriver driver = ...
- java,wavToMP3格式转换
这里须要用到一个jar包:jave-1.0.1.jar,下载地址的话自己百度吧. 废话不多说直接贴代码: import it.sauronsoftware.jave.AudioAttributes; ...
- Linux下安装JRE和Eclipse IDE for C/C++ Developers
Linux32位,下载eclipse-cpp-luna-R-linux-gtk.tar.gz和jre-8u11-linux-i586.rpm 放到家文件夹中. http://www.eclipse. ...