Java中的数据类型,数据类型转换,变量的声明及使用,原码,反码,补码,Java中的运算符作用及优先级。

一,java的数据类型:

数据类型:同属来说是定义同一类型数据的操作总称;

数据类型分为:基本数据类型和引用数据类型;

1基本数据类型:

1,数值型:整数类型和浮点类型;

整数类型  byte(1字节),short(2字节),int(4字节),long(8字节);

浮点型:float(4字节),double(8字节)

2,字符类型 char(2字节)

3,布尔类型 boolean(1字节)

4,整型变量默认为int 类型,浮点型默认为double类型

注意:

1,char类型占两个字节,采用Unicode码。

2,所有的基本数量类型长度固定,在不同硬件和操作系统中不会发生改变

3,通常情况下,同一数据类型占用的字节数越大表示的数值范围越大,但是不同数据类型,占用的字节数相同,表示的范围不相同。

2引用数据类型:除了基本数据类型外,其他的都是引用数据类型

如:字符串类型,数组,枚举,类等都属于引用类型。

3基本数据类型转换:

自动类型转换:(从小到大)char->byte—>short—>int—>long->float—>double;

       char默认情况下自动转换为int类型;

      boolean不能和其他类型进行转换

强制类型转换:从大道小,和自动类型转换相反。

二,变量:

1,常量跟变量:

常量:通俗来说就是程序运行时不会发生改变的量;

变量:通俗来说就是程序运行时会发生改变的量;

2,变量的声明及其使用:

1变量声明以及赋值

方法一

数量类型 变量名 ;

变量名=变量值

如 int  i;

i=10;

方法二

数据类型 变量名=变量值;

2变量的使用

在使用变量前必须要给变量赋值,否则编译不通过,因此在使用变量时,必须先声明变量和赋值。

例如:

int i;

Sysout.out.println(i);

错误写法,没有赋值

int i=10;

Sysout.out.println(i);

正确写法

3,变量的命名规则

1,变量必须以字母,"_"和"$"开头。

2,变量可以包含数字(不能放开头位置)和中文(强烈不建议使用)

3,除了"_"和"$"以外,不能使用其他特殊符号。

4,不能使用Java中的关键字(Java中有特殊含义的单词如 int class public等)

三,原码,反码,补码

原码:将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式。

正数的原码反码补码都是他本身,

负数的补码 在原码的基础上,符号位不变,其余各位取反

负数的补码:在补码的基础上加上1。

例如:5 原码反码补码都是(00000101)

-5 原码(10000101)反码(11111010)补码(11111011)

四,Java中的运算符作用及优先级

1,赋值运算符:

"="  用于给变量赋值,把右边的表达式或者值赋给左边,如 int i=10;把10赋给i;

2,算术运算符:

"+" 数学中的(+)一样;

"-" 数学中的(-)一样;

"*" 数学中的(×)一样

"/" 数学中的(÷)一样

"%" 取余运算,相当于数学中两个数相除的余数

"++"  自增运算符 ++在前,先自增在运算,++在后,先运算在自增;

"--"  自减运算符 --在前,先自减在运算,--在后,先运算在自减;

注意:% 运算时 两个数相除,没有除尽时,余数的符号看被除数,被除数为正,余数为正,被除数为负,余数为负,被除数为0余数为0

3,关系运算符:

">"  大于

"<" 小于

">=" 大于等于

"<=" 小于等于

"=="  等于

"!="  不等于

注意:关系运算符比较的结果是布尔类型,">"和"<" ,">=" ,"<=" 只能比较数值类型的变量,"=="  ,"!="  可以比较数值,布尔,引用类型,前面四个的优先级大于后面两个的优先级。

4,逻辑运算符

& 逻辑与 :两个操作数为true时,结果才为true,不管左边的值是否为false,右边的表达式都会进行运算

| 逻辑或 :两个操作数有一个为true,则结果为true,不管左边的值是否为true,右边的表达式都会进行运算

^ 逻辑异或:两个操作数相同,结果为false,两个操作数不同,结果为true

!逻辑非(逻辑反):操作数为true,结果为false,操作数为false,结果为true

&& 短路与:两个操作数为true时,结果才为true,左边的值为false,右边的表达式不会再进再行运算。

|| 短路或 :两个操作数有一个为true,则结果为true,左边的值为true,右边的表达式不会再进行运算

注意:操作数类型和运算结果都是布尔类型,优先级排行 !> &>^>|>&&>||

5,位运算符(二进制运算)

& 按位与:    两个操作数为1,结果才为1

| 按位或:  两个操作数,  有一个操作数为1

^ 按位异或:两个操作数相同为0,不相同为1

~ 取反     操作数为0,结果为1,操作数为1,结果为0 

<< 左移   右侧空位补0 

>>右移 左侧空位补符合位(最高位)

>>>无符合右移(左侧空位补0)如 -4>>>1 在int的情况下为2147483646,在long的情况下结果为9223372036854775806(byte,short 不能表示出结果,内存溢出,结果取值范围大于他们表示的范围)

总结:

1,按位与&:

两个数都为正,则直接进行操作数比较,都为1 则为1,反之为0,  如4(00000100)&5(00000101)结果为4(00000100)

两个数都为负 ,则:1 求负数的补码 ,2,对补码进行&运算,符合位不变,3 高位不变其余取反,最后一位再加1

如 -4(10000100)& -5(10000101)对应的补码为(11111100),(11111011),都为1 则为1,反之为0,结果为(11111000),高位不变其余取反,最后一位再加1(10001000)结果为-8(10001000)

两个数异号:1,求出负数的补码,2,和正数进行&运算,符合位也要进行运算,3直接求结果

如-4(10000100)& 5(00000101),-4的补码为(11111100)& 5(00000101)结果为4(00000100)

2,按位或 |:

两个数都为正,则直接进行操作数比较,有一个为1 则为1,反之为0,  如4(00000100)|5(00000101)结果为4(00000101)

两个数都为负 ,则:1 求负数的补码 ,2,对补码进行|运算,符合位不变,3 高位不变其余取反,最后一位再加1

如 -4(10000100)| -5(10000101)对应的补码为(11111100),(11111011),一个为1 则为1,反之为0,结果为(11111111),高位不变其余取反,最后一位再加1(10000001)结果为-1(10001000)

两个数异号:1,求出负数的补码,2,和正数进行|运算,符合位也要进行运算,符合位不变,3 高位不变其余取反,最后一位再加1

如-4(10000100)| 5(00000101),-4的补码为(11111100)| 5(00000101)结果为(11111101)符合位不变,高位不变其余取反,最后一位再加1 结果为-3(100000011)

3逻辑异或 ^ : 

两个都为正数:直接对两个数进行^运算 如4(00000100)^5(00000101)结果为 1(00000001)

两个数都为负 ,则:1 求负数的补码 ,2,对补码进行^运算,符合位不变,3 直接得结果

如 -4(10000100)^-5(10000101)对应的补码为(11111100),(11111011),相同为0,不同为1,结果为7(00000111)

两个数异号:1,求出负数的补码,2,和正数进行^运算,符合位也要进行运算,符合位不变,3 高位不变其余取反,最后一位再加1

如-4(10000100)^ 5(00000101),-4的补码为(11111100)^ 5(00000101)结果为(111111001)符合位不变,高位不变其余取反,最后一位再加1 结果为-7(10000111)

4取反~   

如果为正数,1直接对值进行~运算,得到一个负数的原码,在转换为补码

例如:~4(00000100) , 操作数为0,结果为1,操作数为1,结果为0  ,结果为 (原码(11111011—>反码(10000100)—>补码-5(10000101))计算机存储的方式是补码所以结果为-5

如果为负数,1将负数转换为补码的形式,对补码进行~运算,得到结果

例如:~-4(10000100)—> 反码(11111011)—>补码(11111100) 操作数为0,结果为1,操作数为1,结果为0  ,(00000011)

5左右移:

正数的左右移:

有无符号,都直接在原码的基础上移动,求出结果即可
负数的左右移:
有符号的左右移:步骤  1 求负数的补码 ,2 将补码左右移,3 高位不变其余取反,最后一位再加1
无符号的左右移:步骤 1求出负数的补码 ,2 将补码左右移,3 直接求结果
 

6三元运算符

格式为

条件?表达式1:表达式2;

条件为true,执行表达式1,条件为 false执行表达式2。

相当于单个的if-else结构

7java中的优先级顺序:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值