漫漫Java路1—基础知识4—运算符,Scanner类和循环拓展

分类和优先级

image-20210310144507147

image-20210310144706803

重点运算符详解

  • &(与)

    位同为1时结果为1,否则为0

    a=111000110101;
    b=100110001001;
    c=a&b;
    c=100000000001;
    
  • |(或)

    a=111000110101;
    b=100110001001;
    c=a|b;
    c=111110111101;
    
  • ~(取反)

    a=111011;
    c=~a;
    c=000100;
    
  • a^b(异或)

    相同为0 ,不同为1

    a=111000110101;
    b=100110001001;
    c=a^b;
    c=011110111100
    
  • >>>
    

    "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0.

    注:左移右移其实就是进位,在2进制里其实就是乘除2

  • ?:

    1==1?a++:b++;
    

    if语句的简化

短路运算

在逻辑运算的时候,如果前面的运算已经可以判断出表达式的值,这时程序就不会执行后面的表达式

tips:用同一个值进行异或运算两次的结果不变

a=a^b;
b=a^b;//b=a^b^b=a
a=a^b;//a=a^b^a=b

这时我们突然发现,a和b换位了,而且,没有引入第三变量,在位运算中有很多技巧,后面的文章会逐步赘述

指数运算

其实自带的Math类有许多方法,学Java的时候,要学会看源码,通过官方库来规范自己的编程书写标注,观察别人的思路,还有看懂源码和使用

Math.pow(2,3)

Scanner类

image-20210310175456411

image-20210310175811437

image-20210310175845486

for

for(int x:a){
    //其实就是把数组或其他数据结构的值随着循环逐个传给x
    //每次赋值之后都会执行代码体
}
posted @ 2021-03-10 23:24  l1j1ng  阅读(116)  评论(0)    收藏  举报