1.八种基本数据类型
JAVA是一种强类型语言,这意味着每一种变量都有一种类型。
基本数据类型 | 整型 | byte、short、int、long |
浮点型 | float、double | |
布尔型 | boolean | |
浮点型 | char | |
引用数据类型 | 类 | string |
接口 | ||
数组 |
2.各个整型和浮点型的存储需求以及取值范围
类型 | 字节长度 | 取值范围 |
int | 4字节 | -2 147 483 648 ~ 2 147 483 647 |
short | 2字节 | -32 768 ~32 767 |
long | 8字节 | -9 223 372 036 854 775 808 ~9 223 372 036 854 775 807 |
byte | 1字节 | -128~127 |
float | 4字节 | 大约±3.402 823 47E+38F(6~7位有效数字) |
double | 8字节 | 大约±1.797 693 134 862 315 70E+308(15位有效数字) |
字节(B)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。即1byte=8bit
3.为什么计算机要设计反码
因为计算机只有加法没有减法,在做减法运算的时候,可以认为是加上一个负数,这样可以减少计算机电路的复杂度。使用原码进行减法运算会出现问题。反码是为了解决减法运算,补码是为了解决反码产生的+-0的问题
4.浮点类型在计算机当中的存储
float存储需求是4字节(32位),其中1位最高位是符号位,中间8位表示阶位,后32位表示值
double存储需求是8字节(64位),其中1位最高位是符号位,中间11位表示阶位,后52位表示值
5.浮点类型产生精度丢失的原因
首先我们看一个例子
public class SimpleTest {
public static void main(String[] args) {
System.out.println(1.2 - 1);
}
}
输出:
0.19999999999999996
这和我们预期的情况完全不符
我们来将10进制的0.2转化为2进制进行存储
算法是乘以2直到没有了小数为止
0.2 * 2 = 0.4 取整数部分 0
0.4 * 2 = 0.8 取整数部分 0
0.8 * 2 = 1.6 取整数部分 1
0.6 * 2 = 1.2 取整数部分 1
0.2 * 2 = 0.4 取整数部分 0
。。。。。。
0.2的2进制从上到下可以表示为 00110011......
注意:上面的计算过程循环了,也就是说*2永远不可能消灭小数部分,这样算法将无限下去。很显然,小数的二进制表示有时是不可能精确的 。其实道理很简单,十进制系统中能不能准确表示出1/3呢?同样二进制系统也无法准确表示1/10。这也就解释了为什么浮点型减法出现了"减不尽"的精度丢失问题。
6.如何解决精度丢失
public static void main(String[] args) {
BigDecimal b1 = new BigDecimal(Float.toString(1.2f));
BigDecimal b2 = new BigDecimal(Float.toString(1));
float s = b1.subtract(b2).floatValue();
System.out.println("s----" + s);
}
7.char类型
char字符类型实际上是一个16位无符号整数,这个数对应字符的编码
java字符类型采用Unicode字符集编码。Unicode是世界通用的定字长字符集,所用字符都是16位
任何一个字符都可以转化为一个整数,整数的范围是0-65535
可以查看某个数对应着那个字符
8.转义字符
对于不方便输出的字符可以采用转义字符表示:
例如:
public static void main(String[] args) {
int num = 100;
String json = "{"+"\"count\":"+num+"}";// /斜杠 \反斜杠
String dataString = "[{\"id\":\"1\" ,\"name\":\"张三\"},{\"id\":\"2\" ,\"name\":\"李四\"},{\"id\":\"3\" ,\"name\":\"王五\"}]";
System.out.println(json);
}
输出:
{"count":100}
----------------------------------------------------------------------------------------------------------------
转义字符 含义
\n 表示回车
\r 表示换行符
\\ 表示反斜杠( \ )
\' 表示单引号( ' )
\" 表示双引号( " )
---------------------------------------------------------------------------------------------------------------------
9.Boolean类型
Boolean(布尔)类型有两个值:flase和true,用来判断逻辑条件。数值型和boolean之间不能直接转化