Java内存划分

来源:互联网 发布:java 前端分页代码 编辑:程序博客网 时间:2024/06/16 02:48

Java把内存划分为两种:栈内存,和堆内存。

栈内存:

在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配。

堆内存:

用来存放由new创建的对象和数组以及对象的实例变量。

package storage;public class StorageTest {public static void swap(int a,int b){int t = a;a = b;b = t;System.out.println("swap中      a:"+a+",b:"+b);}public static class DataSwap{int a;int b;public String toString(){return "a:"+a+",b:"+b;}}private static void swap(DataSwap data) {int t = data.a;data.a = data.b;data.b = t;}// 数组逆置private static void inverse(String[] array) {for(int i=0;i<array.length/2;i++){String temp = array[i];array[i] = array[array.length-i-1];array[array.length-i-1] = temp;}}public static void main(String[] args) {int a = 6,b = 9;swap(a,b);// 基本类型变量和对象的引用变量在函数中使用栈内存分配System.out.println("main中      a:"+a+",b:"+b);DataSwap data =  new DataSwap();data.a = 4;data.b = 5;//swap(data);  //交换成功// 堆内存用来存放new创建的对象和数组以及对象的实例变量 // System.out.println(data.toString());DataSwap p = data;swap(p);// 实际上操作的也是 dataSystem.out.println("p中:"+p.toString());System.out.println("data中:"+data.toString());String array[]={"a","b","c","d"};// 逆置  array 数组inverse(array);System.out.println(array[0]);}}
输出:

data和p对象是引用变量,实际操作的是堆内存中的实例数据。

原创粉丝点击