JAVA运算入门


|-- 算术运算符

|-- 比较(关系)运算符
|-- 逻辑运算符
|-- 自加和自减运算符
|-- 赋值运算符
|-- 三目运算符
|-- 位运算符

程序控制流程(三大流程)
	|-- 顺序
	|-- 选择
	|-- 循环

算术运算符:
+
-
*
/
%

算术运算符的注意问题

如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。

对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部

分。

“+”除字符串相加功能外,还能把非字符串转换成字符串 。“+”运算符两侧的操作数中只要有一个

String类型,一个是基本数据类型时,编译成class文件后,两个操作数就被连接成了一个新的String值。

比较(关系)运算符:
>
<
>=
<=
!=
==

比较运算符的结果是boolean类型

逻辑运算符:
连接多个条件的关联关系的

与	&&	&	   // 表示的是并且关系,全部为真则为真,否则为假
或	||	|	  // 表示或者的关系,只要一者为真则为真,全部为假才为假
非	!		   // 否定,取反

&& ||
短路与
短路或

知道结果不做更多的判断

短路与/或的效率更高,在编程建议使用短路与和短路或

自加和自减运算符:
++a
a++
--a
a--

JAVA运算入门

前加加和后加加的优先级别不同引起的!!!!!
前加加的优先级别非常高,仅次于括号
后加加的优先级别非常非常低,甚至比赋值符都低

int a = 10;

int b,c ;

b = a++;

b = 10;

a =11;//因为优先级低所以先赋值再自加

c = ++a;

a = 12;//先自加才赋值

b = 12;


赋值运算符:
= // 将等号右侧的值赋给左侧的变量

双目运算符
+= // a += 10   等价于  a = a + 10
-= //同理
*=
/=
%=

三目运算符:
表达式 ? 值1: 值2
int a = 10;
int b = 20;
int c = a > b ? 100 : 200;

如果表达式成立,把值1赋给C

如果表达式不成立,把值2赋给C


位运算符:
计算机底层本质是二进制(半导体)运算

计算机底层使用的二进制运算

进制:
	人类最长的使用的10进制	
	10个个位数:
		0 1 2 3 4 5 6 7 8 9   逢10进1

	二进制:
		个位数只有2个:
			0   1

   一个字节即8位
   无符号的时候:
   1111 1111  255	最大值
   0000 0000   0	最小值	0~255	256个值

   基于正数的二进制运算
   byte a = 5
   byte b = 10
   0000 0101
   0000 1010
   a + b
   0000 0101
   0000 1010
---------------
   0000 1111    15
    
	

正数的源码、反码、补码一致,也就是正数没有源码、反码、补码之说

源码:数值的二进制状态码
反码:符号位不变,其余各位取反,得到的就是反码
补码:反码+1,就是补码

计算机底层本质上来说,是以补码运行的!!!!

引入负数
符号位的概念
最高位来表示数值的正负:0表示正数;1则表示该数是个负数
byte c = -1
byte d = 2
1000 0001	
0000 0010
1000 0011	-3
那么用源码去算就会出现问题
(正数的源码、反码、补码一致,也就是正数没有源码、反码、补码之说)
源码:数值的二进制状态码
反码:符号位不变,其余各位取反,得到的就是反码
补码:反码+1,就是补码
计算机底层本质上来说,是以补码运行的!!!!
0000 0010		2
-1
1000 0001		源码
1111 1110		反码
1111 1111		补码

   0000 0010            2
   1111 1111            -1的补码 
1 0000 0001            -1
因为以字节方式存储所以舍弃最高位 结果为 1

0000 0001   1
1000 0011    -3
-3 + 1	= -2

0000 0001    1
1111 1101     -3的补码
1111 1110     -2的补码

1111 1110            
             -1
1111 1101     -2的反码
最后结果
1000 0010	-2

无符号时
有符号的时候
0111 1111	+127	
1000 0000	-128(将-0变为-128)
-128~127	256个值


八进制:	0561

十六进制:0~9 ABCDEF	0xAF89AD
    
位运算       
&	// 与运算
|	// 或运算符
^	// 异或运算
~	// 按位取反
// 下面三个叫做移位运算
<<	左移运算符:二进制的补码向左移动(左移比较简单不涉及符号位)
>>	有符号右移运算:高位补1
>>>	无符号右移运算:高位补0


int a = 2;
计算机底层以二进制按位存储数据
让a从2变成8的最快方式是左移两位
a << 2
a = 8

& | ^    
int a = 10;
int b = 11;

a & b;		// 都为真,则为真
a | b;		// 一者为真,则为真
a ^ b;		// 相反为真

0000 1010
0000 1011	&  与运算
---------------
0000 1010	10

0000 1010
0000 1011	|  或运算
-----------
0000 1011	11

0000 1010      异或运算
0000 1011	^  位不同,相反,才为真
---------
0000 0001	1
            

 

上一篇:python中的操作符


下一篇:汇编