Java中的new关键字和引用传参

本文详细解析了Java中如何使用new关键字创建对象,并深入探讨了数组和类对象的引用传参过程,通过实例展示了内存变化,帮助理解Java对象的生命周期与垃圾回收机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看看Java中如何使用new关键字创建一个对象的。

[java] view plain copy
public class Student {  
    public String name;  
    public int id;  
    public static void main(String[] args) {  
        Student s = new Student();//看这句话  
    }  
}  
语句Student s = new Student();可以拆成两句话:

语句1:Student s;在 栈 中创建一块空间,该空间的名字是s,变量s类型是Student指针类型看,值为空(不是null)。

语句2:s = new Student();首先在 堆 中创建一块空间,该空间存储的是Student类对象的成员变量;然后用s指向这块内存。

这两句话对应的内存变化如下图:

所以s中存储的s所指向的对象在堆内存中地址。

理解了new关键字创建对象的过程,再来看看引用传参。Java中的引用一共有三种,数组、类对象、接口,下面着重看看数组和类对象的传参过程。


[java] view plain copy
public class Test {  
    public static void main(String args[]){  
        int a[] = new int[3];  
        a[0] = 1;  
        a[1] = 2;  
        a[2] = 3;  
        int b[] = new int[3];  
        b[0] = 4;  
        b[1] = 5;  
        b[2] = 6;  
        b = a;  
        b[0] = 7;  
        b[1] = 8;  
        b[2] = 9;  
        System.out.println(a[0]+" "+a[1]+" "+a[2]);  
    }  
}  
语句 b =a; 之前的内存如图所示:


b = a执行之后,a的值(即第一个数组的首地址)被赋给b,则b也指向了第一个数组,内存如下图:


[java] view plain copy
b[0] = 7;  
b[1] = 8;  
b[2] = 9;  
这三条语句修改了第一个数组中的值,内存如下:


输出结果如下:

下面来看类对象的情况(跟数组是类似的)

例2:

[java] view plain copy
public class Student {  
    public String name;  
    public int id;  
    public Student(String name,int id){  
        this.name = name;  
        this.id = id;  
    }  
    public static void main(String[] args) {  
        Student s1 = new Student("Tom",18);  
        Student s2 = new Student("Sally",19);  
        s2 = s1;  
        s2.name = "Mark";  
        s2.id = 20;  
        System.out.println(s1.name+" "+s2.id);  
    }  
}  
语句s2 = s1;执行之前的内存状态如下图:


s2 = s1执行之后,内存状态改变为:


[java] view plain copy
s2.name = "Mark";  
s2.id = 20;  
这两句话,修改了s1指向的对象的值,如下图:


输出结果如下:

最后看一下,s2原来指向的那块内存,现在没有引用指向它了,所以这块内存以及里面存的值都不能用了,Java存在"垃圾回收"机制,会定时清理没有引用指向的内存,所以这块内存会被回收,这与C++不同,在C++中,需要手动delete删除一个用new关键字创建的对象。
 ———————————————— 
版权声明:本文为优快云博主「tensory.online」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/ten_sory/article/details/52960964

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值