当前位置: 技术问答>java相关
问题求解:scjp题目------请回答后做出合理的解释/thanks
来源: 互联网 发布时间:2015-01-22
本文导语: public class Inc{ public static void main(String argv[]){ Inc inc = new Inc(); int i =0; inc.fermin(i); i = i++; ...
public class Inc{
public static void main(String argv[]){
Inc inc = new Inc();
int i =0;
inc.fermin(i);
i = i++;
System.out.println(i);
}
void fermin(int i){
i++;
}
}
1) Compile time error
2) Output of 2
3) Output of 1
4) Output of 0
public static void main(String argv[]){
Inc inc = new Inc();
int i =0;
inc.fermin(i);
i = i++;
System.out.println(i);
}
void fermin(int i){
i++;
}
}
1) Compile time error
2) Output of 2
3) Output of 1
4) Output of 0
|
显而易见:输出为0
inc.fermin(i);//i的值不会变,因为是传值调用,i=0
i = i++; //i先赋值先自增,然后从堆栈中返回0赋给i,so i=0
inc.fermin(i);//i的值不会变,因为是传值调用,i=0
i = i++; //i先赋值先自增,然后从堆栈中返回0赋给i,so i=0
|
public class Inc{
public static void main(String argv[]){
int i =0;
i = i++;
i = i++;
System.out.println(i);
}
}
答案还是0
public static void main(String argv[]){
int i =0;
i = i++;
i = i++;
System.out.println(i);
}
}
答案还是0
|
选4
inc.fermin(i); 传值调用i的值不会变
i = i++; i++是先用后加,所以赋给i的值还是0;
如果改成++i的话,是先加后用,则结果就是1了。
如果还不明白的话,去掉赋值,将i = i++;改成
i++;
则输出也是1。
这和C语言是一样的。
本题的考点就是两个:参数传递,++i和i++的区别。搞清楚了这道题,以后再碰到同类型的题目肯定不会出错了,当然,细心也很重要。
inc.fermin(i); 传值调用i的值不会变
i = i++; i++是先用后加,所以赋给i的值还是0;
如果改成++i的话,是先加后用,则结果就是1了。
如果还不明白的话,去掉赋值,将i = i++;改成
i++;
则输出也是1。
这和C语言是一样的。
本题的考点就是两个:参数传递,++i和i++的区别。搞清楚了这道题,以后再碰到同类型的题目肯定不会出错了,当然,细心也很重要。
|
这个问题以前讨论过,
i=0;
i=i++; java i=0 如果 c++ i=1
正确的解释
是堆栈的过程有个顺序,本人菜鸟,所以无法细说了.可以看
http://www.csdn.net/expert/TopicView.asp?id=163768
http://www.csdn.net/expert/TopicView.asp?id=182204
http://www.csdn.net/expert/TopicView.asp?id=182755
i=0;
i=i++; java i=0 如果 c++ i=1
正确的解释
是堆栈的过程有个顺序,本人菜鸟,所以无法细说了.可以看
http://www.csdn.net/expert/TopicView.asp?id=163768
http://www.csdn.net/expert/TopicView.asp?id=182204
http://www.csdn.net/expert/TopicView.asp?id=182755