黑马程序员技术交流社区

标题: 看视频笔记——运算符 [打印本页]

作者: 愿㊡╃數曐曐メ    时间: 2013-5-28 21:52
标题: 看视频笔记——运算符
一)~ (先转整,再运算)
二)算术运算符 (先转整,再运算)
三)移位运算符(先转整,再运算)
   要移位的数  移位运算符  移几位
>>:带符号右移,移位运算符    在进行移位之前,先将其转整  ,然后再进行运算。
   int x=8;
   int y=  x>>2;
注:要移位时候, 化二进制
(左边补符号位,右边舍去)
0    0000    0
1    0001   1
2    0010   2
3    0011   3
4    0100   4
5    0101   5
6    0110   6
7    0111   7
8    1000    8
9    1001    9
10  1010   a
11   1011  b
12   1100  c
13   1101  d
14   1110  e
15   1111  f

00 00000000 00000000 00000000 000010   

16
0 0000000 0000000 0000000  0001000    (8)
00 0000000 0000000 0000000  000100     (4)
000 0000000 0000000 0000000  00010     (2)
000 0000000 0000000 0000000  0001       (1)
相当于除2操作

用效率最高的方法完成对一个数的减半操作
int x=8;
int y=x/2;

int x =-8;
int y=x>>2;

除法的效率低
移位的效率高(节省时间)
00000000 00000000 00000000 00001000
11111111 11111111 11111111 11110111
1 11111111 11111111 11111111 1111100  (-3)
11 11111111 11111111 11111111 111110   (-2)

-1
0001
1110
1111

0000 0001
1111 1110
1111 1100
byte x=8;
byte y=x>>1;
           y=int
<<:带符号左移
   意:左边的东东被舍去,右边补0
int x=8;
int y=x<<2;
0  0000000 00000000 00000000 00001000
0000000 00000000 00000000 000010000  (16)
000000 00000000 00000000 0000100000   (32)

带符号左移相当于乘2操作
>>>:无符号右移
注意:左边始终补0,右边舍去

byte x=10;
byte z=x>>>2;

四)比较运算符(>.<.>=.<=.==.!=)

他们的结果是一个boolean
int x=10;
int y=20;
boolean z=x>y;   

int x=10;
int y=10;
boolean z=x>=y;
true

五)位操作(再进行运算之前,先转整,再运算
几位啊?化二进制
&(按位与)
【】
【】
-----
【】

公式:
0
0
---
0

0
1
---
0

1
0
---
0

1
1
--
1
int x=8;
int y=9;
z=x&y;
  byte z=  int
00000000 00000000 00000000 00001000   x
00000000 00000000 00000000 00001001   y
---------------------------------------------------
00000000 00000000 00000000 00001000    z8


|(按位或)

0
0
--
0

1
0
--
1

0
1
--
1

1
1
--
1

00000000 00000000 00000000 00001000   x
00000000 00000000 00000000 00001001   y
---------------------------------------------------
00000000 00000000 00000000 00001001  z


^(按位异或)

0
0
--
0

1
0
--
1


0
1
--
1


1
1
---
0

相同为 0
不同为1


规则:两次异或还得原值

int surce=8;

int pass=15;

int des=source^pass=7;
1000
1111
------
0111      7

int z=des^pass;
0111
1111
------
1000      8


凡是带“位”字 都是先转整,再运算。
四则运算
~
位操作运算符号的优先级都比算数运算符的优先级低( r)
~
+-
&|^


逻辑操作
&&   (逻辑与)
boolean x=true;
boolean y=false;
boolean z=x&&y;
如果x和y是boolean值,那么其结果也是boolean值。
x  true   (1)
y  false  (0)  &
---------
    false
&&:有逻辑短路的显现!!!!!!
A&&B&&C
A  false  后面就不算了,不管了 ,整个表达式的值是false
A  true  要看B
                     false  后面就不算了,不管了 ,整个表达式的值是false
                     true   要看c
                                       false   整个表达式的值是false
                                       true   整个表达式的值是true
Ex:
public class T
{
    public static void  main(String[] args)
   {
       int x=10;
       int y=8;
       int z=2;
       boolean zz=   (x<y)&&(++z>0);
       System.out.println(zz); //false
       System.out.println(z); //2  
}
}

作者: 袁梦希    时间: 2013-5-28 21:57
加油哥们   嘿嘿
作者: 愿㊡╃數曐曐メ    时间: 2013-5-28 22:09
袁梦希 发表于 2013-5-28 21:57
加油哥们   嘿嘿

谢谢袁哥!因为学校的事一直忙,进入这一环节,刚进来有点乱,视频每天也在抓紧看。毕竟学校专业是电信,所以得加油努力!需要大家的帮助!:handshake
作者: Jacky_Chen1990    时间: 2013-5-28 22:10
我都忘记了。。。。
作者: 神之梦    时间: 2013-5-28 22:42
加油!!
作者: 曹思敏    时间: 2013-5-28 22:49
不错;复习一遍;学习ING~!
作者: 天外的星    时间: 2014-5-9 13:22
整理的很详细,不用自己整理了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2