Java学习(四)之运算符

Java 运算符

用来指明对于操作数的运算方式
按照操作数的数目来进行分类
单目 a++
双目 a+b
三目 (a>b)?x:y;

按照运算符的功能进行分类
算术运算符
+, -, *, /, %,++(自增), --(自减)
int a = 1;
b = a++; //b输出为1, ++在前,先自增后备份,++在变量后面,先备份再自增,会将副本空间内的值赋值给别人
int a = 1;
a = a++; // a输出为1,因为先备份了一个 a ′ a^{'} a=a, 然后a自增,所以原来的a变量空间的值变成了2,最后=号将副本空间 a ′ a^{'} a里的值赋值给a, 所以a的最后结果是1。


public class Demo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int m=1;
		System.out.println(m++);
		m = m++;
		System.out.println(m);
	}
}
//输出
1
2
public class Demo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int m = 1;
		int n = 2;
		int sum = m++ + ++n - n-- - --m + n-- - --m;
		System.out.printf("m = %d n = %d sum = %d", m, n, sum);
	}
}
//输出
m = 0 n = 1 sum = 2

赋值运算符
 = 赋值符号,将=右边的内容(值,引用)存入=左边的变量空间内
 +=, -+, *=, /=, %=,

关系运算符(比较):作为一个条件的判断
 > >= < <= != == (对象instanceof类)
 1.区分=和 == 区别
  = 是赋值符号,将=后面的结果(值 引用)存入=左边的变量内
  == 比较符号,比较前后的元素(值 引用)是否一致
 2.比较运算符的最终结果是什么?
  最后的结果是boolean类型,true false
逻辑运算符:判断多个条件
 &逻辑与 |逻辑或 ^逻辑异或 !逻辑非
 &&短路与 || 短路或
 逻辑运算符前后连接的两个布尔型的结果,最终的结果也是布尔型
  &逻辑与 可以理解为中文的“和”,&前后两个条件必须同时满足 最终才为true
  |逻辑或 可以理解为中文的“或者”,|前后两个条件只要有一个满足最终就为true
  ^逻辑异或 前后两个结果不一致最终就为true
  !逻辑非 将原来的结果取反
  &&短路与
  (3>4) && (3<2) 如果第一个条件为false时,最终肯定为false
  1.短路什么情况下才会发生:当前面的值结果为false的时候会发生短路
  2.短路究竟短路什么:短路的是&&之后所有计算结果
  3.如果发生了短路情况,性能比&稍微好一点
  4.&逻辑与和&&短路与从执行的最终结果来看没有任何区别
  5.&&短路与不一定可以提高性能,只有当前面为false才会发生短路,才会提高性能
  ||短路或
  (3>2) || (3>4) —> true || false —> true
  如果当第一个条件为true,最终结果一定是true
位bit运算
 &按位与 |按位或 ^按位异或 ~按位取反
 << 按位左位移 >>按位右位移 >>>按位右位移(无符号)
  1.最有效率的方式计算 2*8的结果
   2<<3相当于2乘以2的3次幂,
   00000010 —>00010000 == 16
   乘数刚好是2的次幂,就可以通过左移进行计算
  2.两个变量int a=1;int b=2;如何将两个值进行交换(不采用额外的空间)
   1)利用两个数的和,
     int a=1;
     int b=2;
     a = a+b
     b = a-b
     a = a-b
    缺点:在加和的过程中可能会出现越界
   2)利用异或:A ^B ^B = A,一个数字异或同一个数字两次,值不会改变
     a = a^b;
     b = a^b;
     a = a^b;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值