0


大数据Java入门DAY3

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

2、数据类型:
A:基本数据类型
整数类型: byte 1个字节 -2^72^7-1
short 2个字节 -2^15
2^15-1
int 4个字节 -2^312^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

如图:

标签: 大数据 java

本文转载自: https://blog.csdn.net/qq_52400447/article/details/122309276
版权归原作者 16年义务教育 所有, 如有侵权,请联系我们删除。

“大数据Java入门DAY3”的评论:

还没有评论