第四章 运算符


前言

这章我们继续来学习基础知识,本章除了会介绍算术、逻辑、关系、赋值等基本运算符外,还会对进制转换(程序员必备素养)进行讲解。


一、运算符介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
主要有以下几类:
(1)算术运算符
(2)赋值运算符
(3)关系运算符
(4)逻辑运算符
(5)位运算符(需要二进制基础)
(6)三元运算符

二、详细介绍及举例

1.算术运算符

1.介绍
算术运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。
2.算术运算符一览
在这里插入图片描述
3.代码演示:
(重点演示 / 、%、++,其余的可以类推)

public class Arithmetic{
	public static void main(String args[]){
		//  / 的使用
		System.out.println(10/4);//从数学来看是2.5,Java中是2
		System.out.println(10.0/4);//Java中是2.5
		double d=10/4;//Java中10/4=2,2转换成double型是2.0
		System.out.println(d);//结果2.0

		//  %的使用
		//解释:%的本质是一个公式!!!a%b=a-a/b*b
		//例-10%3=>-10-(-10)/3*3=-10+9=-1,其他以此类推
		System.out.println(10%3);//1
		System.out.println(-10%3);//-1
		System.out.println(10%-3);//1
		System.out.println(-10%-3);//-1

		//  ++的使用
		//说明:++i先自增后赋值,i++先赋值后自增
		int i=5,j=5;
		int x=i++;//等价于x=i,i=i+1  =>x=5,i=6;
		int y=++j;//等价于j=j+1,y=j  =>j=6,y=6
		System.out.println("x="+x+"   i="+i);//5 6
		System.out.println("y="+y+"   j="+j);//6 6
	}
}

运行结果:
请添加图片描述
4.细节说明
(1)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法,只保留整数部分而舍弃小数部分。
(2)对一个数取模运算,可以等价a%b=a-a/b*b,具体应用看上面代码实例。
(3)当自增“++”(或自减)当作一个独立语言使用时,不管i++还是++i都是一样的,当作表达式使用时则不同。

2.关系运算符(比较运算符)

1.介绍
关系运算符的结果都是boolean型,也就是要么是true,要么false,该运算符常用在if结构的条件中或循环结构的条件中。
2.关系运算符一览
请添加图片描述

3.代码演示

public class Relational {
	public static void main(String[] args) {
		int a = 9; 
		int b = 8;
		System.out.println(a > b); //T
		System.out.println(a >= b); //T
		System.out.println(a <= b); //F
		System.out.println(a <b);//F
		System.out.println(a == b); //F
		System.out.println(a != b); //T
		boolean flag = a > b; //输出flag验证
		System.out.println("flag=" + flag);//T
	}
}

运行结果如图所示:
请添加图片描述

3.逻辑运算符

1.介绍
用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值。
2.逻辑运算符一览
分为两组学习

  1. 短路与 && , 短路或 ||,取反 !
  2. 逻辑与 &,逻辑或 |,^ 逻辑异或
    请添加图片描述
    3.代码演示
    以&和&&为例进行演示,其他以此类推
public class Logic {
	public static void main(String[] args) {
		//&&短路与使用
		int age = 50;
		if(age > 20 && age < 90){
			System.out.println("ok100");
		}
		//&逻辑与使用
		if(age > 20 & age < 90) {
			System.out.println("ok200");
		}
		//区别
		int a = 4;
		int b = 9;
		//对于&&短路与而言,如果第一个条件为 false ,后面的条件不再判断
		//对于&逻辑与而言,如果第一个条件为 false ,后面的条件仍然会判断
		if(a < 1 &&++b < 50) {
			System.out.println("ok400");//
		}
		System.out.println("a=" + a + " b=" + b);// 4 9
		if(a < 1 & ++b < 50) {
			System.out.println("ok300");//
		}
		System.out.println("a=" + a + " b=" + b);// 4 10
	}
}

运行结果如图所示:
请添加图片描述
4.细节说明
(1) &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
(2) & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
(3)开发中我们基本是使用短路与&&, 效率高

4.赋值运算符

1.介绍
赋值运算符就是将某个运算后的值,赋给指定的变量。
2.赋值运算符的分类

  • 基本赋值运算符 = eg: int a = 10;
  • 复合赋值运算符
    += ,-= ,*= , /= ,%= 等 , 稍后以 +=为例 ,其它的使用是一个道理。
    eg: a += b; [等价 a = a + b; ]
    3.代码演示
public class Assign{
	public static void main(String[] args) {
		int n1 = 10;
		n1 += 4;// n1 = n1 + 4;
		System.out.println(n1); // 14
		n1 /= 3;// n1 = n1 / 3;//4
		System.out.println(n1); // 4
		//复合赋值运算符会进行类型转换
		byte b = 3;
		b += 2; // 等价 b = (byte)(b + 2);
		b++; // b = (byte)(b+1);
	}
}

运行结果如图所示:
请添加图片描述
4.细节说明
(1) 运算顺序从右往左 int num = a + b + c;
(2) 赋值运算符的左边 只能是变量,右边可以是变量、表达式、常量值。eg: int num = 20; int num2= 78 * 34 - 10; int num3 = a;
(3) 复合赋值运算符等价于下面的效果
比如:a+=3;等价于 a=a+3; 其他类推。
(4) 复合赋值运算符会进行类型转换,详情看上面代码演示。

5.三元运算符

1.基本语法
条件表达式 ? 表达式 1: 表达式 2;
运算规则:
(1)如果条件表达式为 true,运算后的结果是表达式 1;
(2)如果条件表达式为 false,运算后的结果是表达式 2;
2.代码演示

public class Ternary {
	public static void main(String[] args) {
		int a = 10;
		int b = 99;
		int result = a > b ? a++ : b--;
		// 解读
		// 1. a > b 为 false
		// 2. 返回 b--, 先返回 b 的值,然后在 b-1
		// 3. 返回的结果是 99
		System.out.println("result=" + result);//99
		System.out.println("a=" + a);//10
		System.out.println("b=" + b);//98
	}
}

运行结果如图所示:

请添加图片描述
3.使用细节
(1) 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
(2) 三元运算符可以转成 if–else 语句
【int res = a > b ? a++ : --b;
if ( a > b) res = a++;
else res = --b;】

三、运算符优先级

1.运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行。
2.只有单目运算符、赋值运算符是从右向左运算的。
3。一览表, 不要背,使用多了,就熟悉了.
请添加图片描述

接下来会介绍标识符、关键字、各个进制间转换及原补反码。
未完待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值