public class Inc{
public static void main(String argv[]){
Inc inc = new Inc();
int i =0;
inc.fermin(i);
i = i++;
i=i++; System.out.println(i);
}
void fermin(int i){
i++;
}
}结果还是0,在main中无论加多少条i=i++;结果都是一样,为什么????????
public static void main(String argv[]){
Inc inc = new Inc();
int i =0;
inc.fermin(i);
i = i++;
i=i++; System.out.println(i);
}
void fermin(int i){
i++;
}
}结果还是0,在main中无论加多少条i=i++;结果都是一样,为什么????????
解决方案 »
- 小白的问题,请来看一下~~~
- 朋友们,怎么让textarea显示其他类的值,我写的老报空指针错误。谢拉
- BOLB
- 使用JDBC-ODBC桥连接SQLServer2000的问题
- try catch到底哪里影响效率了
- 在运行http://localhost:7001/console/的时候,提示我下载java虚拟机,我如何设置而直接利用jbulider9下的jdk?
- Java文件操作问题?
- 该选择什么开发工具?来者有分!
- 有两个JTextField,当在其中一个JTextField输入字符串时,另一个JTextField里也出现相同字符串,能给出代码吗,一定给分!!!
- 如何判断一个对象是否在一定时间内一直在一个队列中而没有被取走过?
- 看“四天学会Java”帖子有感:论Java版的叫骂
- 在线等!!!!!!!!!!!!!!!
inc.fermin(i); //这里对i无影响,看看调用就知道
i = i++; //这里i++虽然i自加了,但是i后来又被复制回去了
i=i++; //即i还是原来的 i
2. i++指,先显示后计算,所以i = i++,也就等于i = i
把代码改成这样
public static void main(String argv[]){
Inc inc = new Inc();
int i =0;
i = inc.fermin(i);
System.out.println(i);
}void fermin(int i){
i++;
}
或是
public static void main(String argv[]){
int i =0;
i++;
System.out.println(i);
}
第一,变量生存期。
void fermin(int i){
i++;
}
这里的自增只是对于方法参数i的自增。
第二,自增运算符的使用
i=i++;
这句意思是把i的值先赋值给i,再对i自增1。
但是,自增运算符的优先级比赋值高。所以再赋值时i其实已经加了1。再将i赋值成0。这样无论加多少条i=i++;结果都是一样的。
如果改成i++;或i=++i;就能够实现自增了。
其实这个用单步调试,很容易就解决了。
++i是先自增,后参与表达式计算,
比如: i=1,j=2
k=(++i)+j;//结果是k=4,i=2
k=(i++)+j;//结果是k=3,i=2
程序应该为:
public class Inc
{
public static void main(String argv[])
{
Inc inc = new Inc();
int i =0;
i = inc.fermin(i);
System.out.println(i);
} int fermin(int i)
{
i++;
return i;
}
}