Java运算符怎么使用?
- 后端开发
- 2025-06-14
- 6
基础运算符使用
Java内置运算符直接用于代码中,分为六类:
-
算术运算符

-
关系运算符
System.out.println(a > b); // true System.out.println(a == b); // false -
逻辑运算符

boolean x = true, y = false; System.out.println(x && y); // false (与) System.out.println(x || y); // true (或) System.out.println(!x); // false (非)
-
位运算符
int m = 5; // 二进制 0101 int n = 3; // 二进制 0011 System.out.println(m & n); // 1 (按位与: 0001) System.out.println(m | n); // 7 (按位或: 0111)
-
赋值运算符
int c = 5; c += 2; // 等价于 c = c + 2 → 7 -
三元运算符
int max = (a > b) ? a : b; // 返回较大值
- 优点:直接支持数学表达式解析,无需手动处理运算符优先级。
- 限制:需依赖Java的javax.script包,避免执行非信任代码(安全风险)。
- 适用场景:预定义有限运算符集合,安全可控。
- 扩展性:可结合反射优化(通过java.lang.reflect.Method动态调用方法)。
- 类型安全
- 算术运算注意整数除法(5/2=2),需强制类型转换:(double)5/2=2.5。
- 空指针检查
- 动态解析时验证输入非空:if (operator == null) throw new IllegalArgumentException();。
- 性能考量
- ScriptEngine首次调用较慢,高频场景建议缓存引擎实例。
- 异常处理
- 捕获ArithmeticException(如除零)、ScriptException(表达式错误)。
- 基础计算:直接使用Java内置运算符(高效、类型安全)。
- 动态规则引擎:
- 配置文件解析 → 用ScriptEngine
- 用户自定义公式 → 条件分支 + 输入校验
- 高安全需求:避免ScriptEngine,改用条件分支或表达式解析库(如exp4j)。
- Oracle官方文档:Java运算符
- ScriptEngine使用指南:Java Scripting API
- 安全最佳实践:OWASP输入验证规范
动态解析字符串运算符(高级场景)
当运算符以字符串形式存在(如从用户输入或配置文件读取),需动态解析:
方法1:使用ScriptEngine(推荐)
import javax.script.ScriptEngineManager; import javax.script.ScriptEngine; public class DynamicOperator { public static void main(String[] args) throws Exception { ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); String expression = "10 * 3"; // 运算符在字符串中 Object result = engine.eval(expression); System.out.println(result); // 输出 30 } }
方法2:条件分支匹配
public class OperatorParser { public static double calculate(double a, String op, double b) { return switch (op) { case "+" -> a + b; case "-" -> a - b; case "*" -> a * b; case "/" -> b != 0 ? a / b : Double.NaN; // 避免除零错误 default -> throw new IllegalArgumentException("无效运算符: " + op); }; } public static void main(String[] args) { System.out.println(calculate(10, "*", 3)); // 输出 30.0 } }
关键注意事项
应用场景建议
引用说明
通过基础语法结合动态处理技术,可灵活应对各类运算符需求,根据场景选择方案,兼顾性能与安全性。