引用 内存 栈内存 堆内存 基本数据类型 引用数据类型(包装类) 拆箱 装箱

一  引用类型

 

二  内存

内存里面有栈内存 , 和 堆内存

栈内存是十分整齐的,一条一条的,

堆内存是相对比较杂乱的,哪里够放哪里

 

 

 

 

 

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         

 

posted @ 2022-01-07 16:21  Nickeyhu  阅读(43)  评论(0编辑  收藏  举报