2.运算符

2.1 算术运算符

   基本四则运算符 + - * / %

规则比较简单,值得注意的是除法:

 a)int / int 结果还是int,需要使用double来计算。

int a = 1;
int b = 2;
System.out.println(a/b);
//结果为0

b) 0不能作为除数

int a =1;
int b =0;
System.out.println(a/b)
//运行结果
Exception in thread "main"java.long .ArithmeticException : / by zero
 at Test.main(Test.java:5)

c) %表示取余,不仅仅可以对int求模,也能对double来求模

System.out.println(11.5%2.0);
//运行结果
1.5

增量赋值运算符 += -= *= /= %=

int a = 10;
a+=1;  //等价于 a=a+1
System.out.println(a);

自增/自减运算符 ++ --

int a =10;
int b =++a;
System.out.println(b);
int c = a++;
System.out.println(c);

结论:

    1.如果不取自增运算的表达式的返回值,则前置自增和后增没有区别。

    2.如果取表达式的返回值,则前置自增的返回值是自增之后的值,后置自增的返回值是自增之前的值。

2.2关系运算符

  == != < > <= >=

int a = 10;
int b = 20; 
System.out.println(a == b); 
System.out.println(a != b); 
System.out.println(a < b); 
System.out.println(a > b); 
System.out.println(a <= b); 
System.out.println(a >= b);

注意:关系运算符的表达式返回值都是booean类型。

2.3逻辑运算符

 逻辑运算符主要有三个:

  && || !

  注意:逻辑运算符的操作数和返回值都是boolean

  逻辑与 &&

  规则:两个操作数都是为true,结果为true,否则为false

int a = 10;
int b = 20;
int c = 30;
System.out.println(a<b && b<c);

  逻辑或||

  规则:两个操作数都为false,结果为false,否则为true

int a = 10;
int b = 20;
int c = 30;
System.out.println(a<b || b<c)

  逻辑非!

    规则:操作数为true,结果为false;操作数为false,结果为true(这个是单目运算符,只有一个操作数)。

int a = 10;
int b = 20;
System.out.println(!a<b);

  短路求值

    &&和||遵守短路求值的规则。

System.out.println(10>20&&10/0==0); //打印false
System.out.println(10<20||10/0==0); //打印true

我们都知道,计算10/0会导致程序抛出异常。但是上面的代码却能正常运行,说过10/0并没有真正被求值。

结论:

   1.对于&&,如果左侧表达式值为false,则表达式的整体的值一定是false,无需计算右侧表达式。

   2.对于||,如果左侧表达式值为true,则表达式的整体的值一定是true,无需计算右侧表达式。

 &和|

 &和|如果操作数为boolean的时候,也表示逻辑运算。但是和&&以及||相比,它们不支持短路求值

System.out.println(10>20&10/0==0);
System.out.println(10<20|10/0==0);

2.4 位运算符

  java中对数据的操作的最小单位不是字节,而二进制位

  位运算符主要有四个:

  & | ~ ^

 位操作表示按二进制位运算。计算机中都是使用二进制来表示数据的,按位运算就是在二进制位的每一位依次进行计算。

 按位与&:如果两个二进制位都是1,则结果为1,否则结果为0

int a = 10;
int b = 20;
System.out.println(a&b);

进行按位运算,需要先把10和20转化成二进制,分别为1010和10100

按位或 | :如果两个二进制都是0 ,则结果为0,否则结果为1

int a = 10;
int b = 20;
System.out.println(a|b);

 运算方式和按位于类似

 注意:当&和7|的操作数位整数(int,short,long,byte)的时候,表示按位运算,当操作数位boolean的时候,表示逻辑运算。

 按位取反~:如果该位为,则转为1,如果为0,则转为0

int a = 0xf;
System.out.printf("%x\n",~a);

注意:

      1.0x前缀的数字为 十六进制可以看成是二进制的简化表示方式。一个十六进制数字对应4个二进制位。

      2.0xf表示10进制的15,也就是二进制的1111。

      3.printf能够格式化输出内容,%表示按照十六进制输出。

      4.\n表示换行符。

 按位异或^:如果两个数字的二进制位相同,则结果为0,则结果为1。

int a = 0x1; 
int b = 0x2; 
System.out.printf("%x\n",a^b);

2.5 移位运算

 移位运算符有三个:

   << >> >>>

  都是按照二进制位来运算

  左移<<:最左侧位不要了,最右侧补0

int a = 0x10; 
System.out.printf("%x\n", a << 1); 
// 运行结果(注意, 是按十六进制打印的) 
20

右移>>:最右侧位不要了,最左侧补符号位

int a = 0x10; 
System.out.printf("%x\n", a >> 1); 
// 运行结果(注意, 是按十六进制打印的) 
8 
 
int b = 0xffff0000; 
System.out.printf("%x\n", b >> 1); 
// 运行结果(注意, 是按十六进制打印的)
ffff8000

 无符号位右移>>>:最右侧位不要了,最左侧补0.

int a = 0xffffffff; 
System.out.printf("%x\n", a >>> 1); 
// 运行结果(注意, 是按十六进制打印的) 
7fffffff

注意:

      1.左移1位,相当于原数字*2,左移N位,相当于原数字*2的N次方。

      2.右移1位,相当于原数字/2,右移N位,相当于原数字/2的N次方。

      3.由于计算机计算移位效率高于计算乘除,当某个代码正好乘除2的N次方的时候可以用移位运算代替。

      4.移动负数或者移位位数过大没有意义。

2.6 条件运算符

  条件运算符只有一个:

      表达式1?表达式2:表达式3

      当表达式的值为true时,整个表达式的值;当表达式1的值为false时,整个表达式的值为表达式3的值。

      也是java中唯一的一个三目运算符,是条件判断语句的简化写法。

//求两个整数的最大值
int a = 10;
int b = 20;
int max = a>b?a:b;

2.7运算符的优先级

   先看一段代码

     System.out.println(1+2*3);

结果为7,说明先计算2*3,再计算1+

另外一个例子

     System.out.println(10<20&&20<<30);

此时明显是先计算的10<20和20<30,再计算&&,否则20&&20这样的操作是语法上有误的(&&的操作数只能是boolean).

运算符之间是有优先级的,具体规则我们不必记忆,在可能时加上括号即可。

2.8小结

    1.%操作再java中也能针对double来计算。

    2.需要区分清楚 前置自增 和 后置自增 之间的区别。

    3.由于java是强类型语言,因此对于类型检查比较严格,因此像&&之类的运算操作数必须是boolean。

    4.要区分清楚&和|什么时候表示按位运算,因此像&&之类的运算操作数必须是boolean。

整体来看,java的运算符的基本规则和C语言基本一致。

3.注释

     注释是为了让代码更容易被读懂而附加的描述信息,不参与编译运行,但是却非常重要。

   3.1 基本规则

      java中的注释主要分为一下三种

           单行注释://注释内容(用的最多)

           多行注释:/*注释内容*/

           文档注释:/**文档注释*/

   3.2注释规范

   

1. 内容准确 : 注释内容要和代码一致 , 匹配 , 并在代码修改时及时更新 .
2. 篇幅合理 : 注释既不应该太精简 , 也不应该长篇大论 .
3. 使用中文 : 一般中国公司都要求使用中文写注释 , 外企另当别论 .
4. 积极向上 : 注释中不要包含负能量 ( 例如 领导 SB ).

       4.关键字  

 

  

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值