gpt4 book ai didi

java - 函数没有改变值 - JAVA 6 SE

转载 作者:行者123 更新时间:2023-11-29 09:46:06 25 4
gpt4 key购买 nike

我不明白为什么重载函数“increase”不会改变 Integer 但会改变 Point。“Integer”类的目的是包装 int,使其成为一个引用类型。

import java.awt.Point;

public class test2 {
public static void main(String[] args) {
///1
Integer i = new Integer(0);
increase(i);
System.out.println(i);
///2
Point p = new Point(0,0);
increase(p);
System.out.println(p);

}

public static void increase(Integer i){
i = 1;
}

public static void increase(Point p){
p.setLocation(1, 1);
}
}

输出是:

0
java.awt.Point[x=1,y=1]

此外,它们是在 Java 中通过引用将变量传递给函数的简单方法吗?

最佳答案

Integer 类是一个不可变类,这意味着它的内容在创建后不能更改。

此外,Java 是按值传递的,因此变量 i 是按值传递的,它在函数内部发生变化的事实对调用者没有影响。

阅读此处:http://en.wikipedia.org/wiki/Immutable_object有关不可变对象(immutable对象)的更多信息。

关于java - 函数没有改变值 - JAVA 6 SE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5057490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com