被问到有关Java内存管理的知识,所以要搜集整理一下了。开始之前,我们要明白一点,我们所使用的变量就是一块一块的内存空间!!
方法名称 | 参数 | 作用 | 返回值 |
getRuntime | 无 | 获取 Runtime 对象 | Runtime 对象 |
totalMemory | 无 | 获取 JVM 分配给程序的内存数量 | long:内存数量 |
freeMemory | 无 | 获取 当前可用的内存数量 | long:内存数量 |
maxMemory | 无 | 获取 JVM 可以申请到的最大内存数量 | long:内存数量 |
public class Student { String stuId; String stuName; int stuAge; } public class TestStudent { public static void main(String[] args) { Student s = new Student(); String name = new String("云鹤"); int a = 10; char b = 'm'; s.stuId = "6363"; s.stuName = "刘德华"; s.stuAge = 25; } }
(1)类当然是存放在方法区里面的。
public class TestArray { void change(int[] arr) { for(int i=0;i<arr.length;i++) if(i%2==0) arr[i]=1000; System.out.println("方法体内修改值后:" ); for(int i=0;i<arr.length;i++) System.out.println(arr[i]); } public static void main(String[] args) { int[] a = {1,2,3,4}; TestArray testString = new TestArray(); System.out.println("方法调用前:"); for(int i=0;i<a.length;i++) System.out.println(a[i]); testString.change(a); System.out.println("方法调用后:"); for(int i=0;i<a.length;i++) System.out.println(a[i]); } }
输出结果如下:
方法调用前: 1 2 3 4 方法体内修改值后: 1000 2 1000 4 方法调用后: 1000 2 1000 4
数组实际上也是引用类型,在调用函数的过程中改变了其值。
(2)特例:String
public class TestString { void change(String str) { str = "吴奇隆"; System.out.println("方法体内修改值后:" + str); } public static void main(String[] args) { String name = "歌星"; TestString testString = new TestString(); System.out.println("方法调用前:" + name); testString.change(name); System.out.println("方法调用后:" + name); }
结果:
方法调用前:歌星
方法体内修改值后:吴奇隆
方法调用后:歌星
分析:
public class TestChange { void change(Student stu1, Student stu2) { stu1.stuAge ++; stu2.stuAge ++; Student stu = stu1; stu1 = stu2; stu2 = stu; } public static void main(String[] args) { Student z = new Student(); z.stuName = "张信哲"; z.stuAge = 40; Student r = new Student(); r.stuName = "任贤齐"; r.stuAge = 30; System.out.println("交换前z:\t"+z.stuName+"\t"+z.stuAge); System.out.println("交换前r:\t"+r.stuName+"\t"+r.stuAge); TestChange testChange = new TestChange(); testChange.change(z, r); System.out.println("交换后z:\t"+z.stuName+"\t"+z.stuAge); System.out.println("交换后r:\t"+r.stuName+"\t"+r.stuAge); } }
运行结果:
安徽隆兴禽业(www.58lxqy.com)全年大量供应状元红鸡苗(红玉鸡苗)、固始鸡土鸡苗、淮南王土鸡苗,散养鸡苗,大红公鸡苗及各类土鸡种蛋。批发订购:13075005200 QQ:1170693418 地址:阜阳市太和县倪邱镇孙庙105国道东侧。
安徽鸡苗,阜阳鸡苗,安徽土鸡苗,阜阳土鸡苗,鸡苗孵化,河南鸡苗,山东鸡苗,河南土鸡苗,山东土鸡苗,固始鸡,淮南王,纯红肉杂,纯红公鸡。