数据类型
数据类型分为 基本数据类型 和 引用数据类型
基本数据类型
整型 byte(字节整型) 1字节
short(短整型) 2字节
int(整型) 4字节
long(长整型) 8字节
浮点型 float(单精度浮点型) 4字节
double(双精度浮点型) 8字节
字符型 char 采用unicode编码 2字节
布尔型 boolean boolean数组中每一个boolean数据元素是1字节
基本数据类型介绍
byte(字节整型) 1字节 第一位表示符号位(0 正 1 负) 剩下七位表示数值
2^7(128个数) 正数 表示范围 0--127
负数 表示范围 -128 -- -1
short 短整型 (2字节) (-2^15----2^15-1)
int 整型 (4字节) (-2^31----2^31-1) (10位数) (存不了手机号11位)
long (长整型) (8字节) (-2^63----2^63-1) long类型定义的数据最后加 " l"(L)
Byte
byte 第一位代表符号位 七位代表数值位
Float
float第一位代表符号位( 0正1负) 后8位代表阶位 剩下23位代表数值 1+8+23=32
2^(阶位-127) *数值位 127:2^8/2
Double
double 第一位代表符号位( 0正1负) 后11位代表阶位 剩下52位代表数值位1+11+52=64
2^(阶位-1024) *数值位 1024:2^11/2
char的字节分类
ASCli(1字节) 256
Unicode(2字节) 2^16 具体实现 UTF-8 (0-2^16-1)
java中的char是2字节 采用Unicode编码
char赋值
1.直接赋值
char k = 'f'
2.赋值字符对应的数字
char a =20013
int kk ='中'
system.out.println(kk) //这个打印出来和a一样
3.赋值字符对应的数字的十六进制的值
char p = '\u4ewd' \u是格式 后面是十六进制代表的数
引用数据类型
引用数据类型分为 类 接口 数组 等等
其中字符串属于引用数据类型
字节 1Byte = 8 bit 计算机存的都是比特流 磁盘上的磁颗粒
8个比特流 是1 个字节
32位电脑 cpu让内存从磁盘中读取32位数据
64位电脑 cpu让内存从磁盘中读取64位数据
类型转换
自动类型转换 小类型-->大类型
强制类型转换 大类型-->小类型 转换语法: (转换类型)变量
long num1 = 123123;
int num2 = (int) num1;
等号左边是句柄 和变量
数据计算
原码 反码 补码都是比特流
正数的原码 反码 补码都是一样
负数的反码 是原码的符号位不变 其他位取反
补码 是反码+1
反码是用来解决计算机 计算 减法问题
补码是用来解决反码 计算 差一 和 正负0 的问题
经典面试题
byte (127+1)为啥是 -128
byte存不下128 127+1 是-0 在补码中-0 代表的是-128 用反码计算会浪费一个编码的使用 127+1=10000000 而10000000在byte中对应得就是-128
int 和float 谁的精度更高
int高 float只能散列的呈现数值,不能准确的表述,会出现精度丢失 所以不如int
java中提高精度的方法
浮点型的比较最好用 差值 比较
浮点型默认是double
报错是因为3.0默认的是double 而float类型比double小 所以要强转
修改:
一: float g = (float)3.0
二: float g = 3.0f