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)啊?哪位高手解释以下咯??
谢谢啊!!!
{
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)啊?哪位高手解释以下咯??
谢谢啊!!!
在Java的封装类中
Integer类中存在intValue()这个方法
所以你没有写,它也不会报错~
^_^,谢谢各位的帮助~~~
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());
}
}
为什么这个还是没有返回值~~高人指点~~
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);
}
}发错了~~是这个~~
这个也没有返回值~~
因为主方法只是把变量i的一个副本传给了add()方法
而在主方法里的i并没有变 你可以在add()方法里加个打印i的语句 看看
旧知道是杂回事了
综上所述:
问:没定义这个方法啊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:
~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~老板来了,等一下~~
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);
}
}完工~~~累~~差点被老板抓~~~
i在MAIN域的值是没有变的
只是在你的方法域里面变了的i
所以打印0
你在MAIN中定义变量接收方法域的返回值,回直接打印方法,就得了