6.运算符

一. 算术运算演示

新建ArithmeticOperatorDemo.java

//演示算术运算符
class ArithmeticOperatorDemo
{
	public static void main(String[] args) 
	{
		//操作数
		System.out.println(1+2);
		System.out.println(1-2);
		System.out.println(1*2);
		System.out.println(1/2);
		System.out.println("-----------------");
		//操作字符
		System.out.println('A'+'B');
		//操作字符串
		System.out.println("Hello"+"World");

		System.out.println(10/3);//省略小数
		System.out.println(903273/1000*1000);
		//System.out.println(100/0);//原因:by zero

		//无穷大:Infinity,double由于精度不确定,相当于一个数除以一个无穷小的数
		System.out.println(100.0/0);
		System.out.println(-100/0.0);

		System.out.println(0.0/0.0);//这个数不存在:NaN

		int i1;
		i1=1;
		System.out.println(i1==i1);//true

		double d1;
		d1=0.0/0.0;
		System.out.println(d1==d1);//false
	}
}

二. 自增,自减

  • ++:表示当前变量自己累加1;
  • –:表示当前变量自己减1;
  • 只能操作变量,不能常量。

  • 代码中result++和++result,都使result变量加1;
  • 唯一区别:
  • 前置(++result):表示result加1之后的结果进行运算。
  • 后置(result++):表示result加1之前的值(原始值)进行运算。
  • 如果仅仅执行简单的递增操作,那么选用任意一个都可以。

建立ArithmeticOperatorsDemo2.java

//自增,自减
class ArithmeticOperatorsDemo2 
{
	public static void main(String[] args) 
	{
		int a1 = 5;
		int b1;
		b1 = ++a1;
		System.out.println("a1:" + a1 + "," + "b1:" + b1);//a1=6,b1=6

		System.out.println("-----------");
		int a2 = 5;
		int b2;
		b2 = a2++;
		System.out.println("a2:" + a2 + "," + "b2:" + b2);//a2=6,b2=5
	}
}

三. 自增,自减,面试题目

新建ArithmeticOperatorDemo3.java

class ArithmeticOperatorDemo3
{
	public static void main(String[] args) 
	{
		int i=5;
		++i;
		System.out.println("i:" + i);//i=6
		i++;
		System.out.println("i:" + i);//i=7

		int a;
		a= ++i;
		System.out.println("a:" + a);//a=8
		System.out.println("i:" + i);//i=8

		int b;
		b= i++;
		System.out.println("b:" + b);//b=8
		System.out.println("i:" + i);//i=9

	}
}

四. 赋值运算符

  • =,+=,-=,*=,/=,%=。
  • +=:自带隐式转化。

新建AissgnmentOperatoresDemo.java

//赋值运算符的演示
class AissgnmentOperatores
{
	public static void main(String[] args) 
	{
		short s = 8;
		//s = s + 1;//编译出错,大转小
		s += 1;
		System.out.println("s:" + s);
	}
}

五. 比较运算符

  • ==,>,<,<=,>=.
  • 结果为boolean类型;

新建ComparisonOpratorDemo.java

//比较运算符的演示
class ComparisonOperatorDemo 
{
	public static void main(String[] args) 
	{
		boolean b = 4 == 4;//==的优先级大于=的优先级
		System.out.println(b);
		System.out.println(4 != 4);
	}
}

六. 三元运算符

表达式?结果a:结果b

//三元运算符
class TernaryOperatorDemo 
{
	public static void main(String[] args) 
	{
		/*
			需求:让小数四舍五入
		*/
		double num = 5.5;
		int num0 =(int)num;
		double num1 = num -5;
		int result = num1 >= 0.5 ? num0 + 1 : num0; 
		System.out.println("result:" + result);

		//判断两个数的大小,求最大值
		int arg1 = 3;
		int arg2 = 5;
		int arg3 = arg1 > arg2 ? arg1 : arg2;
		System.out.println("arg3:" + arg3);

		//求这个数的奇偶

		int i3 = 3;
		String s1 = i3 % 2 == 0 ? "偶数" : "奇数";
		System.out.println("s1:" + s1);
	}
}

七. 分页业务逻辑

新建PageDemo.java

//分页业务逻辑演示
class PageDemo 
{
	public static void main(String[] args) 
	{
		/*
			一共82条数据,每页最多十条
			计算:一个多少页
		*/
		int totalCount = 80;
		int pageSize = 10;

		int totalPage;
		totalPage= totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
		System.out.println("totalPage:" + totalPage);
		
		//下一页
		int currentPage = 8;
		int nextPage = currentPage + 1 > totalPage ? totalPage : currentPage + 1;
		System.out.println("nextPage:" + nextPage);
	}
}

八. 逻辑运算符

image

  1. &和&&的区别:

    1. A & B

      当前面为false时,继续执行B。

    2. A && B

      当前面为false时,不会再执行B。

  2. | 和 || 的区别:

    1. A | B

      当前面为true是,继续执行B

    2. A || B

      当前面为true时,不再执行B

  3. A ^ B

     当两边boolean值相同时,为false,不同时为true
    

新建LogicalOperatorDemo.java

//逻辑运算符Demo
class  LogicalOperatorDemo
{
	public static void main(String[] args) 
	{

		//System.out.println(false & (1 / 0 == 0));//出错
		System.out.println(false && (1 / 0 == 0));

		System.out.println("--------------");
		//System.out.println(true | (1 / 0 == 0));//出错
		System.out.println(true || (1 / 0 == 0));

		System.out.println("--------------");
		System.out.println(true ^ true);//false
		System.out.println(false ^ false);//false
		System.out.println(false ^ true);//true
		System.out.println(true ^ false);//true
	}
}

九. 位运算符

image

  • &,|,^的运算

新建BitOperatorDemo.java

//位运算符
class BitOperatorDemo 
{
	public static void main(String[] args) 
	{
		/*
			3二进制:011
			5二进制:101

					011
				&	101
			--------------
					001
		*/
		System.out.println(3 & 5);//1
		System.out.println(3 | 5);//7
		System.out.println(3 ^ 5);//6
	}
}
  1. “<<”:将操作数的二进制码整体往左移,右移后空的使用“0”来补充
  2. “>>”:将操作数的二进制码整码体往右移,右移后使用“符号位”来补充:
    1. 若是整数用“0”补充;
    2. 若是负数用“1”补充;(操作负数:取反,求补,操作,取反,求补)
  3. “>>>”:将操作数的二进制码右移指定位数,右移后的空位使用“0”来补充。

对BitOperatorDemo.java进行修改

class BitOperatorDemo 
{
	public static void main(String[] args) 
	{
...
		/*
			2的二进制:
			00000000_00000000_00000000_00000010
			左移3位:
			00000000_00000000_00000000_00010000

			-16的二进制:
			原10000000_00000000_00000000_00010000
			反11111111_11111111_11111111_11101111
			补11111111_11111111_11111111_11110000
			右移3位:
			补11111111_11111111_11111111_11111110
			反11111111_11111111_11111111_11111101
			原10000000_00000000_00000000_00000010
		*/
		System.out.println("-------------");
		System.out.println(2 << 3);//16
		System.out.println(2 >> 5);//0,当位数不够时为0
		System.out.println(-16 >> 3);//-2
		System.out.println(-16 >> 7);//-1当位数不够时为-1
		System.out.println(-16 >>> 3);
	}
}

十.交换两个数

新建SwapDemo.java

//交换两个数
class SwapDemo 
{
	public static void main(String[] args) 
	{
		//使用中间变量交换
		int a =5;
		int b =4;
		int c;
		c = a;
		a = b;
		b = c;
		System.out.println("a:" + a + "," + "b:" + b);

		//使用差
		//获得两个数之间的差
		a = a - b;
		//小的数加上差的值赋值给b1
		b = b + a;
		//把大的数减去差赋值给a1
		a = b - a;
		System.out.println("a:" + a + "," + "b:" + b);

		//使用异或
		a = a ^ b;
		//下面等值于 b = a ^ b ^ b;
		//现在b的值为a
		b = a ^ b;
		//下面等值于 a = a ^ b ^ a;
		a = a ^ b;
		System.out.println("a:" + a + "," + "b:" + b);

		//栈调换
		//定义Integer类型的栈
		Stack<Integer> stack = new Stack<Integer>();
		//分别把a,b压如栈中
		stack.push(a);
		stack.push(b);
		//把栈顶元素取出赋值给a
		a = stack.pop();
		//把栈顶元素赋值给b
		b = stack.pop();
		System.out.println("a:" + a + "," + "b:" + b);
	}
}

十一. 运算数的操作优先级

image

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值