基本数据类型及拓展
强类型语言:
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 安全性高
- 更严谨
- 速度慢
弱类型语言:
- 变量的使用不用严格符合规定
Java的数据类型分为两大类:
-
基本类型(primitive type)
-
引用类型(reference type)
示例:
// 八大基本数据类型
// 整数
byte num0 = 10;
short num1 = 20;
int num2 = 30;// 最常用
long num3 = 40L;// long类型要在数字后面加L
// 浮点数:小数
float num4 = 3.14F;// float类型要在数字后面加F
double num5 = 3.1415926;// 最常用
// 字符类型
char name = 'a';
// 延展 字符串 注:String不是关键字,是类
String name1 = "字符串不属于八大基本数据类型";
// 布尔值
boolean flag = true;
boolean flog = false;
拓展:
-
整数拓展
进制:二进制(0b)、八进制(0)、十进制、十六进制(0x:0-9 A-F)
代码示例:
int i0 = 10;// 十进制 int i1 = 010;// 八进制 int i2 = 0x10;// 十六进制 0-9 A-F 16 System.out.println(i0); System.out.println(i1);// 转换为十进制是8 System.out.println(i2);// 转换为十进制是16
运行结果:
10 8 16
-
浮点数拓展(float、double)
- 浮点数是有限且离散的
- 浮点数有舍入误差(大约,接近但不等于)
- 最好完全避免使用浮点数进行比较
代码示例:
float f = 0.1f; double d = 1.0/10; System.out.println(f); System.out.println(d); System.out.println(f == d);// false float f1 = 1212121212211212f; float f2 = f1 + 1; System.out.println(f1 == f2);// true
运行结果:
0.1 0.1 false true
注:因为浮点型有以上特性,故银行业务在表示钱的时候,并不会使用浮点型数据,而是数学工具类(BigDecimal)
-
字符拓展
所有字符的本质都是数字,具体可以去查Unicode编码表
代码示例:
char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1);// 强制转换为int型 System.out.println(c2); System.out.println((int)c2);// 强制转换为int型
运行结果:
a 97 中 20013
Unicode区间:U0000 - UFFFF
代码示例:
char c3 = '\u0061'; System.out.println(c3);// a
运行结果:
a
-
字符串拓展
- 如果两个或多个字符串是通过new的方式创建赋值的,那么这两个或多个字符串绝不相等。
代码示例:
String sa = new String("hello world"); String sb = new String("hello world"); System.out.println(sa == sb);// false
运行结果:
false
- 如果两个或多个字符串不是通过new的方式创建赋值的,那么这两个或多个字符串则可能相等。
代码示例:
String sc = "hello world"; String sd = "hello world"; System.out.println(sc == sd);// true
运行结果:
true
-
布尔值拓展
在使用布尔值进行判断时,代码需要做到精简易读(less is more!)
代码示例:
boolean flag = true; // 写法一: if(flag == true) { // 新手 } // 写法二: if (flag) { // 老手 } // 注:写法一和写法二效果是一样的,推荐使用写法二
科普:什么是字节?
-
位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。
-
字节(byte):是计算机中数据处理的基本单位,习惯上用大写的B表示。
-
1B(byte,字节) = 8bit(位)
-
字符:是之计算机中使用的字母、数字、字和符号
-
1bit表示1位
-
1Byte表示一个字节 1B = 8b
-
1024B = 1K
-
1024K = 1M
-
1024M = 1G
-
1024G = 1T