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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 emos-c 于 2013-6-3 16:38 编辑

我刚开始看毕老师的java基础视频教程,在三元运算符上碰到一个问题解决不了,请大家帮帮忙。
1. 毕老师在讲解三元运算符时的格式       (条件表达式)?表达式1:表达式2;   
    我理解的三元运算符格式                      变量=(条件表达式)?数值1:数值2;   
     请问:(1)“变量=”是必须的吗?如果不是,可以写一个实例吗?
               (2) 表达式1和表达式2除了是数值还可以是什么?可以写一个实例吗?
2.毕老师讲解的if else结构简写格式  变量=(条件表达式)?表达式1:表达式2;
   请问:毕老师说这里的“变量=”不是一定要加,但是代表一些含义,却没有具体解释。可是如果我不写上“变量=”,就会编译失败。能写一个不带“变量=”的实例吗?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

7 个回复

倒序浏览
这是我自己测试的结果
class  sanyuan
{
        public static void main(String[] args)
        {
                int a=3,b,c;
                //b=(a>1)?100:200;//这句话编译可以通过
                //(a>1)?b=100:b=200;//编译失败,提示需要变量
                //c=(a>1)?b=100:b=200;//编译失败,提示需要变量
                System.out.println(b=(a>1)?100:200);//编译通过,打印结果100
                System.out.println((char)(b=(a>1)?67:68));//编译通过,打印结果C
        }
}

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 再给你1分

查看全部评分

回复 使用道具 举报

回帖奖励 +1 黑马币

  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int a = 10;
  6.                 int b = 19;

  7.                 System.out.println((a>b)?true:false);
  8.         }
  9. }
复制代码
这个就是一个最基本的不用变量的方式,一般来说,不用变量是一种缩写..三元运算符,是一种判断,判断后的结果需要一个东西来存储,或者,直接将它用掉...

不用掉就要存储起来,因为你需要这个结果,如果不要这个结果,那你说说,干嘛还要运算,还要进行比较?...所以编译不通过也是情理之中的...

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报

回帖奖励 +1 黑马币

我是这样理解的,这个叫做三元运算符,既然是运算就一定要有结果的,有结果肯定要定义一个变量来接受这个结果。
毕老师说的是,有些ifelse可以简写成这种格式,但是简写一定会有弊端,这个弊端就是必须要有结果,因为他是运算符。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
class  sanyuan
{
        public static void main(String[] args)
        {
                int a=3,b,c;
                //b=(a>1)?100:200;//这句话编译可以通过
               // b=(a>1)?b=100:b=200;//编译失败,提示需要变量  //这句话里你后面那两个b=不能写
                //c=(a>1)?b=100:b=200;//编译失败,提示需要变量   //这句话里你后面那两个b=不能写
                System.out.println((a>1)?100:200);//编译通过,打印结果100
                System.out.println((char)(b=(a>1)?67:68));//编译通过,打印结果C
        }
}

注:(a>1)?100:200  这是个值需要变量来接收,单独存在就不是语句
    b=(a>1)?b=100:b=200;这句你后面那两个b=不能写

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
加油大家  我看有金币没
回复 使用道具 举报

回帖奖励 +1 黑马币

如果问题已经解决,再次编辑,修改主题类型为已解决,方便大家查看
否则继续追问
回复 使用道具 举报
、__WSD吴少东 发表于 2013-6-1 18:48
这个就是一个最基本的不用变量的方式,一般来说,不用变量是一种缩写..三元运算符,是一种判断,判断后的结 ...

谢谢,我明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马