Java初级篇—运算符

Java运算符

运算符用来指明对于操作数的运算方式
      (一)、按照运算符操作其运算的数目来进行分类

  • 单目运算符(a++)
  • 双目运算符(a+b)
  • 三目运算符(a>b?a:b)
    (二)、按照运算符的功能来进行分类
  • 算术运算符(+ 、-、 *、 /、 %、 ++、 --)
int x = 1;//代码在栈内存空间中开辟了一个名字叫做x的空间,然后将常量区的1复制一份放入到x所在的空间。
x = x + 1;//先将x中的1取出来放入到一个临时空间,然后再将常量区中的1拷贝一份与临时空间的1相加,再放回到x所在的内存空间。
int x = 1;
y = x++;//x++相当于x=x+1;将变量空间的内容取出来,常量区取出1,进行计算,再次存回到空间。x想要做值交换的时候,会产生一个副本空间。(备份)
//如果++在前,先自增后备份。++在后,先备份后自增。 

例如下列图片所示:
内存图
笔试题防坑指南例题:

int a = 1;
for(i = 0;i <= 100; i++){
	a = a++;
}
system.out.println(a);//1

答案解析:此题并不是考察循环而是考察变量赋值问题。
首先声明一个a变量空间,然后将常量区的1复制一份到a空间,a++表示先备份然后自增,即先产生一个临时空间存储x空间的值然后x空间的值自增变为2,最后再将临时空间里面的值赋给x空间,因此将x空间的值给覆盖了变为了1。

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

其中赋值运算符有自动提升类型和自动转化的功能

例如:

byte x = 1;
x += 2;//自动类型提升和转化
x = x + 2; //编译出错,从int类型转化为byte可能会有损失
//上面解决方案:x = (byte)x + 2;
  • 关系运算符
    (>、>=、<、<=、!=、==、对象instanceof类)

1、=和==的区别
赋值符号(=):将后面的值或引用存入左边的变量空间
比较运算符(==):比较==前面与后面的值或引用是否一致
2、比较的结果最终是什么?
答:3>4;比较的结果是boolean类型。

  • 逻辑运算
    逻辑或(|)、逻辑与(&)、逻辑异或(^)、逻辑非(!)、短路与(&&)、短路或(||)

1、逻辑符的前后应该是两个boolean类型的结果
2、逻辑与前后两个条件必须同时满足才为true
3、逻辑或前后两个条件只要满足一个就为true
4、逻辑异或只要前后两个表达式的结果不同,最终为true
5、逻辑非将原来的结果取反
6、短路与前面的结果为false时,发生短路;短路之后的所有计算的过程。(即后面的表达式不会执行)

  • 位(bit)运算
    (按位与&、按位或|、按位异或^、按位取反~、按位左位移<<、按位右位移>>、按位无符号右位移>>>)

计算方法:
1、先将数值转化成二进制形式
2、竖着按照对应的位置进行计算
3、将计算后的二进制结果转换成十进制

知识补充:

原码、反码、补码(以二进制形式表示)

(1)原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

[+1]原 = 0000 0001
[-1]原 = 1000 0001

(2)反码的表示方法是:
         正数的反码是其本身
         负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反

(3)补码的表示方法是:
         正数的补码就是其本身
         负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补

三连博主,每天分享一个编程小技巧!

阅读更多

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值