万花筒照哪里好看:JAVA的问题

来源:百度文库 编辑:高考问答 时间:2024/04/29 00:06:22
package org.com;
import java.awt.*;
public class Test {
public static void modifyPoint(Point pt, Integer j) {
pt.setLocation(5,5);
j= new Integer(25);
System.out.println(j);
}
public static void main (String args[]) {
Point p = new Point(0,0);
Integer i = new Integer(10);
System.out.println(i);
System.out.println("Before modifyPoint" + p + i);
modifyPoint(p,i);
System.out.print("After modify" + p +i);
}
}
我输出的结果是:
10
Before modifyPointjava.awt.Point[x=0,y=0]10
25
After modifyjava.awt.Point[x=5,y=5]10
我想不通的是为什么i的值没有改变。???
我的想法是,Integer j = new Integer(10);
和Point pt = new Point (5,5);是一样的。
那么。请高手们告诉我;
Integer j = new Integer(10);
和int j = 10;
这样两种申明方法有什么样的区别呢?
再问下。是不是Integer 这样的类和,我们其他的那些类。还是有一定区别的呀。
希望详细点。还有,请给举个改变的例子。
小弟在此谢谢各位。

当然不会变了,你先把j的指针指到i的上面,但是你没有使用,而是重新new了一个Integer对象,实际上你没有对i做任何修改啊

你的j是一个新的对象;
(...,int j){
j=15;
}

静态类也可以写成 int i = 10;
这个基础数据类型, int , float , double , String 一般是不用对象来创建的;

在JAVA中 Integer, String, Double等对象类型是不变类型,
其代表的值在建立对象时就已确定,以后无法修改。

解释这个问题的关键在于:
Java机制中是传值调用,而非传引用调用。

我想问一下你为什么觉得这个i的值应该改变?