大数据Java入门DAY3

1、变量:在程序的执行过程中,其值可以发生改变的量叫变量。
    定义变量的格式:
        1、数据类型 变量名 = 初始化值;
        2、数据类型 变量名;
          变量名 = 初始化值;

2、数据类型:
    A:基本数据类型
       整数类型: byte    1个字节   -2^7~2^7-1
                          short   2个字节   -2^15~2^15-1
                           int     4个字节     -2^31~2^31-1
                           long    8个字节   -2^63~2^63-1
        浮点类型: float   4个字节     
                           double  8个字节
        字符类型:  char    2个字节
         布尔类型: boolean 1个字节
    B:引用数据类型

    自动类型转换:
        byte,short,char在参与运算的时候会自动提升到int类型
        由大的数据类型接收小的数据类型,会自动转换,不会报错。
    强制类型转换
        由小的数据类型接收大的数据类型,会报错,接收不了,这时候需要强制类型转换
        格式:目标数据类型 目标变量名 = (目标数据类型)要转换的数值/变量

 例:byte b=(byte)130
     计算机运算采用补码的形式参数运算,所以需要把130换为二进制。
     130的二进制为:10000010
     130为整数默认为int型
     130的原码,反码,补码都为 00000000 00000000 00000000 10000010
     所以已知补码 10000010求原码
               得反码 10000001
               原码    11111110
           所以结果为-126

3、运算符:
   (1) 算术运算符:+,-,*,/,%

     /运算取整数,若想获得小数(5*1.0/2)
    ++:符号在前先自增,再赋值(a=4;b=++a    a=5;b=5)  符号在后,先赋值再自增;--同理。

   (2) 赋值运算符:=,+=,-=,*=,/=,%=

例:a=b,把b赋值给a;
 int a=10;a+=40;输出50,这里可以看作a的值增加了40再赋值给a,但不能完全当作a=a+40.
接上面  a-=10;输出40
            a*=2;输出80
            a/=4; 输出20
            a%=3;输出2

(3)  比较运算符:==,>,<,>=,<=,!=(结果都是Boolean型,所以接收只能是Boolean变量接收)

  例:int a=10;  int b=20;
      System.out.println("a==b");  输出结果为false
      System.out.println("a<b");     输出结果为true
      System.out.println("a<=b");  输出结果为true
      System.out.println("a!=b");  输出结果为true

  (4)逻辑运算符:&,|,^,!,&&,||
     &运算左右都为真结果为true,否则false
     |运算只要有一边为真结果为true
     !运算使结果相反,true变false
     异或(^)运算时,左右结果相同,结果为false
     &&运算结果与&运算相同,执行的东西不同
     ||运算结果与|运算相同,执行的东西不同

      &运算不管左右结果如何,两边都参加运算;&&运算时,若左边为假则右边不参加运算。

      如图,当a=7,a++==7为真,左右两边都参加运算;当a=7,a++==8为假,因为a++需先赋值在自增,所以右边b++==没有参加运算,输出的b还是8
   
     ||运算同理,若左边为真,则右边不参与运算。

 

 

    (5)位运算符:&,|,^,~,<<,>>,>>>  (对二进制进行运算)
    &运算 :二进制中和0运算结果为0,与1运算结果为原值
   例:6&3
        6的二进制:00000110
        3的二进制:00000011
            结果     :00000010
           所以6&3输出的结果为2

    |运算:二进制中与0运算结果为原值,与1运算结果为1
     例:6|3
           6的二进制:00000110
           3的二进制:00000011
            结果:        00000111
            所以6|3的结果为7

     ^运算:相同二进制运算结果为0,不同二进制运算结果为1
    例:6^3
           6的二进制:00000110
           3的二进制:00000011
              结果:      00000101
               所以6^3的结果为5

~运算:0变1,1变0(反码)
    例:~6
           6的二进制:00000110
                运算得:11111001
             已知补码 : 11111001
               求反码: 11111000(负数,符号位不变)
                   原码:10000111
            所以~6的结果为-7

  <<运算:二进制左移,右边用0补齐,多余的舍弃。
  例:3<<2
     3的二进制:00000000 00000000 00000000 00000011
     因为3是正数,原码补码反码都一样。
     3的补码:   00000000 00000000 00000000 00000011
   左移2位: (00)00000000 00000000 00000000 00001100  (补码)
    最高位为0,所以为正数,既是补码也是原码
    所以结果为 12
    
   >>运算:二进制右移,左边最高位是0用0补齐,最高位是1用1补齐,多余舍弃。
  例:24>>2
     24的二进制:00000000 00000000 00000000 00011000
       24为正数,原码补码反码一样
      24的补码:  00000000 00000000 00000000 00011000
       右移2位 :  00000000 00000000 00000000 00000110(00)
        最高位为0,既是补码也是原码
      所以结果为6

   例:-24>>2
    -24的二进制是:10000000 00000000 00000000 00011000
    已知原码求补码:
                  原码:10000000 00000000 00000000 00011000
                  反码:11111111 11111111 11111111 11100111
                  补码:11111111 11111111 11111111 11101000
             右移2位:11111111 11111111 11111111 11111010(00)  (补码)
     已知补码求原码:
                 补码:11111111 11111111 11111111 11111010
                 反码:11111111 11111111 11111111 11111001
                 原码:10000000 00000000 00000000 00000110
            所以结果为-6

   >>>运算:无符号右移,无论最高位是0还是1,都用0补齐,多余舍弃。
    例:-24>>>2
        -24的二进制是:10000000 00000000 00000000 00011000
    已知原码求补码:
                  原码:10000000 00000000 00000000 00011000
                  反码:11111111 11111111 11111111 11100111
                  补码:11111111 11111111 11111111 11101000
   无符号右移2位:00111111 11111111 11111111 11111010(00)  (补码)
              最高位为0,所以是正数,原码反码补码一样,所以这就是最后的结果。

拓展:3<<2(12=3*2^2)
          24>>2(6=24/(2^2))
    
   (6)  三目运算符:(关系表达式)?表达式1:表达式2;
       如果关系表达式为true,运算的结果为表达式1
       如果关系表达式为false,运算的结果为表达式2
如图:

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>