• java基础1之基本数据类型


    java的数据类型

    整数型(byte、short、int、long)


    编程过程中,默认是int类型。long类型的字面值后面需要加上L或l

    PS:java底层,byte、short是按照32位计算的。有些运算会自动把short类型转换为int

    另外:

    浮点数类型

    用于表示小数的整数类型。
    字面量默认是double。

    原理是二进制科学计数法:
    由符号位(sign,正负),指数(exponent,2的N次幂),尾数(mantissa,二进制的小数点后的部分)组成,二进制表示形式是:sign* mantissa* 2exponent。

    小数十进制与二进制的转换

    1. 二进制转换成十进制:跟整数转换一个原理,例如二进制11.11转换为十进制 121+120+12-1+12-2=3.75。
    2. 十进制转换成二进制:整数部分不用说了。小数部分采用乘2取整的方式,比如3.75整数部分对应的二进制是11。小数部分0.75,先乘以2等于1.5,取1.5的整数部分1。再用0.5(上次乘2的结果的小数部分)乘以2等于1.0,取1.0的整数部分1,现在已经没有小数部分了,终止。0.75对应的二进制就是.11。

    Question:为什么int、float都是4个字节,short还能表示小数,但范围比int大,精度(即能精确表达的位数,超过就被截肢了)又比int低呢?
    参考:https://blog.csdn.net/c2681595858/article/details/84865920
    https://www.cnblogs.com/LittleTiger/p/3969562.html

    比较浮点数时a0.1是不合适的,应该a-0.10。

    字符类型char

    是一个16位(2个字节)无符号整数,这个数值是一个字符的unicode编码值。
    char的范围(0-2^16-1=65535)不能表示全部unicode。

    当控制台显示"?"时,代表在本操作系统中找不到该数字对应的字库(操作系统中最多存2万多的汉字)。
    控制台显示的小方框代表字符不可见。
    'a'-'A'='b'-'B' 而且小写的比大写的统一码大。
    制表符
    转行(linux里)
    回车换行(window系统里)

    boolean类型

    两个值,不初始化时,默认是false。

    补充

    对于数值类型的基本类型的取值范围,等都已经以常量的形式定义在对应的包装类中了。如:
    基本类型byte 二进制位数:Byte.SIZE最小值:Byte.MIN_VALUE最大值:Byte.MAX_VALUE
    基本类型short二进制位数:Short.SIZE最小值:Short.MIN_VALUE最大值:Short.MAX_VALUE
    基本类型char二进制位数:Character.SIZE最小值:Character.MIN_VALUE最大值:Character.MAX_VALUE
    基本类型double 二进制位数:Double.SIZE最小值:Double.MIN_VALUE最大值:Double.MAX_VALUE
    注意:float、double两种类型的最小值与Float.MIN_VALUE、 Double.MIN_VALUE的值并不相同,实际上Float.MIN_VALUE和Double.MIN_VALUE分别指的是 float和double类型所能表示的最小正数。也就是说存在这样一种情况,0到±Float.MIN_VALUE之间的值float类型无法表示,0 到±Double.MIN_VALUE之间的值double类型无法表示。这并没有什么好奇怪的,因为这些范围内的数值超出了它们的精度范围。

    Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少倍。比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。

    PS:Java基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象。从Java5.0(1.5)开始,JAVA虚拟机(Java Virtual Machine)可以完成基本类型和它们对应包装类之间的自动转换。所有基本类型(包括void)的包装类都使用了final修饰,因此我们无法继承它们扩展新的类,也无法重写它们的任何方法。
    基本类型的优势:数据存储相对简单,运算效率比较高。

    实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

  • 相关阅读:
    ES6你不知道的let关键字及变量的提升
    [ts] Property 'aaa' does not exist on type 'Window' 解决办法
    EXPRESS项目PM2启动NODE_ENV传参数不生效问题解决方法
    react组件开发规范总结
    JavaScript heap out of memory解决方法
    移动端响应式布局--你不知道的CSS3.0媒体查询,解决rem部分情况下无法适配的场景
    在nodeJs的Express框架下用TypeScript编写router路由出现import关键字错误的解决方案
    Zepto的天坑汇总
    mac下CornerstoneSVN出错 Description : The working copy is locked due to a previous error
    bootstrap的popover插件在focus模式时在Safari浏览器无法使用的bug解决方案
  • 原文地址:https://www.cnblogs.com/xiaobingzi/p/9683412.html
Copyright © 2020-2023  润新知