文章详情页
java - swap函数
浏览:183日期:2023-12-04 13:25:47
问题描述
在下面代码中,并没有达到交换两个对象的效果输出结果是3:4按理来说,java中不都是引用吗,应该可以直接交换对象啊!请解释一下我的错误,并给出解决办法。我希望输出结果为4:3class Int{
public int x;
}
public class Hello {
void swap(Int a,Int b){ Int t=a; a=b; b=t;}public static void main(String[] args) {Hello hello=new Hello(); Int a=new Int(); Int b=new Int(); a.x=3; b.x=4; hello.swap(a,b); System.out.println(a.x+':'+b.x);}
}
问题解答
回答1:在Java世界中函数或者叫方法的入参都是通过值拷贝的方式进行传递:
原始类型(char,int,double等)都是通过直接拷贝变量值传参;对象类型都是通过引用拷贝(跟C++中引用不同)传参,通过该引用能够更改其指向的对象内部值,但是更改该引用值,仅对函数内部可见,函数外部的实参依然没有改变;
正常来说,java不能实现。并且int对象内部private final int value;是final的
标签:
java
相关文章:
1. python - Pycharm调试代码进行列表遍历时,如何直接赋值指定元素2. 安装mysql,完成时提示的是用户名root,在终端查看版本时显示的不是root,请问这怎么解决3. 为什么HTML5规范中会包含一些和html无关的东西?如本地存储等。4. javascript - sublime已经安装了babel插件和sublimelinter-jshint为什么还是显示es6语法错误?5. python - pig latin问题 总是出现list/string index out of range6. mysql - 5w条数据的批量更新的sql7. css3 - canvas在IOS8中不兼容。画不出来。8. javascript - nginx 反向代理 js跨域问题?9. css3 - img垂直水平居中问题10. 闯关的第二个问题的答案是错的吧?
排行榜

网公网安备