数据存储、数据类型、变量、运算符
- 存储单位
Bit : 比特,1bit就是一个电子位,统称位
Byte : 字节 , 1字节= 8bit 8位
Short : 短整型 , 1short= 16bit
Int : 整型 ,1int = 32bit
Long : 长整型 , 1long=64bit
比如 byte , 8位 最大值 就应该是 2^7-1 2的7次方减1 255
但是为了保存负数,最高位为符号位,直接损失一半精度
1 表示 负数, 0 表示正数
1 二进制 00000001
2 二进制 00000010
负数保存补码
-1 二进制 10000001 反码 11111110 补码 (反码+1) 11111111
-2 二进制 10000010 反码 11111101 补码 11111110
- 进制
二进制 : 010101010 并且 java中没有办法表示二进制
八进制 : 满8进1 , 10 就等于 十进制的 8 ,java中 0开头 比如 010
十进制 : 满10进1 , java中 非0开头, 20 , 324
十六进制 : 满16进1,a表示10,b表示11 , cdef ,f表示15 ,java中 0x开头,比如 0x11 - 数据类型分类
本质 就是规定占用内存空间的大小,用位和字节表示
引用数据类型
类,数组,接口
基本数据类型
数值型
整数型
byte,short,int,long
浮点型
float,double
布尔型
boolean
字符型
char
Bit : 比特,1bit就是一个电子位,统称位
Byte : 字节 , 1字节= 8bit 8位
Short : 短整型 , 1short= 16bit
Int : 整型 ,1int = 32bit
Long : 长整型 , 1long=64bit
Float : 单浮点 32位
Double : 双浮点 64位
Boolean : 布尔型 ,4位 0001 true, 0000 false
Char : 字符 , 16位 ,
ASCII 码
是字符和整型直接的一个映射关系
0 : 48
1 : 49
A : 65
B : 66
a : 97
c : 98
-
数据类型使用
整型java中十进制用1开头,八进制用0开头,十六进制用0x开头,**java中没有办法直接表示二进制**。 如:
int a = 10; int b = 010; int c = 0x10;
java中默认的整型为int
注意:
long的值结尾必须加L或l。如:long g = 2819L;浮点型 java中默认为double;
float的值结尾必须加F或f。如:float d = 1.3F;
字符型 字符型用单引号表示。 如: char s = 'c'; 转义符 使用\进行转义。 如: char n = ‘\\’; 布尔型 适用于流程控制,不参与任何转换
- 类型转换
自动类型转换:低精度到高精度
强制类型转换:高精度到低精度(有可能损失精度)
byte→short→int→long→float→double
char→intboolean不参与转换。
- 算数运算符
7. 关系运算符
返回的都是boolean类型
> ,< ,<=, >=
== :判断两个值是否相等
如果是基本数据类型则比较数值大小,
如果是引用类型则比较内存地址
!= :不等于
8.**位运算符**
&:位与 两边都是true 结果才是true
两边也可以是整型
| :位或 有真则真
!:位非 取反
^ :位异或 两边不一样 就是true
&& :短路与 和&一样。如果第一个为false,结果一定位false,那第二个就不执行了。
|| :跟|一样 如果第一个为true,结果一定位true,那第二个就不执行了。
~ : 按位非, 比如 0 的二进制 00000000 , ~0之后 ,就是 11111111 这是补码, 11111110 这是反码, 10000001 这是原码
: 右移运算(考虑符号位,就是再怎么移位,符号位不受影响) 右移两次, 就删除最右边两位,并再最左边补两个0(符号位之后)
如果是负数 就补1 , 正数 补0
<< :左移运算 (考虑符号位)删左边,补右边补0;右移运算(不考虑符号位)只向最左边补0
正数 和 >> 一样,因为补0 , 正数符号位 就是0