java 表达式

 java 表达式,由变量,literal和运算符号组合而成.java 总共提供大约30种操作符.下面一一介绍.

1、算术运算

  算术运算符有+,-,*,/,% 五种。对于整数来说,算术运算符得到的结果只会是int,为什么呢?因为怕运算完后的结果会超出原来数据类型的范围.

2、比较运算

  比较运算符有大于(>),小于(<),大于等于(>=),小于等于(<=),等于(==)和不等于(!=).比较运算的结果一定只有两种,true或false,也就是boolean类型的literal.

  不是只有数据才能比较大小,字符也可以,另外等于和不等于也可以用在非基本数据类型之间,如类,对象,字符串,数组等.String的比较不能直接用==.因为它是一个类,不是一种数据类型.
3、逻辑运算
  逻辑运算符有与“&&”,或“||”,非“!”,其中“”和“”是短路逻辑操作符。逻辑运算还有“&”“|”“^”等三个按操作符。
4、递加、递减运算
 
  递加“++”,递减“--”,这个与C的语法一样,在使用递加、递减时要特别注意它是放在变量的前面还是后面。如果是如“++a”,java会先将a的值加加,再把新的数值拿去做别的运算。而如果是“a++”的话相反,先把a的值拿去做运算后再将a的值++写入内存。“--”的做法也是一样。
5、赋值运算
  “=”是赋值操作符。通常把“=”称为赋值,而不称作等于。赋值操作符的优先级是所有操作符中最低的.还要注意赋值运算的自动类型转换是放大类型转换,不是缩小类型转换,否则编译时要报错.
6、位运算
  其中三种“&”“|”“^”其实已经在逻辑运算中提到,另外还有就是互补“~”,“~”有点像逻辑非“!”,只不过“!”用在boolean类型,而“~”用在int类型,也就是按位取反。
7、位移运算
  右移“>>”和左移“<<”。另外还有无符号的右移“>>>”,跟右移运算类似,不过不管正负数,全在左边缺少的地方补0,注意它只能用在int,long。
综上,表达式有双重功能,执行表达式的运算和返回值。下表说明了Java操作符的优先级:


后缀操作符 [] . (params) expr++ expr--
一元操作符 ++expr --expr +expr -expr ~ !
新建 new (type)expr
乘除 * / %
加减 + -
移位 << >> >>>
关系 < > <= >= instanceof
等 == !=
位与 &
位异或 ^
位同或 |
逻辑与 &&
逻辑或 ||
条件 ? :
赋值 = += -= *= /= %= &= ^= |= <<= >>= >>>=

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java表达式计算可以使用Java自带的表达式计算库,也可以手动实现表达式计算。 使用Java自带的表达式计算库可以通过以下步骤实现: 1. 引入Java自带的表达式计算库:`import javax.script.ScriptEngineManager;` 2. 创建ScriptEngine对象:`ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript");` 3. 调用eval方法计算表达式:`Object result = engine.eval(expression);` 其中,expression为需要计算的表达式,result为计算结果。 例如,计算表达式"1+2*3"的值,可以通过以下代码实现: ``` import javax.script.ScriptEngineManager; import javax.script.ScriptEngine; import javax.script.ScriptException; public class ExpressionCalculator { public static void main(String[] args) throws ScriptException { String expression = "1+2*3"; ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); Object result = engine.eval(expression); System.out.println(result); } } ``` 输出结果为7。 手动实现表达式计算可以使用栈来实现。具体步骤如下: 1. 将表达式转换为后缀表达式(逆波兰表达式)。 2. 遍历后缀表达式,如果是数字,则入栈;如果是运算符,则从栈中弹出两个数进行运算,并将结果入栈。 3. 遍历完后缀表达式,栈中剩下的数就是表达式的计算结果。 例如,计算表达式"1+2*3"的值,可以通过以下代码实现: ``` import java.util.Stack; public class ExpressionCalculator { public static void main(String[] args) { String expression = "1+2*3"; String[] postfix = toPostfix(expression); int result = calculate(postfix); System.out.println(result); } private static String[] toPostfix(String expression) { Stack<Character> stack = new Stack<>(); StringBuilder postfix = new StringBuilder(); for (int i = 0; i < expression.length(); i++) { char ch = expression.charAt(i); if (Character.isDigit(ch)) { postfix.append(ch); } else { while (!stack.isEmpty() && priority(stack.peek()) >= priority(ch)) { postfix.append(stack.pop()); } stack.push(ch); } } while (!stack.isEmpty()) { postfix.append(stack.pop()); } return postfix.toString().split(""); } private static int calculate(String[] postfix) { Stack<Integer> stack = new Stack<>(); for (String token : postfix) { if (Character.isDigit(token.charAt(0))) { stack.push(Integer.parseInt(token)); } else { int b = stack.pop(); int a = stack.pop(); int result = 0; switch (token) { case "+": result = a + b; break; case "-": result = a - b; break; case "*": result = a * b; break; case "/": result = a / b; break; } stack.push(result); } } return stack.pop(); } private static int priority(char ch) { switch (ch) { case '+': case '-': return 1; case '*': case '/': return 2; default: return 0; } } } ``` 输出结果为7。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值