zoukankan      html  css  js  c++  java
  • JAVA-初步认识-第三章-三元运算符

    一. 概述

    三元运算符就是三个元素参与运算的操作符。前面讨论的运算符都是一元或者二元的。

    三元运算符有特定的符号和表达形式,(条件表达式)?表达式1:表达式2; 依照条件表达式的结果是true还是false,

    来决定运行表达式1还是2。→这里说的条件表达式是一个判断语句,判断的结果也是boolean类型数据。格式中必须要有括号么?

    我们开始对三元运算符进行一个演示:

    DOS显示在编译的过程中出现了错误。第一个错误就交代了语法有错误,一个错误的出现,导致了后续一系类的错误。

    当将源程序改动后,DOS就显示正常。

    我们对这里错误的语句进行分析:int x=3,y; y=(if x<2)?100:200; 这个三元运算符在使用时,有这么三步,要有前提int x=3,y;

    要有经过判断后的输出(不同的判断结果,会有不同的输出。比较运算符参与的判别大小),输出的结果必须赋值给变量(因为输出的结果不确定)。

    三元运算符的书写格式也可以探讨,条件表达式后面接问号,是在进行询问,如果true则选择表达式1,在表达式1和2之间用

    冒号作为分隔符,最后的分号是语句结束的标志。

    我又重新换了一种书写方式,DOS结果又显示错误。

    上面的种种错误都显示出,我们对于三元运算符的认识和运用不熟悉,条件表达式得出的结果是不确定的,必须要有变量来承载。定义中说的表达式1和表达式2,

    这种翻译说法可能并不准确,看着好像是两个具体的结果,而不是两个表达式。可以是进过运算的结果。

    二. 三元运算符的分析

    三元运算符本质有点像,经过判断后,二选一的意思。

    这个例子可以看出,max被赋的值是经过三元运算符判断后的结果,而不是max=a>b?,之前我一直认为是承载的条件表达式。

    分析:什么是变量?就是不确定的数据。如果不能确定的话,就是变量,就需要定义类型,开始赋不赋值都可以,但是涉及输出的时候一定要有数值,看下图。只要输出的不是Z,那么即使Z没有赋值,源程序也是可以编译,运行的。

    里的max代表着三元运算符运算后的结果,因为结果不确定,因此也是变量,也需要定义类型。如果不定义类型的话,DOS就会报错,显示如下。也就是说,只要是变量,一定要定义类型,赋不赋值可以另说。既然是定义变量,那么结果是什么类型也要心里有数,不然定义的时候无法确定变量类型。

    下面有一个正确的书写。

     总结:我始终觉着这里讲解的例子过于单薄,没有深刻的解释清楚三元运算符使用的深刻含义,(条件表达式)?表达式1:表达式2; 这里的条件表达式绝非简单的比较大小,而且对于如何写表达式,我们也是不清楚。在条件表达式的左边一定要有,赋值给变量的样式出现么?依据上面的说明,我们可以肯定一点的是,这个三元运算符的结果一定是个变量。一定要找个空间装它。

    还有一点:只要是运算符,总会有结果。

    (现定义,现操作)

    从这个比较三个数得最大,以及上面的比较两个数得最大,我们又回到最初那句话,计算机是帮助计算的工具,

    程序将我们日常生活中的许多工作,都在计算机上表现了出来。我们只需要讲之前所学的知识点,通过计算机高级

    语言的书写方式,在计算机上书写出来即可。这个就需要我们非常熟悉,计算机语言的书写规则。

    三. 

    我开始设想,三元运算符能不能不通过赋值给左侧的变量就直接输出,结果在书写的过程中发现根本不可能。

    /**

    三元运算符书写为int x=3; x<2?4:5;

    用System.out.println()输出。  // 这里先要输出三元运算符的结果,那必须在三元运算符的左侧书写赋值语句。

     */

    为了探索更多的三元运算符的信息,又编写了一个小程序。

    /**

    int x=3;

    char y=x<2?'A':'B';

    System.out.println("y="+y);  // DOS的结果显示为,y=B

    */

    三元运算符是一个简单的判断选择输出操作。在给定的前提,有一个评判的标准,经过这个标准,选择输出两个数据的哪一个。

    这和if ,while相比,只是简单的输出数据操作。

  • 相关阅读:
    [leetcode]Reverse Words in a String
    *[topcoder]ChooseTheBestOne
    priority_queue c++
    [topcoder]BoxesDiv2
    *[topcoder]IncrementingSequence
    [topcoder]HappyLetterDiv2
    c++ stl 使用汇总(string,vector,map,set)
    2014找工作总结-机会往往留给有准备的人 (转,后台开发面经)
    2015互联网校招总结—一路走来 (移动端开发面经,另有面经汇总)
    通过金矿模型介绍动态规划(转)
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7471268.html
Copyright © 2011-2022 走看看