public class Test
{
public static void add3(Integer i)
{
int val=i.intValue();
val+=3;
i=new Integer(val);
}
public static void main(String []args)
{
Integer i = new Integer(0);
add3(i);
System.out.println(i.intValue());
}
}没定义这个方法啊intValue(),编译为什么不报错还print(0)啊?哪位高手解释以下咯??
谢谢啊!!!

解决方案 »

  1.   

    intValue()是Integer类的方法,有什么不对?
      

  2.   

    呵呵,楼主肯定是新手吧
    在Java的封装类中
    Integer类中存在intValue()这个方法
    所以你没有写,它也不会报错~
      

  3.   

    呵呵,我是刚学JAVA的,所以提出的问题比较幼稚~~~让各位见笑了
    ^_^,谢谢各位的帮助~~~
      

  4.   

    汗一个·····看API咯·····
      

  5.   

    到现在,刚刚研究了一个多小时,害我没工作,到现在也没弄明白为什么返回是0
    public class Test
    {
    public static void add3(Integer i)
    {
    int val=i.intValue();
    val+=3;
    i=new Integer(val);
    }
    public static void main(String []args)
    {
    Integer i = new Integer(0);
    add3(i);
    System.out.println(i.intValue());
    }
    }
    为什么这个还是没有返回值~~高人指点~~
      

  6.   

    class Tt{public int tt(int k){
    k=k+10;
    return k;
    }
    }
    public class Test3{
    public static void main(String args[]){
    Tt t=new Tt();
    int k=0;

    t.tt(k);
    System.out.println(k);
    }
    }发错了~~是这个~~
    这个也没有返回值~~
      

  7.   

    有返回值 ····不信你试试这样:int m=t.tt(k); System.out.println(m);结果是10调用带参数的方法。传递的只是数据的拷贝,也就是说调用tt(k);方法时,改变的只是K的一个拷贝的值,而实参K并没有发生改变····
      

  8.   

    在eclipse下,打一点就出来方法了
      

  9.   

    打印结果肯定是0么
    因为主方法只是把变量i的一个副本传给了add()方法
    而在主方法里的i并没有变 你可以在add()方法里加个打印i的语句 看看
    旧知道是杂回事了
      

  10.   

    OK,今早起床~~想到还有这个题目,帮你结贴吧:
    综上所述:
    问:没定义这个方法啊intValue(),编译为什么不报错还print(0)啊?哪位高手解释以下咯??
    答:1。intValue()方法是lang包中Integer类的一个方法,在J中,lang包中的类和方法是可以直接调用的(也就是一个默认值吧),就像你没有定义Integer类一样,可以直接Integer i=new Integer(0);新建一个对象一样。2。为什么不报错,还print(0)?他没错,报什么错呀,楼上有人说了,当你调用参数的方法时,你只是把参数传递出去,并没有返回值。如果需要返回值,我这里给了你二种方案,你可参看一下:
    public class Test   //定义一个主类Test
    {
    static Integer add3(Integer i)  //新建一个有返回值类型为Integer的方法(函数)
    {
    int val=i.intValue(); //定义一个方法成员,他的值为将Integer类型的i转化后的int值
    val+=3;   //不用讲了
    i=new Integer(val);  //将int数据类型的val转变成Integer,也就是返回类型
    return i;//返回i值
    }public static void main(String []args)  //主类方法入口
    {
    Integer i = new Integer(0);  //定义一个Integer类弄的对象
    Integer m=add3(i);  //新建一个Integer对象,主要用来获得return后的m地址
    System.out.println("i.intValue()="+m);  //~~
    }
    }优化后的程序:
    public class Test
    {
    static int add3(Integer i)
    {
    int val=i.intValue();
    val+=3;
    return val;
    }
    public static void main(String []args)
    {
    Integer i = new Integer(0);
    int k=add3(i);
    System.out.println("i.intValue()="+k);
    }
    }方案2:
    ~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~老板来了,等一下~~
      

  11.   

    方法2:
    public class Test
    {
    Integer i=new Integer(10);
    public static void add(Test m)
    {
    int val=m.i.intValue();
    val+=3;
    m.i=new Integer(val);
    System.out.println(m.i);
    }
    public static void main(String []args)
    {
    Test m=new Test();
    System.out.println(m.i);
    add(m);
    System.out.println(m.i);
    }
    }完工~~~累~~差点被老板抓~~~
      

  12.   

    ....楼主的之所以打印0是因为你定义变量域的问题
    i在MAIN域的值是没有变的
    只是在你的方法域里面变了的i
    所以打印0
    你在MAIN中定义变量接收方法域的返回值,回直接打印方法,就得了