JAVA数据存储

1.八种基本数据类型

JAVA是一种强类型语言,这意味着每一种变量都有一种类型。

八种基本数据类型
基本数据类型整型byte、short、int、long
浮点型float、double
布尔型boolean
浮点型char
引用数据类型string
接口
数组

2.各个整型和浮点型的存储需求以及取值范围

存储需求及取值范围
类型字节长度取值范围
int4字节-2 147 483 648 ~ 2 147 483 647
short2字节-32 768 ~32 767
long8字节-9 223 372 036 854 775 808 ~9 223 372 036 854 775 807
byte1字节-128~127
float4字节大约±3.402 823 47E+38F(6~7位有效数字)
double8字节大约±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之间不能直接转化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值