3java运算符

1数学运算符

基本的数学运算符:+,-,*,/,%(余),++(自加),--(自减)

1.1同类型参与运算可能需要自动类型转换

例:

		byte by = 127;
		byte by1 = 127;
		System.out.println(by+by1);	//输出254,byte的最大值是127,当运算后的值超过边界时,就会自动转换类型
		
		byte by2 = (by+by1);		//如:这句就会报错,强制转换后就不会得到向要的结果

1.2不同类型运算会自动转换类型

例:

		int a = 3;
		double d = 3.3;
		double c = a+d;		//输出6.3

解析:

当a+b运算时,会先将整型的a转换为double类型的数据在进行运算

1.3整数的除法是整除

例:

		int a = 9;
		int b = 5;
		System.out.println(a/b);	//输出1,小数点后面的直接去掉,不会四舍五入

1.4byte和char,shor运算

注意的是:这三类数据进行运算时,都会先转换成int类型在进行运算

例:

		char a = 'a';
		char b = 'b';
		char c = a+b;		//这句会报错,需要强制类型转换
		int i =a+b;			//输出 195 ,应为char类型的其实是一个字符的Unicode编码值
		
		byte by = 3;
		byte by1 = 3;
		byte by3 = by+by1;	//这句会报错,需要强制类型转换
		int by4 = by+by1;
		
		short s = 4;
		short s1 = 4;
		short s3 = (short) (s+s1);	//将int型强制转换成short型啊,输出8

1.5java字面量

java字面量的运算被javac优化。java中有个规则:字面量运算编译时要做优化

例:

		int i = 7+4;
		//7和4就是字面量
		//7+4编译时会自动加为11,之后才赋值给i

1.6余数

		int n = 5;
		System.out.println(n%7);	//商=0,余=5 
						//输出5

*注意的是:

1,0对其它数的余数都是0;

2,n%3是周期函数,函数值[0,3)。

3,负数的余数是负数


1.6自增自减

例:

//		后++
		int i = 3;
		int a = i++;	//a=3,i=4
		//解析
		//i++是表达式
		//1,先取出i的值3,作为i++表达式的值。所以a就等于3;
		//2,然后i这个变量会还是会自加1
		System.out.println(a+","+i);	//输出3,4
		
		
//		先++
		int n = 5;
		int b = ++n;	//b=6,n=6
		//解析
		//++n是一个表达式
		//1,先n先自加n=6,在将n的值赋值给b
		System.out.println(b+","+n); 	//输出6,6

*所以不管是++i,还是i++,变量i的值都会自加1

只是当作为表达式时,赋值不一样:i++是先赋值在自加,++i是先自加在赋值


2关系运算符

关系运算符:>(大于),<(小于),<=(小于等于),>=(大于等于),==(引用等于),!=(不等于)


3位运算

位运算符:&(与),|(或),^(),  ~(),<<(左移),>>(右移),>>>(右移补零)

例:

a =60,b=15

A = 0011 1100

B = 0000 1111

————————

&运算结果:       0000 1100,如果两个都为1就为1,否者为0;

|运算结果:         0011 1111,只自要其中一个为1就为1,两个为0才为0;

^运算结果:         0011 0011,向对应的两个相同就为0,不相同为1;

~A运算结果:       1100 0011,将1变为0,将0变为1;

A<<2运算结果:   1111 0000,将位数往左边移动两位

A>>2运算结果:           1111,往右移两位

A>>>2运算结果:0000 1111,往右移,空位用零补充



4逻辑运算

逻辑运算符:&&(与),||(或),!(非)

逻辑&&,||,称为短路与,或,是做逻辑比较操作

例:

		int i = 4;
		int n = 5;
		System.out.println((i>3)&&(n>3));	//输出true。要所有条件成立,才为true,否者为false
		System.out.println((i>3)&&(n>8));	//输出false。因为n>8不成立
		
		System.out.println((i>3)||(n>8));	//输出true。自要一个条件成立就为true
		System.out.println((i>8)&&(n>3));	//输出false。两个条件都不成立时为false
		
		System.out.println(!(i>5)); 	//输出true。!是反着来的
		//解析
		//i>5 = false
		//!(i>5) = true
		//也就是将false变为true,将true变为false


5赋值运算

赋值运算符:

= 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C
+ = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C + = A等价于C = C + A
- = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C - = A等价于C = C -
 A
* = 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C * = A等价于C = C * A
/ = 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 C / = A等价于C = C / A
(%)= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 C%= A等价于C = C%A
<< = 左移位赋值运算符 C << = 2等价于C = C << 2
>> = 右移位赋值运算符 C >> = 2等价于C = C >> 2
&= 按位与赋值运算符 C&= 2等价于C = C&2
^ = 按位异或赋值操作符 C ^ = 2等价于C = C ^ 2
| = 按位或赋值操作符 C | = 2等价于C = C | 2


6条件运算

条件运算符:(?:),也叫三目运算

例:[条件表达式?表达式1:表达式2]

		int i = 10;
		int b;
		b = ((i==10)?30:20);
		//判断条件i==10是否成立,成立b=30
		//否者b=20;
		System.out.println(b);	//输出30


7运算符的优先级

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

类别 操作符 关联性
后缀 () [] . (点操作符) 左到右
一元 + + - !〜 从右到左
乘性  * /% 左到右
加性  + - 左到右
移位  >> >>>  <<  左到右
关系  >> = << =  左到右
相等  ==  != 左到右
按位与 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 | | 左到右
条件 ?: 从右到左
赋值 = + = - = * = / =%= >> = << =&= ^ = | = 从右到左
逗号 左到右




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值