java三元表达式怎么算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java三元表达式怎么算相关的知识,希望对你有一定的参考价值。

举个简单例子吧。

int a=1;int b=2;int c= a>b?1:0,结果c 为0。a>b 为条件,后面当条件为true时返回":"前面的结果,反之返回":"后面的结果。

三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”。使用这个算法可以使调用数据时逐级筛选。

语法为:条件表达式?表达式1:表达式2。

说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。其逻辑为:“如果为条件成立或者满足则执行表达式1,否则执行第二个。”常用在设置默认值,例如某个值不一定存在,则判断这个值是否存在,不存在给默认值(表达式2)

参考技术A 布尔表达式?a:b
布尔表达式为true结果为a,表达式为false结果为b

eg:
条件?a:b;
等同于
if(条件)

   a;
else

   b;

参考技术B 三元表达式如:
String str = (a == null? "":a.toString()); //当a为null时str = ""; 当a不为null时str = a.toString();

参考技术C 你好:
这个是基础,举个例子:
int i = a>b?0:1;
意思就是:如果a>b,那么i=0,否则i=1
谢谢
参考技术D 三元表达式我见过的只有一个:(布尔表达式 ? 值真:值假),首先计算前边的表达式的值为真为假,若为真则执行问好后边冒号前边的表达式或语句,为假则执行冒号后边的表达式或语句

java 439.三元表达式Parser.java

/*
In order to pick out useful "?" and ":", we can always begin with the last "?" and the first ":" after the chosen "?".
Therefore, directly seek for the last "?" (or you can simply put all "?" into a stack) and update the string depending on T or F until no more "?"s.
*/

public class Solution {
    public String parseTernary(String expression) {
        int len = expression.length();
        Deque<Character> stack = new ArrayDeque<Character>();
        for(int i = len - 1; i >=0; i--) {
            char temp = expression.charAt(i);
            if(!stack.isEmpty() && stack.peek() == '?') {
                
                stack.pop(); // ?
                char first = stack.pop();
                stack.pop();// :
                char second = stack.pop();
                if(temp == 'T') {
                    stack.push(first);
                } else {
                    stack.push(second);
                }
            } else {
                stack.push(temp);
            }
        } 
        return String.valueOf(stack.peek());
    }
    
}

以上是关于java三元表达式怎么算的主要内容,如果未能解决你的问题,请参考以下文章

为啥Vue的三元表达式切换Class失灵

C#中的三元表达式

三元运算符

三元表达式是啥?

java 三元表达式 求把他变成if...else的格式

java 三元运算