给大家做一道题目

wan368500 2012-04-25 10:43:13
代码如下:
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时碰到的比较新鲜的东西,希望大家解惑
...全文
442 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
jake512 2012-05-03
  • 打赏
  • 举报
回复
那个是看运算级而决定的,if语句中判定要的是一个Boolean值,你所以只要你最终的结果是Boolean值就可以了。然而 a = 2 ;则是赋值大于打印优先级。
mfk373239838 2012-05-03
  • 打赏
  • 举报
回复
flag = true


你已经给flsg赋值为true了
horsttnann 2012-05-03
  • 打赏
  • 举报
回复
= 是赋值,== 才是判断。
JPF1024 2012-05-02
  • 打赏
  • 举报
回复
就是这样的。
[Quote=引用 1 楼 的回复:]

flag 是boolean型,先赋值,在判断flag 的值,如果true System.out.println("true");
如果false
System.out.println("false");
你上面flag = true,赋值为true了。
a = 2 这种语句都是赋值用的。你要比较优先级。
[/Quote]
WinterLmm 2012-05-02
  • 打赏
  • 举报
回复
嗯,,大家都说的很好。。就是赋值。我刚学的时候也困惑过
dxqrr 2012-04-27
  • 打赏
  • 举报
回复
=和==的区别,在C中一般写成true == flag
luohongping520 2012-04-27
  • 打赏
  • 举报
回复
把赋值语句看作一个整体,你就明白了!!这就需要你明白运算符的优先级了。!!
zhy0511 2012-04-27
  • 打赏
  • 举报
回复
if(flag=true)这里你是先将flag赋值为true了,然后才是if的判断,故会输出第一个,正确的判断应该是直接用flag或者flag==true
冰释绿茵 2012-04-27
  • 打赏
  • 举报
回复
大哥你代码。。。
flag == true这个
lliiqiang 2012-04-27
  • 打赏
  • 举报
回复
==是比较
=是赋值,同时返回赋的值
xiaoyixinfeng2012 2012-04-26
  • 打赏
  • 举报
回复
第一行语句,flag 的值是假,当第二行if语句中,flag = true 表明flag的值始终为真,你应该写错了,if(flag ==true) 这样才能输出是假
悠悠-我心 2012-04-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

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.printl……
[/Quote]





不应该回复在 本帖内
悠悠-我心 2012-04-26
  • 打赏
  • 举报
回复
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();
}
}
}
}


我度试过是可以实现的,还有你可以再考虑如何,输入年份就打印出一年的日历,提示,在前面加个循环即可,试试看吧!!!!
悠悠-我心 2012-04-26
  • 打赏
  • 举报
回复
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");

判断 用 == 一个等号,是赋值
稻禾 2012-04-26
  • 打赏
  • 举报
回复
同样作为一名菜鸟,理论都懂,一上机就各种搞不懂的错误,缺少实践的后果啊~~~~~~
xiaoqinggegege 2012-04-26
  • 打赏
  • 举报
回复
运算符优先级的问题
clementxr 2012-04-26
  • 打赏
  • 举报
回复
先赋值再判断,flag自然是true
如果要判等于的话就要用==
wan368500 2012-04-26
  • 打赏
  • 举报
回复
大家太热情了,谢谢大家~
sffx123 2012-04-26
  • 打赏
  • 举报
回复
1,2楼说的很好了
logic_well 2012-04-26
  • 打赏
  • 举报
回复
这有什么理论依据
=在这里是附值 ==才是判断相等 考的是最基本的东西
加载更多回复(8)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧