#1. java数据类型框架
A. 八大基本数据类型
a. 数值型:
· 整形 :byte(1) < short(2) < int(4) < long(8) 默认值:0
· 浮点型 :float(4) < double(8) 默认值:0.0
b. 字符型:char(2) 默认值:‘\u0000’
d. 布尔型:boolean(JVM未规定) 默认值:false
B. 引用数据类型: 数组、类、接口 默认值:null
注意1:java是一门强类型语言,定义一个变量时,必须要明确变量的类型 //例如 int age = 10; 其中的age只能保存整形,无法保存浮点数或者char类型的数据
注意2:数值型数据均为有符号,数值型数据类型的最高位不存储具体数据,存储符号位,其中0表示正数,1表示负数
注意3:八大基本类型对应的包装类(引用数据类型)
注意4:所有数据类型都有默认值。函数中的局部变量不存在默认值,只有成员变量(全局变量)才具备默认值
注意5:八大基本类型表示范围计算:以byte为例。
最大值为0111 1111即为2^7-1
最小值为1111 1111即为- 2^7
补充知识:计算机原码,补码,反码
A. 对于正数来说:原反补码三码都相同
B. 对于负数来说:
a. 原码:第一个bit位表示符号位,剩下的是二进制形式
b. 反码:符号位不变,数值位全部取反(是原码和补码之间转换的中间状态)
c. 补码:在反码末位加1(超过机器字长的部分丢弃)
补充知识2:内存、外存;位、字节
A. 内存:CPU直接和内存打交道,CPU需要运行的进程和线程都位于内存之中。造价高,读写速度快,断电即失。
B. 外存:外存和内存之间传输数据。造价低,读写速度慢,断电数据保留。
C. 计算机存储数据的基本单位:位(bit)
D. 计算机 表示空间大小的基本单位:字节 (byte)
E. 换算规则1:1byte=8bit
F. 换算规则2:
G. 换算规则3:
1Kb=1000b
1Mb=1000Kb
…
#2. 两种类型的数值
A. 变量:定义之后,数值可以改变,数据类型不能改变
a. 变量基本语法:
数据类型 变量名称 = 初始值;
注:变量中保存的数值是可以修改的,但是必须要在整形的保存范围之内
注:此处的“=”是赋值符号
注:IDEA中的ctrl加/是注释选中部分,再来一次就是取消注释
b. 一行定义一个变量,和一行定义多个变量实例
B. 常量:定义之后,数值无法改变
#3. 不同数据类型的变量使用
A. 数值型变量
a. 整形变量的定义、赋值、使用(注:int类型一律为4字节,不论操作系统和平台)
注:在函数中定义的局部变量赋值后使用,不存在默认值;类中定义的全局变量存在默认值,各个数据类型对应的默认值在最上面
b. 变量存储数据溢出问题:
解决方法:当小的数据类型村放不下正确的数值,可以更换更大的数据类型
c. 长整型变量的定义((注:long类型一律为8字节,不论操作系统和平台))
注:一个坑
d. 长整型的最大最小值(包装类为Long)
注:一般来说,长整型已经够用。但是若数据超过该上限,解决方法为:
采用BigInteger类来存储或者采用字符串String类型来存储大整数
数字型字符串实例:“124578978789787979797978798797”(没有上限)
一个坑:小写的 “l” 不会打印
e. 短整型变量定义,最大最小值
f. 字节型变量定义,最大、最小值
g. 整形变量小总结:
h. 单精度浮点数float(4字节)(用的少)
注:float一般保证六位小数之内是有效的
i. 双精度浮点数double(8字节)
注:double的精度丢失问题
一般来说工程中12位之内的精度已经够用,如果需要更精确的则使用BigDecimal类
B. 字符型变量(包装类位Character)
注意:
C. 布尔类型
D. 字面量:直接写出来的数值就称之为字面量,字面量也存在数据类型
例如:
100——>整形字面量,默认int类型
100.1——>浮点数字面量,默认double类型
‘a’——>字符型字面量,char类型
false——>布尔型字面量,boolean类型
100.1f——>浮点数字面量,加f声明为float类型
100L——>整形字面量,加L声明为long类型
“abf”——>字符串字面量,String类型(类)
#4. 类型转换与类型提升问题
A. 类型转换
小类型提升为大类型自动转换,大类型转换为小类型需要强制类型转换,且有精度丢失问题
注:一个坑
注:重点1
注:重点2
重点1和重点2的小总结
B. 类型提升
一个坑