组团学

运算符与表达式

阅读 (122718)

1、运算符与表达式

**运算符:**是用来计算数据的指令。数据可以是常量,也可以是变量。被运算符操作的数成为操作数。

**表达式:**通俗的说,即通过使用运算符将操作数联系起来的式子。

例如:

3+2,使用算数运算符将操作数联系起来,这种情况,我们称为算数表达式。

3>2,使用比较运算符(也称为条件运算符)将操作数联系起来,这种情况,我们称为条件表达式。

2、算术运算符

将操作数参与数学计算,就是我们的算术运算

image20191209122037370.png

2.1、基础运算

完成基础的加、减、乘、除、取余数的运算

/*
 基础运算:
*/
public class ExprDemo01{
  public static void main(String args[]){
    int a=12,b=3;
 		//基本的加、减、乘、除、取余数的运算
    System.out.println("a+b="+(a+b));
    System.out.println("a-b="+(a-b));
    System.out.println("a*b="+(a*b));
    System.out.println("a/b="+(a/b));
    System.out.println("a%b="+(a%b));
  }
}

运行结果:

image20191202105709861.png

2.2、特殊运算

2.2.1、加法与减法特殊运算

(1)加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。

(2)减法运算符在使用的时候,可以表示负数。

/*
 加法与减法特殊运算:
*/
public class ExprDemo02{
  public static void main(String args[]){
    int a=12,b=3;
 		//加法运算符在这里表示连接字符串
    System.out.println("a="+a);
    //减法运算符在这里表示的是负号
    System.out.println("-a+b="+(-a+b));
  }
}

运行结果:

image20191202110739538.png

2.2.2、除法与取余数特殊运算

(1)除法“/”当两边为整数时,取整数部分,舍余数。当两边为浮点型时,按正常规则相除。

/*
 除法与取余数特殊运算:
*/
public class ExprDemo03{
  public static void main(String args[]){
    int a=12,b=3;
    double c=12.4,d=3.4;
    //除法“/”当两边为整数时,取整数部分,舍余数。当两边为浮点型时,按正常规则相除。
    System.out.println("a/b="+a/b);
    System.out.println("c/d="+c/d);
  }
}

运行结果:

image20191202111644173.png

(2)“%”为整除取余符号,取余结果的符号与被取余数的符号相同。小数取余没有意义。得到的是两个相除数据的余数。用处: 判断两个数据是否整除。

//改变b的值
b=5;
//“%”为整除取余符号,取余结果的符号与被取余数的符号相同
System.out.println("a%b="+a%b);
System.out.println("-a%b="+(-a%b));
//小数取余没有意义
System.out.println("c%d="+c%d);
//判断两个数据是否整除,如果为0表示整除
System.out.println("a%b="+a%b);

运行结果:

image20191202112545091.png

(3)整数做被除数,0不能做除数,否则报错。

//改变b的值
b=0;
//0不能做除数,否则报错
System.out.println("a/b="+(a/b));

运行结果:

image20191202112908767.png

2.3、自增、自减

2.3.1、单独使用

前置与后置效果相同,均为直接+1或-1

/*
自增、自减----单独运算:
*/
public class ExprDemo04{
  public static void main(String args[]){
 		//++运算,单独使用都一样
    int a=12;
    a++;
    System.out.println("a++="+a);
    a=12;
    ++a;
    System.out.println("++a="+a);
    //--运算,单独使用都一样
    a=12;   
    a--;
    System.out.println("a--="+a);
    a=12;
    --a;
    System.out.println("--a="+a);
  }
}

运行结果:

image20191202113818671.png

2.3.2、混合使用

自增():将变量的值加1,分前缀式(如i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。

自减(–):将变量的值减1,分前缀式(如–i)和后缀式(如i–)。前缀式是先减1再使用;后缀式是先使用再减1。

/*
自增、自减----混合运算:
*/
public class ExprDemo05{
  public static void main(String args[]){
 		//前缀式:先+1,在使用
    int a=12;
    System.out.println("++a="+(++a));
    //后缀式:先使用,后+1
    a=12;
    System.out.println("a++="+(a++));
   
    //前缀式:先-1,在使用
    a=12;
    System.out.println("--a="+(--a));
    //后缀式:先使用,后-1
    a=12;
    System.out.println("a--="+(a--));
  }
}

2.3.3、自增与自减运算符还遵循以下规律:

(1)可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。

(2)在Java5.0及以上版本中,它们可以用于基本类型对应的包装类Byte、Short、Integer、Long、Float、Double、Character。

(3)它们的运算结果的类型与被运算的变量的类型相同。

3、赋值运算符

为变量完成初始化及变量的值的改变的运算符

image20191202115308159.png

3.1、案例:

/*
	赋值运算符:
	=,+=,-=,*=,/=,%=
	运算符的运算规则:
	先将运算符两边进行+,-,*,/,%运算,在把结果赋值给左边的变量
	注意事项:运算符左边必须是一个变量
	特点:隐含一个强制类型转换
	*/
public class ExprDemo06{
		public static void main(String[] args){
			int a = 10;
			a += 20;//相当于 a = a + 20;
			System.out.println("a = " + a);

			//5 += 6;//错误: 意外的类型,这里5的位置需要一个变量

			byte b = 10;
			b += 100;//+=隐含了一个强制类型转换 相当于b = (byte)(b + 100);
			System.out.println("b = " + b);
		}
}

运行结果:

image20191202115835101.png

4、比较运算符

又叫关系运算符,即判断两个操作数的大小关系及是否相等关系,比较运算符的返回一定为布尔值,也就是要么是true,要么是false。

image20191202115942864.png

4.1、案例:

public class ExprDemo07{
		public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;
        System.out.println(a == b);
        System.out.println(a == c);
        System.out.println("-----------------");
        System.out.println(a != b);
        System.out.println(a != c);
        System.out.println("-----------------");
        System.out.println(a > b);
        System.out.println(a > c);
        System.out.println("-----------------");
        System.out.println(a >= b);
        System.out.println(a >= c);
        System.out.println("-----------------");
        int x = 3;
        int y = 4;
        //System.out.println(x == y);
        //System.out.println(x = y);// 把y赋值给x,把x的值输出
        boolean bb = (x == y);
  			System.out.println("bb="+bb);
        // 报错
        //boolean cc = (x = y);
        int cc = (x = y);
        System.out.println("cc="+cc);
     }
}

运行结果:

image20191202135456792.png

5、逻辑运算符

用于计算两个布尔值经过指定逻辑后的运算结果,结果同样是一个布尔值.

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 && x<6 。

image20191202120522172.png

5.1、案例:

public class ExprDemo08{
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
        System.out.println((a > b) && (a > c));// false && false
        System.out.println((a < b) && (a > c));// true && false
        System.out.println((a > b) && (a < c));// false && true
        System.out.println((a < b) && (a < c));// true && true
        System.out.println("---------------");
        System.out.println((a > b) || (a > c));// false || false
        System.out.println((a < b) || (a > c));// true || false
        System.out.println((a > b) || (a < c));// false || true
        System.out.println((a< b) || (a < c));// true || true
        System.out.println("---------------");
        int x = 3;
        int y = 4;
        System.out.println((x++ > 4) && (y++ > 5)); // false && false
        System.out.println("x:" + x);
        System.out.println("y:" + y);
        System.out.println("---------------");
        System.out.println((a > b));// false
        System.out.println(!(a > b));// !false
        System.out.println(!!(a > b));// !!false
    }
}

运行结果:

image20191202121502181.png

6、三元运算符

接下来我们要学习的三元运算符与之前的运算符不同。之前学习的均为一元或者二元运算符。元即参与运算的数据。

格式:(条件表达式)?表达式1:表达式2;

三元运算符运算规则:

先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2。

三元运算符,最终一定会产生一个结果值,这个值必须被使用起来。要么被运算符使用,要么被打印

6.1、案例:

/*
	三元运算符:求两个数的最大值,判断两个数是否相等
 
	格式:
	(条件表达式) ? 表达式1 : 表达式2;
 
	执行流程:
	首先判断条件表达式是否成立
	true:表达式1作为3元运算符的结果
	false:表达式2作为3元运算符的结果
 
	注意:
	三元运算符,最终一定会产生一个结果值,这个值必须被使用起来。
	要么被运算符使用,要么被打印
	*/
	public class ExprDemo09{
    public static void main(String[] args){
        int a = 10;
        int b = 20;
        int max = (a > b) ? 10 : 20;
        System.out.println("max = " + max);

        int c = 15;
        int d = 10;
      
        //三元运算符,最终一定会产生一个结果值,这个值必须被使用起来
        System.out.println((c != d) ? "相等" : "不相等");
        String s = (c != d) ? "相等" : "不相等";
        System.out.println("s = " + s);

        //(c != d) ? "相等" : "不相等";//错误: 不是语句
    }
	}
需要 登录 才可以提问哦