相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

java methods parameter-passing pass-by-reference pass-by-value

6270
推荐指数
80
解决办法
189万
查看次数

java在调用方法中不更改布尔值

我有一个场景,我想设置一个Boolean对象,然后booleanValue()在方法中的构造函数中使用它.但是,设置对象的范围是不同的.它是在方法调用的方法中设置的,其中首先实例化对象.根据我对Java如何通过原始和对象参数和在线阅读的几个职位(如理解这个),当一个对象被传递给方法,它的属性是通过引用传递和调用方法的任何变化应在体现调用方法完成执行后调用方法.但是我注意到,当被调用的方法完成时,其中的任何更改都不会在调用方法中生效.

这是我的场景的快照:

private CustomObject1 callingMethod(){
    Boolean b = Boolean.TRUE;
    List<CustomObject2> list = this.calledMethod(b);
    //Create CustomObject1 with b.booleanValue() as one of the arguments in the constructor
}

private List<CustomObject2> calledMethod(Boolean b){
    ...
    ...
    if(condition){
        b = Boolean.FALSE;
    }
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

到代码到达时,CustomObject创建b.booleanValue()始终为true,即使if语句callingMethod()为true且Boolean在该方法中设置为false.

我不愿意将调用方法的返回类型更改为,boolean因为它需要更改可能调用此方法的其他代码位.目前他们只需要签名更改但返回类型更改需要更多工作,因为需要维护逻辑(即填充列表然后使用它执行某些操作)

java pass-by-reference pass-by-value

8
推荐指数
2
解决办法
2万
查看次数