A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

xingxing

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© xingxing 初级黑马   /  2012-6-27 18:21  /  1934 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xingxing 于 2012-6-27 18:31 编辑

        
下面2个的运行结果x=5; 为什么 不是应该不大于4 为什么还自增


public static void main(String[] args) {
               
                int x = 4;
                int y = 5;
                if(x++>4 & ++y>5) {
                  
                }
                System.out.println("x=" + x + ",y=" + y);
               
        }






public static void main(String[] args) {
               
                int x = 4;
                int y = 5;
                if(x++>4 & ++y>5) {
                  x++;
                }
                System.out.println("x=" + x + ",y=" + y);
               
        }

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 鼓励下!

查看全部评分

6 个回复

倒序浏览
public static void main(String[] args) {

int x = 4;
int y = 5;
if(x++>4 & ++y>5) {   //← 这里JVM需要判断一下条件看看是否要执行if里面的代码..所以x++要先判断在自加 ++y也要先自加,在判断..

}
System.out.println("x=" + x + ",y=" + y);因为上面判断的时候做了运算所以 x在这里就等于 5,y就等于 6

}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
if(x++>4 & ++y>5) //因为您的两段程序都执行了这条if语句的判断语句,但是都为false,都没有执行语句体里面的内容,所以第一段程序
                    和第二段程序if里的语句体里面有没有内容或者内容不同结果都是一样的,因为执行了if的判读语句,x和y都自增了1,
                    所以结果是5

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
ublic class  Text1
{

        public static void main(String[] args) {
        
        int x = 4;
        int y = 5;
        if(x++>4 & ++y>5) {//自增的问题x++,x的值是不变进行大于4运算,++y,y的值先自增再参加大于5的运算
         
        }
        System.out.println("x=" + x + ",y=" + y);
        
}
}

public class  Text1
{

        public static void main(String[] args) {
        
        int x = 4;
        int y = 5;
        if(x++>4 & ++y>5) {
          x++;//x的值,在if语句中自增1了,又把值赋给x,所以结果x的值为5
        }
        System.out.println("x=" + x + ",y=" + y);
        
}


}

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1 写法有待商酌

查看全部评分

回复 使用道具 举报
这两个程序的x值在输出前都自增了一次,所以结果都是5没错
关键问题是在哪自增的?
他们都是在if语句里自增的,但是在x++>4这里,x都是先判断是否大于4,然后再自增的
也就是说,x的自增是在 > 之后,在输出语句之前,
所以结果都是5

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
if(x++>4 & ++y>5)  这里面前加与后加的的意思楼主没弄清楚。虽说判断条件是看x是不是大于4,但是在判断条件的时候,x=4,判断条件不成立,然后x++变成了5,而y是先加,值就变成了6,输出结果就是x=5,y=6。

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
金龙 中级黑马 2012-6-28 00:43:19
7#
同学,只要记住自增与自减的运算特性,以后就不会迷糊了,当++或--在变量左边的时候,会先进行自增或自减的运算,然后再参与别的运算,而当++或--在变量右边的时候,则是变量先去和别的运算,然后再本身自增或自减,记住这个特性昂!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马