所谓值类型的变量就是内容(值)直接保存在stack(栈区)或静态区的变量.例如 int i = 10;这个i就是值类型变量. 这个变量的内容(值)存放在内存的栈区.如上图, 红色部分就是值类型变量i所占的内存, 共4个字节.在java中, 一共有八种值类型. 它们分别是byte, short, int, long, float, double, char, boolean可以见这些值类型变量的值要么是数字, 要么就是字符(char)也就是说, 这8中类型之类的变量都是对象类型.
1.2 对象类型变量
所谓对象类型变量的内容存(成员的值)放在heap(堆区)(String对象除外), 然后在stack区或static区保存这个对象内容heap区内存的地址.假如Student是1个类, 它有两个成员id 和 age.那么实例化1个对象Student s = new Student(1,20);上面的s就是1个对象类型的变量.它的数据是这样存放在内存中的.1.它成员Id 和 name 的值会存放在heap区.2.变量s本身会存放1个地址, 这个地址就是它的成员在heap区内存的头部地址. 如下图:紫色的部分才是对象型变量s的真正内容,而变量s本身存放的是其真正内容在heap区内存的地址.
这个也很简单, 就是基于1个对象类型返回1个值类型就是拆箱了.例如:integer io = new Integer(123); int i = io.intValue()" System.out.printf("%d
", i);上面代码中我们用值类型变量i 获得 Integer对象io所存放的值, 这个过程就是拆箱如果我们利用容器的get()方法来返回1个值类型.例如:int i = arr.get(1);我们知道容器里存放的都是对象, 但是java会先将其拆箱再返回给1个值类型变量,这个过程那个就是自动拆箱了.本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138186.htm