全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-09 5 分钟 ✍️ juanwangdev

条件运算符

条件运算符是唯一的三元运算符。

条件运算符语法

基本格式

Java
条件 ? 表达式1 : 表达式2

// 条件为true:返回表达式1
// 条件为false:返回表达式2

基本示例

Java
int a = 10, b = 20;

// 取最大值
int max = a > b ? a : b;  // 20

// 取最小值
int min = a < b ? a : b;  // 10

条件运算符用法

判断取值

Java
int score = 85;

// 判断是否及格
String result = score >= 60 ? "及格" : "不及格";
// result = "及格"

// 判断奇偶
int n = 7;
String type = n % 2 == 0 ? "偶数" : "奇数";
// type = "奇数"

计算取值

Java
int a = -5;

// 取绝对值
int abs = a > 0 ? a : -a;  // 5

// 两数较大值
int max = a > b ? a : b;

// 两数较小值
int min = a < b ? a : b;

返回对象

Java
int score = 85;

// 返回不同对象
Grade grade = score >= 90 ? new ExcellentGrade() : new NormalGrade();

// 返回null
String value = isValid ? getName() : null;

嵌套条件运算符

Java
int score = 85;

// 嵌套使用(可读性降低,不推荐复杂嵌套)
String level = score >= 90 ? "优秀" : 
               score >= 60 ? "合格" : "不合格";
// level = "合格"

// 建议使用if-else替代复杂嵌套

条件运算符与if-else对比

等价关系

Java
// 条件运算符
int max = a > b ? a : b;

// 等价的if-else
int max2;
if (a > b) {
    max2 = a;
} else {
    max2 = b;
}

使用场景对比

特性条件运算符if-else
代码简洁度简洁较长
可读性简单情况好复杂情况好
返回值必须返回值可无返回值
执行语句只能是表达式可多条语句
适用场景简单二选一复杂多分支
Java
// 适合条件运算符:简单二选一
int max = a > b ? a : b;
String msg = isValid ? "有效" : "无效";

// 适合if-else:复杂逻辑
if (score >= 90) {
    System.out.println("优秀");
    sendNotification();
} else if (score >= 60) {
    System.out.println("合格");
} else {
    System.out.println("不合格");
    retryTest();
}

条件运算符应用

求最大最小值

Java
int a = 10, b = 20, c = 15;

// 两个数最大值
int max2 = a > b ? a : b;

// 三数最大值
int max3 = a > b ? (a > c ? a : c) : (b > c ? b : c);
// 或使用Math.max
int max3b = Math.max(Math.max(a, b), c);

// 三数最小值
int min3 = a < b ? (a < c ? a : c) : (b < c ? b : c);

默认值设置

Java
String name = inputName != null ? inputName : "默认名";

int value = configValue != null ? configValue : 0;

// 等价于(Java 8+)
String name2 = Optional.ofNullable(inputName).orElse("默认名");

状态判断

Java
boolean isActive = true;

// 状态描述
String status = isActive ? "激活" : "未激活";

// 图标选择
String icon = isActive ? "active.png" : "inactive.png";

数值处理

Java
int amount = 100;
int maxAmount = 50;

// 限制范围
int actual = amount > maxAmount ? maxAmount : amount;
// actual = 50

// 空值处理
Integer value = null;
int result = value != null ? value : 0;

验证结果

Java
boolean isValid = checkInput(input);

// 返回不同消息
String message = isValid ? "验证成功" : "验证失败";

// 返回不同状态码
int code = isValid ? 200 : 400;

条件运算符注意事项

表达式类型兼容

两个表达式类型必须兼容。

Java
int a = 10;

// 类型兼容
String result = a > 0 ? "正数" : "负数";  // String

// 类型不兼容
// int value = a > 0 ? "正数" : -1;  // 错误:String和int不兼容

// 正确:强转或统一类型
String value2 = a > 0 ? "正数" : String.valueOf(-1);

自动类型提升

Java
char c = 'A';
int n = 65;

// 自动提升
Object obj = true ? c : n;  // 提升为int,再转为Object
// 实际返回int类型值65,不是char'A'

// 需要注意的类型提升问题

避免复杂嵌套

Java
// 不推荐:复杂嵌套难读懂
String result = a > 0 ? (b > 0 ? "ab正" : "a正b负") : 
                (b > 0 ? "a负b正" : "ab负");

// 推荐:使用if-else
if (a > 0 && b > 0) {
    result = "ab正";
} else if (a > 0) {
    result = "a正b负";
} else if (b > 0) {
    result = "a负b正";
} else {
    result = "ab负";
}

条件运算符优先级

优先级较低

条件运算符优先级低于算术、关系、逻辑运算符。

Java
int a = 10, b = 20;

// 关系运算先执行
int max = a > b ? a : b;  // 先比较a>b,再判断

// 算术运算先执行
int result = a + b > 20 ? 100 : 0;
// a+b=30, 30>20=true, 返回100

// 括号明确优先级
int result2 = (a > b) ? a + 10 : b + 10;

要点总结

  • 条件运算符是唯一的三元运算符
  • 格式:条件 ? 表达式1 : 表达式2
  • 条件为true返回表达式1,false返回表达式2
  • 简洁替代简单if-else
  • 适合二选一场景
  • 两个表达式类型必须兼容
  • 可嵌套使用,但不推荐复杂嵌套
  • 优先级低于算术、关系、逻辑运算符
  • 常用于求最大最小值、设置默认值
  • 复杂逻辑建议用if-else
  • 注意类型自动提升问题

📝 发现内容有误?点击此处直接编辑

← 上一篇 关系运算符
下一篇 → 算术运算符
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库