功能没有改变价值 - JAVA 6 SE

Oz *_*aim 1 java

我无法理解为什么重载函数'增加'不会改变整数而是改变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);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

0
java.awt.Point[x=1,y=1]
Run Code Online (Sandbox Code Playgroud)

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

Cyb*_*rax 6

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

此外,Java是按值i传递,因此变量按值传递,并且它在函数内部更改的事实对调用者没有影响.

请阅读此处:http://en.wikipedia.org/wiki/Immutable_object,了解有关不可变对象的更多信息.