数据类型
1.理解变量(variable)
变量的三要素: 名称、类型、数值
在C C++ Java中 变量必须自己有明确的类型 值必须在类型范围内
2.理解 基本数据类型 与 引用类型 的区别
基本数据类型的变量中存储的就是基本数据类型的数值本身 (通过输出语句可以直接打印 变量中存储的基本数据类型的值)
引用类型的变量中存储的是 内存地址 ( 通过输出语句输出的不是 数组内容 而是地址)
2.1.测试整数类型
byte 占 1 个字节, 8个二进制位(bit)
short 占 2 个字节, 16个二进制位(bit)
int 占 4 个字节, 32个二进制位(bit)
long 占 8 个字节, 64个二进制位(bit) long需要后缀
2.2.测试字符类型
以单个字符为字面量 (在单引号中指定单个字符) //char first = '辣';
以转义字符为字面量 (在单引号中指定转义字符) // char third = ''';
以整数为字面量(0-65535)是一个十六进制的数
以Unicode编码为字面量 (在单引号中指定Unicode编码) // char fourth = '\u9ebb';
2.3.测试浮点数类型
测试浮点类型: float 、double
注意: 浮点数都遵守 IEEE 754 规范
float 占 4个字节(32个二进制位) float 类型的字面量必须以 F 或 f 为后缀
double 占 8个字节(64个二进制位) double 类型的字面量可以以 D 或 d 为后缀
2.4.测试布尔类型
boolean 占用 1 个字节(8个二进制位) // boolean eighth = false;
3.自动类型提升
3.1将数值范围较小的数据类型的值赋值给数值范围较大的数据类型的变量
byte => short => int => long => float => double
^char可以理解为无符号字符 类似于short 但不等同
3.2多种不同类型的数值参与运算,导致数值范围较小的数据类型自动提升为数值范围较大的数据类型
int --> long 近大者大 格局打开 同理 byte -->short -->int -->long -->float -->double 首先a 自动提升为long 再进行运算
特例1:int以下的类型 byte short参与运算首先转换成int 再运算
特例2:char类型也是转换成int类型进行运算
4.强制类型转换
4.1、整数类型的强制类型转换: 舍弃高位,保留低位
目标类型 变量名 = (目标类型) 值
4. 2、浮点类型的强制类型转换
double --> float
4.3、浮点类型强转为整数类型
double --> byte
4.4特殊数据类型的转换
操作符
1.位运算符
// 位运算符 // | 按位或(逐位或) // & 按位与(逐位与) // ~ 按位取反(逐位取反) // ^ 按位异或(逐位异或) // >> 向右移位 // << 向左移位 // >>> 无符号向右移位
& 按位与(逐位与)
向右移位~
按位反
<< 向左移位
有符号向右移位
无符号向右移位
2.赋值运算符: =
3.算术运算符: 加(+) 、减(-)、乘(*)、除(/)、模(%)
4.扩展后的赋值运算符
// 扩展后的赋值运算符 // += 、-= 、*= 、/= 、%= // |= 、&= 、^= 、>>= 、<<= 、>>>=
a += 50; // 效果上等同于 a = a + 50
b /= 3; // 效果上等同于 b = b / 3
c %= 3; // 效果上等同于 c = c % 3
x ^= y; // 效果上等同于 x = x ^ y
p >>= 1; // 效果上等同于 p = p >> 1
2.交换两个变量的值
int t = b; b = a; a = t;
用按位异或来交换两个变量的值
x ^= y; // x = x ^ y
y ^= x; // y = y ^ x
x ^= y; // x = x ^ y
补充
1.long的数字范围比float的数字范围小?
long的数字范围比float的数字范围小? //答:整数在计算机底层存储是采用补码形式,除去首位的符号剩余位数表示数值范围 位数越多数值越大 // 单精度浮点数float double他们底层的数据结构是符号(存储正负)+指数(确定范围大小)+尾数(决定计算精度)
2.原码 反码 补码
原码:
将一个整数转换成二进制形式,就是其原码。
反码:
对于正数,它的反码就是其原码(原码和反码相同);
负数的反码是将原码中除符号位以外
的所有位(数值位)取反,也就是 0 变成 1,1 变成 0。
补码:
对于正数,它的补码就是其原码(原码、反码、补码都相同)
负数的补码是其反码加 1
3.比int小的数据类型自动转换成int类型进行运算
java虚拟机没有对int以下数据类型操作的指定器