引用 内存 栈内存 堆内存 基本数据类型 引用数据类型(包装类) 拆箱 装箱
一 引用类型
二 内存
内存里面有栈内存 , 和 堆内存
栈内存是十分整齐的,一条一条的,
堆内存是相对比较杂乱的,哪里够放哪里
package day02; public class MyTest { public static void main(String[] args) { Person person = new Person(); person.name = "张三"; //test7结果是张三 test7(person); //test6结果是李四 //test6(person); System.out.print(person.name); } public static void test7(Person p3) { //这里的p3是一个新的p3, 改变了原本的p3指向的地址 , //然后下一行给p3赋值为李四,是给新的p3赋值为李四,不改变原来的p3, //故输出结果应该还是张三 p3 = new Person(); p3.name = "李四"; } public static void test6(Person p3) { //这里的p3为原本的p3 //输出结果为李四 p3.name = "李四"; } }
三 基本数据类型 引用数据类型(包装类)
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double
boolean Boolean
四 拆箱 装箱
结果是true,因为先回去缓存里面找,然后缓存里面的大小是-128~127,没超过缓存的大小,两个Integer指向的是同一个内存区域,故返回是true
结果是false,超过了缓存空间
1 //装箱和拆箱 2 Object object = 12;//12是int类型 Object是引用类 3 //int不是面向对象 4 //将本数据类型的值,直接转为封装类型,叫装箱 5 6 //将封装类型直接转为基本类型,叫做拆箱 7 Integer i = new Integer(23); 8 int a = 12 + i; 9 System.out.println(a); 10 11 //将字符串转为数字 12 System.out.println(Integer.parseInt("12") + 12); 13 14 //缓存 15 int a1 = 212; 16 int a2 = 212; 17 System.out.println(a1 == a2);//true 18 19 Integer i1 = 12; 20 Integer i2 = 12; 21 System.out.println(i1 == i2);//true 22 23 Integer j1 = 212; 24 Integer j2 = 212; 25 System.out.println(j1 == j2);//false 26 //会触发拆箱 27 System.out.println(a1 == j1);//true 28 29 //虽然有缓存,但new了就是新的 30 Integer i4 = 12; 31 Integer i5 = new Integer(12); 32 System.out.println(i4 == i5); 33 34 Character c1 = 'a'; 35 Character c2 = 'a'; 36 System.out.println(c1 == c2);//true 37 38 Character c3 = (char)128; 39 Character c4 = (char)128; 40 System.out.println(c3 == c4);//false 41