「java字符串表达式」java字符串表达式转布尔值

博主:adminadmin 2023-01-24 21:51:11 945

本篇文章给大家谈谈java字符串表达式,以及java字符串表达式转布尔值对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java 判断以数字开头的字符串的正则表达式怎么写?

// 判断以数字开头的字符串的正则表达式:"[0-9]*"

public static boolean isNumeric(String str) {

Pattern pattern = Pattern.compile("[0-9]*");

Matcher isNum = pattern.matcher(str.charAt(0)+"");

if (!isNum.matches()) {

return false;

}

return true;

}

java表达式是什么?

Java是面向表达式的语言,Java中一个简单表达式可以是下面任意一种:● 常量:7、false。● 单引号括起来的字符字面常量:'A'、'3'。● 双引号括起来的字符串字面常量:"foo"、"Java"。● 任何正确声明的变量名:myString、x。● 任何用Java二元运算符(本章稍后将详细讨论)连接起来的两个上述类型的表达式:x+2。● 任何用Java一元运算符(本章稍后将详细讨论)修饰的单个上述类型的表达式:i++。● 任何用小括号括起来的上述类型的表达式:(x+2)。以及另外一些与本书后面将要学到的对象有关的表达式类型。无论多么复杂的表达式都可以由不同类型的简单表达式和括号嵌套组合而成,例如:((((4/x) + y) * 7) + z)。2.9.1 算术运算符 Java语言提供了许多基本的算术运算符,如表2-1所示。表2-1 Java算术运算符运算符描 述+加法-减法*乘法/除法%求余(%左边的操作数除以右边的

操作数所得到的余数,例如10%3=1)+和-运算符也可作为一元运算符用于表示正负数:-3.7、+42。除了简单赋值运算符=,还有许多特定的复合赋值运算符,这些运算符将变量赋值和算术操作合并在一起,如表2-2所示。表2-2 Java复合赋值运算符运算符描 述+=a+=b等价于a=a+b-=a-=b等价于a=a-b*=a*=b等价于a=a*b/=a/=b等价于a=a/b%=a%=b等价于a=a%b最后要介绍的两个算术运算符是一元递增运算符(++)和一元递减运算符(--),用于将整数变量的值加1或减1,或者将浮点数变量的值加1.0或减1.0。称它们为一元运算符是因为它们用于单个变量,而前面讨论的二元运算符则连接两个表达式的值。一元递增运算符和一元递减运算符也可用于将字符变量在Unicode序列中向前或向后移动一个字符位置。例如,在下面的代码片段中,字符变量c的值从'e'递增为'f':递增和递减运算符可以以前缀或者后缀方式使用。如果运算符放在操作数之前(前缀模式),变量的递增或递减操作将在更新后的变量值被用于任何由它构成的赋值操作之前执行。例如,考虑下面的使用前缀递增运算符的代码片段,假设a和b在程序前面已经声明为int变量:上述代码执行后,变量a的值是2,变量b的值也是2。这是因为在第二行中变量a的递增(从1到2)发生在它的值赋给b之前。因此这行代码在逻辑上等价于下面两行代码: 另一方面,如果运算符放在操作数之后(后缀模式),递增或递减操作发生在原来的变量值被用于任何由它构成的赋值操作之后。看一下以后缀方式使用递增运算符的相同代码片段:上述代码执行后,变量b的值是1,而变量a的值是2。这是因为在第二行中变量a的递增(从1到2)发生在它的值赋给b之后。因此这行代码在逻辑上等价于下面两行代码:下面是一个稍微复杂一点例子,请阅读附加的注释以确保你能够明白x最终是如何被赋值为10的:稍后将会看到,递增和递减运算符通常和循环一起使用。2.9.2 关系和逻辑运算符逻辑表达式以指定的方式比较两个(简单或者复杂)表达式exp1和exp2,决议出一个boolean值true或者false。 Java提供了表2-3所示的关系运算符来创建逻辑表达式。表2-3 Java关系运算符运算符描 述exp1==exp2如果exp1等于exp2,值为true(注意使用双等号测试相等性)exp1exp2如果exp1大于exp2,值为trueexp1=exp2如果exp1大于等于exp2,值为trueexp1exp2如果exp1小于exp2,值为trueexp1=exp2如果exp1小于等于exp2,值为trueexp1!=exp2如果exp1不等于exp2,值为true!exp如果exp为false值为true,如果exp为true值为false除了关系运算符,Java还提供了用于组合/修饰逻辑表达式的逻辑运算符。表2-4列出了最常用的逻辑运算符。表2-4 Java逻辑运算符运算符描 述exp1exp2逻辑“与”,仅当exp1和exp2都为true时复合表达式值为trueexp1||exp2逻辑“或”,exp1或exp2值为true时复合表达式值为true!exp逻辑“非”,将逻辑表达式的值从true切换到false,反之亦然下面这个例子用逻辑“与”运算符来编程实现逻辑表达式“如果x大于2.0且y不等于4.0”:逻辑表达式常用于流程控制结构,本章稍后将进行讨论。2.9.3 表达式求值和运算符优先级如同本章前面提到的那样,任何复杂的表达式都可以用分层嵌套的小括号构成,例如(((8 * (y + z)) + y) x)。编译器通常按照从内到外,从左到右的顺序对这样的表达式求值。假设x、y、z按照下面的方式声明并初始化:下面的赋值语句右边的表达式:将像下面这样逐步求值:没有小括号时,根据运算符用于表达式求值的顺序,某些运算符具有高于其他运算符的优先级。例如,乘除法先于加减法执行。通过使用小括号可以强制改变运算符的优先级,括号内的运算符比括号外的先执行。考虑下面的代码片段:代码的第一行没有使用括号,乘法操作比加法操作先执行,因此整个表达式的值为2+12=14,就像我们将表达式明确地写成2+(3*4)一样,当然这样做没有必要。 在代码的第二行,括号被明确地放在操作2+3两边,因此加法操作将首先执行,然后求和结果乘以4作为整个表达式的值,即5*4=20。回到前面的例子注意到和!=运算符优先级高于运算符,因此可以去掉嵌套的括号而变成下面这样:然而,额外的括号并不会对代码造成伤害,事实上它可以使表达式的目的更加清楚。2.9.4 表达式类型表达式类型是表达式最终求值结果的Java类型。例如给定下面的代码片段:表达式(x 2.0) (y != 4.0)求值结果为true,因此表达式(x 2.0) (y != 4.0)称为boolean型表达式。在下面的代码片段中:表达式((8 * (y + z)) + y) * x求值结果为42,因此表达式((8 * (y + z)) + y) * x称为整型表达式。

java解析字符串 算术表达式求值

Java 有一个jar包 叫 groovy

groovy可以实现动态执行 String格式的算数表达式

public static void main(String[] args) throws Exception{

    String str1 = "1 + 2 * 3"; //表达式1  固定表达式

    GroovyShell groovyShell = new GroovyShell();

    Object value = groovyShell.evaluate(str1);

    System.out.println(value);

    String str2 = "A + B * C"; //表达式2 动态表达式

    Binding binding = new Binding();

    binding.setVariable("A",1); //表达式中 所有的A替换为1

    binding.setVariable("B",2);//表达式中 所有的B替换为2

    binding.setVariable("C",3);//表达式中 所有的C替换为3

    GroovyShell groovyShell2 = new GroovyShell(binding);

    Object value2 = groovyShell2.evaluate(str2); //str2 实际表达式为 1 + 2 * 3

    System.out.println(value2);

}

Java中的字符串转为计算表达式

这需要写很长一段代码。

1、判断表达式中有没有括号,如果有括号,转第二步。没有括号转第三步。

2、把括号内的内容提取出来,作为一个新的表达式。转第三步

3、判断表达式中有没有乘号和除号,有转第四步。没有转第六步。

4、把乘除号和乘除号前后的数字提取出来,得到新的表达式,转第五步。

5、提取数字和符号,判断表达式是乘号还是除号,然后计算结果。返回。

6、表达式没有乘除号,有加减号。转第七步。

7、提取包含加减的表达式中的符号和数据,计算结果,返回。

就是这个道理,这里只是描述了带括号和加减乘除的表达式,如果有更多的运算符,则根据运算符优先级处理。

Java 字符串算术表达式求值

import java.util.ArrayList;

import java.util.Stack;

/**itjob

*

* @author yhh

*

*/

public class Calculate {

/**

* 将字符串转化成List

* @param str

* @return

*/

public ArrayListString getStringList(String str){

ArrayListString result = new ArrayListString();

String num = "";

for (int i = 0; i str.length(); i++) {

if(Character.isDigit(str.charAt(i))){

num = num + str.charAt(i);

}else{

if(num != ""){

result.add(num);

}

result.add(str.charAt(i) + "");

num = "";

}

}

if(num != ""){

result.add(num);

}

return result;

}

/**

* 将中缀表达式转化为后缀表达式

* @param inOrderList

* @return

*/

public ArrayListString getPostOrder(ArrayListString inOrderList){

ArrayListString result = new ArrayListString();

StackString stack = new StackString();

for (int i = 0; i inOrderList.size(); i++) {

if(Character.isDigit(inOrderList.get(i).charAt(0))){

result.add(inOrderList.get(i));

}else{

switch (inOrderList.get(i).charAt(0)) {

case '(':

stack.push(inOrderList.get(i));

break;

case ')':

while (!stack.peek().equals("(")) {

result.add(stack.pop());

}

stack.pop();

break;

default:

while (!stack.isEmpty() compare(stack.peek(), inOrderList.get(i))){

result.add(stack.pop());

}

stack.push(inOrderList.get(i));

break;

}

}

}

while(!stack.isEmpty()){

result.add(stack.pop());

}

return result;

}

/**

* 计算后缀表达式

* @param postOrder

* @return

*/

public Integer calculate(ArrayListString postOrder){

Stack stack = new Stack();

for (int i = 0; i postOrder.size(); i++) {

if(Character.isDigit(postOrder.get(i).charAt(0))){

stack.push(Integer.parseInt(postOrder.get(i)));

}else{

Integer back = (Integer)stack.pop();

Integer front = (Integer)stack.pop();

Integer res = 0;

switch (postOrder.get(i).charAt(0)) {

case '+':

res = front + back;

break;

case '-':

res = front - back;

break;

case '*':

res = front * back;

break;

case '/':

res = front / back;

break;

}

stack.push(res);

}

}

return (Integer)stack.pop();

}

/**

* 比较运算符等级

* @param peek

* @param cur

* @return

*/

public static boolean compare(String peek, String cur){

if("*".equals(peek) ("/".equals(cur) || "*".equals(cur) ||"+".equals(cur) ||"-".equals(cur))){

return true;

}else if("/".equals(peek) ("/".equals(cur) || "*".equals(cur) ||"+".equals(cur) ||"-".equals(cur))){

return true;

}else if("+".equals(peek) ("+".equals(cur) || "-".equals(cur))){

return true;

}else if("-".equals(peek) ("+".equals(cur) || "-".equals(cur))){

return true;

}

return false;

}

public static void main(String[] args) {

Calculate calculate = new Calculate();

String s = "12+(23*3-56+7)*(2+90)/2";

ArrayList result = calculate.getStringList(s); //String转换为List

result = calculate.getPostOrder(result); //中缀变后缀

int i = calculate.calculate(result); //计算

System.out.println(i);

}

}

java正则表达式是什么?

java正则表达式是为\d+\.{0,1}\d*。需要转义反斜杠,所以有两个反斜杠。这个正则表达式表示整数或者小数\d+表示1个或多个0到9的数字,是整数部分至少是一位整数的整数部分0,1表示0个或1个小数点,因为点在正则表达式中表示任意字符,所以这里需要用转义符。

使它变回原来的小数点的意思,0,1表示0或1个,也就是可以有或者没有小数点\d*表示0个或多个0到9的数字,是小数部分,0个时表示这个数没有小数部分,只有整数部分。

java的概念

使用单个字符串来描述。匹配一系列符合某个语句规则的字符串,定义了字符串的模式。正则表达式主要用于字符串中,为方便字符串操作,文本的复杂处理。

字符串的操作主要有四种,匹配、切割、替换、获取。匹配一些字符串,根据题目要求。

java字符串表达式的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java字符串表达式转布尔值、java字符串表达式的信息别忘了在本站进行查找喔。