06 Java语言基础语法 - 3

第三章 运算符


运算符 - 上


表达式的概念

概念:程序是由许多语句组成的,语句的基本单位就是表达式,表达式由操作数和运算符组成。

x = 1 ;
y = x + 2 ;
z = ( x * 3 ) + ( y - 22 ) ;

运算符主要分为以下几类:
算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符

算术运算符

在这里插入图片描述
强调:字符串加上任何数据类型都是字符串连接。

public class OperatorDemo{
	public static void main(String[] args){
		int num1=100;
		int num2=200;
		int num3=num1+num2;
		System.out.println(num3);
		
		String s="我是字符串";//引用数据类型
		System.out.println(s);
		System.out.println(s+num1);
		String s1="100";
		System.out.println(s1+100);
		//字符串加什么都是字符串
		System.out.println(num2+s1+num1);

		//自增 ++
		// 如果++放后面,叫做后置自增,每次自增+1,是会先赋值,再自增。
		int a=1;
		int a1=a++;
		System.out.println(a1);			// 1
		// ++可以放前面,会先自增,再赋值
		int b=1;
		int b1=++b;
		System.out.println(b1);			// 2
	}
}

赋值运算符

通用的形式:变量名=表达式

  • 复合赋值运算符
    在这里插入图片描述
    提示:还可以和位运算符构成复合赋值运算符,例如: ^=、<<=等。
public class OperatorDemo{
	public static void main(String[] args){
		int a2=1;
		a2+=6;			//a=a+6
		System.out.println(a2);

		short ss=1;
		ss += 6;	//在这里6默认为short型,s+=6; → s=s+6
		// ss = ss+1;	
		// 有什么区别?这个会报错因为1为int型,ss为short型,ss+1为int型,
		//赋值给ss,short型,精度高的转换给精度低的报错。
		System.out.println(ss);
	}
}

关系运算符

在这里插入图片描述
提示:关系运算符的返回结果是boolean类型的值。

public class OperatorDemo{
	public static void main(String[] args){
	// 关系运算符
	int num5 = 1 ;
	int num6 = 1 ;
	System.out.println( num5 == num6 );		//true
	System.out.println( num5 != num6 );		//false
	}
}

运算符 - 下


逻辑运算符

在这里插入图片描述

public class OperatorDemo2{
	public static void main(String[] args){
		int num1=10;
		int num2=11;
		int num3=12;
		boolean flag=flase;
		// 与
		System.out.println((num1>num2)&&(flag=num2<num3));
		// &&短路与,条件1不成立,不判断条件2
		System.out.println("&&短路与:"+flag);
		System.out.println((num1>num2)&(flag=num2>num3));
		// & 与,条件1不成立,判断条件2
		System.out.println("&:"+flag);

		// 或
		System.out.println((num1>num2)||(flag=num2<num3));
		// 短路或,条件1成立,不判断条件2
		System.out.println(flag);
		System.out.println((num1<num2)|(flag=num2<num3));
		System.out.println(flag);

		System.out.println(!(num1>num2));
	}
}

位运算符

位运算符是对二进制的直接运算。
在这里插入图片描述
计算机作二进制运算用的是补码。
3 0000 0011
原码: 0000 0011 第一位是符号位,1表示负数,0表示正数。
反码: 0000 0011
(1) 正数的反码和原码一样;
(2) 负数的反码是保留符号位,其余的按位取反。
1000 0011(原码)→ 1111 1100(反码)
补码: 0000 0011
(1) 正数 的反码和原码和补码都一样
(2) 负数 的补码=负数反码+1
1000 0011(原码)→ 1111 1100(反码) → 1111 1101

public class OperatorDemo3{
	public static void main(String[] args){
		int num1=128;
		int num2=129;
		
		System.out.println("num1与num2:"+(num1&num2));//128
		/*
			 0000 0000 1000 0000(补)
			&0000 0000 1000 0001(补)
			---------------------------
			 0000 0000 1000 0000(补)
		*/

		System.out.println("num1或num2:"+(num1|num2));//129
		/*
			 0000 0000 1000 0000(补)
			|0000 0000 1000 0001(补)
			---------------------------
			 0000 0000 1000 0001(补)
		*/
		
		System.out.println("非num1:"+(~num1));//-129
		/* 
			0000 0000 1000 0000(补)
			1111 1111 0111 1111(补)
			---------------------------
			1000 0000 1000 0001(原码)
		*/
		System.out.println(2<<3);
							//2向左移动三个单位 *2^3 16
		System.out.println(16>>3);
							//2向右移动三个单位 /2^3  2
		System.out.println(-16>>>3);
							//无符号移动,无论正负,高位均补0	 536870910
		System.out.println(-16>>3);
							//2向右移动三个单位 /2^3  -2
		
	}
}

运算符优先级

在这里插入图片描述

提示:当搞不清楚运算符之间优先级的时候,自己多添加小括号不妨是一个很好的解决方案。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值