2-4 变量 数据类型 运算符

运算符(operator)

 算术运算符

1.+,-,*,/,%属于二元运算符。%是取模运算符,就是我们常说的求余数操作。

2.算术运算符中++(自增),--(自减)属于一元运算符。

二元运算符的运算规则:

整数运算:

如果两个操作数有一个为long, 则结果也为long。

没有long时,结果为int。即使操作数全为short,byte,结果也是int。

浮点运算:

如果两个操作数有一个为double,则结果为double。

只有两个操作数都是float,则结果才为float。

取模运算:

其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如:7%3=1,-7%3=-1,7%-3=1。

赋值及其扩展赋值运算符 

 

 关系运算符

关系运算符用来进行比较运算。关系运算的结果是布尔值:true/false;

 =是赋值运算符,而真正的判断两个操作数是否相等的运算符是==。

==、!= 是所有(基本和引用)数据类型都可以使用。

>、>=、<、<= 仅针对数值类型(byte/short/int/long,float/double 以及char)。

 逻辑运算符

逻辑运算的操作数和运算结果都是boolean值。

短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。 

 boolean b3 = 1>2&(4<3/0);  //会报错 无法执行

位运算符

&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是boolean类型,就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符。

不要把“^”当做数学运算“乘方”,是“位的异或”操作。

/**
*测试逻辑位运算符的用法
*/
public class TestOperator05{
	
	public static void main(String[] args){
		int a = 7;
		int b = 8;
		System.out.println(a&b);//结果0
		System.out.println(a|b);//结果15
		System.out.println(a^b);//结果//15
		System.out.println(~b);//结果-9
		//移位
		//乘以2,除以2,使用移位操作最快!!!
		int c = 5<<1;  //5*2
		
		System.out.println(c);
		
		System.out.println(40>>3);//相当于40/8
	}
}

 字符串连接符

“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

/**
*测试字符串连接符的用法
*/
public class TestOperator0{
	
	public static void main(String[] args){
		String a = "3";
		int b = 4;
		System.out.println(a+b);
		//条件是String,不是char 若不是则仍然是加法
		char c1 = 'h';
		char c2 = 'i';
		System.out.println(c1+c2);
		System.out.println(""+c1+c2);//通过加字符串,让整个符号都变成连接符
	}
}

条件运算符    运算符优先级的问题

 x 为boolean 类型表达式,先计算x 的值,若为true,则整个运算的结果为表达式y 的值,否则整个运算结果为表达式z的值。

 不需要去刻意的记这些优先级,表达式里面优先使用小括号来组织!!

逻辑与、逻辑或、逻辑非的优先级一定要熟悉!(逻辑非>逻辑与>逻辑或)。如:

a||b&&c的运算结果是:a||(b&&c),而不是(a||b)&&c

/**
*测试条件(三元)链接符· 优先级问题用法
*/
public class TestOperator06a{
	
		public static void main(String[] args){
			int score = 90;
			String a = score < 60?"不及格":"及格";
			System.out.println(a);
			if(score<60){
				a = "不及格";
			}else{
				a = "及格";
			}
			
			int x = -100;
			int flag =x > 0 ? 1 : (x == 0 ? 0 : -1);
			System.out.println(flag);//结果-1
				
				//优先级问题用法
				boolean s1=true,s2=true,s3=false;
				System.out.println(s1||s2&&s3);//逻辑运算符:非>与>或
				
				//建议使用小括号住址表达式
				boolean s4 =(3>1||4>3)&&(3<5);
				System.out.println(s4);	
			}
				
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值