一、数据类型
∎强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
例如:JAVA、C++等
一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型。
优缺点:安全性高 <——> 速度慢
∎弱类型语言
要求变量的使用要严格符合规定,它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
例如:JavaScript( J S )、Visual Basic(VB) 等
在J S中,可以将字符串‘12’和整数3进行连接得到字符串‘123’,然后可以把它看成整数123,而不需要显示转换。但其实它们的类型没有改变,只是自动在这些变量前加了一个 clong()或(int)()这样的转换函数。这归功于JS的编译器的智能化
∎Java的数据类型分为两大类
∎基本数据(primitive type)
∎引用类型(reference type)
▶八大基本数据类型
1.1 什么是字节
位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制。
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 表示。
1 B (byte) = 8 bit (位)
字符 : 指计算机中使用的字母、数字、字和符号。
关系:
- 1 bit 表示 1 位
- 1 byte 表示一个字节 1 B = 8 b
- 1024 B = 1 KB
- 1024 KB = 1 M
- 1024 M = 1 G
2.1 数据类型拓展
2.1.1整数拓展: 常见进制
- 二进制由0和1组成,逢2进1,以 0b / 0B开头
- 八进制由0~7组成,逢8进1,以0开头
- 十进制由0~9组成,逢10进1,没有前缀默认为十进制
- 十六进制由0 ~ 9和a ~ f(不分大小写)组成,以 0x / 0X 开头
int i = 10; // 10
int a = 010; //八进制0 8
int c = 0x10; //个六进制0x (0~9 A~F) 16
2.1.2 浮点数拓展:精度问题
单精度float:有限 离散 舍入误差 大约 接近但不等于
双精度double:
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); //false
float d1 = 23131312312312313f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
BigDecimal 类 进行浮点运算 最好完全避免使用浮点数进行比较
2.1.3 字符拓展:字符本质
char c1 ='a';
char c2 ='中';
System.out.println(c1); // a
System.out.println((int)c1); //制换行 97
System.out.println(c2); // 中
System,out.println((int)c2); //制换行 20013
//所有的字符本质还是数字
Unicode编码 可以表示所有字符,编码范围很大 ;U0000 — UFFFF
97 = a 65 = A;
2.1.4 布尔值拓展
//代码要精简易读
boolean flag = true;
if ( flag = true ){ } //新手
if ( flag ){ } //老手