java方法的对象有问题,java 方法返回对象的问题

本文探讨了Java和C++在方法返回对象时的行为差异。在C++中,返回对象会构造一个新的副本,而在Java中,返回的是原对象的引用。通过一个测试示例,展示了Java中只有一个对象被创建,即`CreateTest`、`setStr`和`destroyTest`的输出,证实了这一行为。这突显了Java中对象引用的特点和内存管理的差异。
摘要由CSDN通过智能技术生成

我记得C++里方法返回对象时,会重新构造一个对象,原以为java也是如此,实际测试了下,发现不是,java返回的是对原对象的引用,测试如下:

新建测试类:

class Test {

String str;

public Test() {

System.out.println("Create Test");

}

public Test(String str) {

this.str = str;

System.out.println("Create Test: " + this.str);

}

public void setStr(String str) {

this.str = str;

System.out.println("setStr: " + this.str);

}

protected void finalize() {

if (null != str) {

System.out.println("destroy Test:" + this.str);

}

else {

System.out.println("destroy Test");

}

}

}

新建测试方法:

private Test createTest() {

Test test = new Test("test1");

test.setStr("test2");

return test;

}

在main中调用测试方法:

Test test = createTest();

test.setStr("test3");

console打印结果:

Create Test: test1

setStr: test2

setStr: test3

destroy Test:test3 说明前后一共只创建了一个对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值