代码如下:
boolean flag = false; 
if (flag = true) { 
   System.out.println("true"); 
} else { 
   System.out.println("false"); 
} 结果是true,我想问的是,为什么(falg = true)返回true,flag = false返回false,还有就是比如申明int i,然后打印,即System.out.println(a = 2)结果是2,这些有什么理论依据吗?今天做SCJP时碰到的比较新鲜的东西,希望大家解惑

解决方案 »

  1.   

    flag 是boolean型,先赋值,在判断flag 的值,如果true System.out.println("true");  
    如果false
    System.out.println("false");
    你上面flag = true,赋值为true了。
    a = 2 这种语句都是赋值用的。你要比较优先级。  
      

  2.   

    if (flag = true) 
    这段代码等价于flag = true; // 赋值
    if (flag) // 然后判断flag是否为真
    判断,用 == ,一个等号,是赋值。然后,判断真假,建议用if (flag)if (!flag)
      

  3.   

    =号是赋值符号,FLAG在IF里变为了TRUE。所以输出TRUE了。用==符号
      

  4.   

    先赋值再判断,flag自然是true
    如果要判等于的话就要用==
      

  5.   

    boolean flag = false;  
    if (flag = true) {  
      System.out.println("true");  
    } else {  
      System.out.println("false");  

    其中flag = true; // 赋值
    if (flag) // 然后判断flag是否为真,此时的flag为真
    执行
    System.out.println("true"); 判断 用 ==  一个等号,是赋值
      

  6.   

    import java.util.Scanner;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    class 打印日历{
    public static void main(String [] args){
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入年份");
    int year=sc.nextInt();
    System.out.println("请输入月份:");
    int month=sc.nextInt(); Calendar cal=Calendar.getInstance();
    cal.set(Calendar.YEAR,year);
    cal.set(Calendar.MONTH,month-1);
    cal.set(Calendar.DAY_OF_MONTH,1);
    //获取星期信息
    int week=cal.get(Calendar.DAY_OF_WEEK);
    //计算空格数量
    int spaceNum=week-1;

    int day=0;
    //获取月份的天数
    switch(month)
    {
    case 1:case 3:case 5:case 7:case 8:case 10:case 12:
    day=31;
    break;
    case 4:case 6:case 9:case 11:
    day=30;
    break;
    case 2:
    if((year%4==0&&year%100!=0)||year%400==0)
    {
    day=29;
    }else{
    day=28;
    }
    break;
    }
    //输出日历
    System.out.println("日\t一\t二\t三\t四\t五\t六");
    for(int i=1;i<=(day+spaceNum);i++)
    {
    if(i<=spaceNum)//打印空格
    {
    System.out.print("\t");
    }        
    else
    {
    System.out.print((i-spaceNum)+"\t");
    }
    if(i%7==0)
    {
    System.out.println();
    }

        }
    }
    我度试过是可以实现的,还有你可以再考虑如何,输入年份就打印出一年的日历,提示,在前面加个循环即可,试试看吧!!!!
      

  7.   

    最讨厌C语言这套玩意儿,一个if语句干八件事儿
      

  8.   

    应该 A=2的这个语句的返回值是2吧。估计是这样的 。楼主要去看看java的语言规范可能会找到答案的
      

  9.   

    第一行语句,flag 的值是假,当第二行if语句中,flag = true 表明flag的值始终为真,你应该写错了,if(flag ==true) 这样才能输出是假
      

  10.   

    大哥你代码
    flag == true这个
      

  11.   

    if(flag=true)这里你是先将flag赋值为true了,然后才是if的判断,故会输出第一个,正确的判断应该是直接用flag或者flag==true
      

  12.   

    =和==的区别,在C中一般写成true == flag
      

  13.   

    那个是看运算级而决定的,if语句中判定要的是一个Boolean值,你所以只要你最终的结果是Boolean值就可以了。然而 a = 2 ;则是赋值大于打印优先级。
      

  14.   

    flag = true
    你已经给flsg赋值为true了