如今个人电脑的配置越来越高,内存和硬盘的容量大小都是以G为单位,而1G=1024M=1024*1024K=1024*1024*1024字节。不过在PC的早期发展阶段,电脑的存储空间却是十分有限的,像2000年前后广泛使用的3.5寸软盘,其存储容量只有区区1.44M,当时流行的SDR内存容量也才32M和64M。所以早期的编程语言很注重节约存储,给每个变量分配内存都要精打细算,大环境如此,于是早在1996年诞生的Java语言也不例外,仅仅是处理整数和小数,就分成了byte、short、int、long、float、double六种数字类型。下面简要介绍一下这六种类型的数值表示范围。
1、byte:字节型。该类型的变量只占用一个字节大小,一个字节可表达八位的二进制数,因为八位的第一位是符号位,为0时表示当前是正数,为1时表示当前是负数,所以byte类型实际囊括的数值范围是-128到127。其中00000000到01111111表示了0到127区间,而10000000到11111111表示了-128到-1区间。需要注意的是,Java使用补码表示二进制数,且正数的补码与其原码相同,但负数的补码是在其反码的末位加1(负数的反码是正数)。因此假设某负数为x,若令“x取反+1=10000000”,则求得“x=(10000000-1)再取反=01111111取反=10000000”,即x=-128;若令“x取反+1=11111111”,则求得“x=(11111111-1)再取反=11111110取反=00000001”,即x=-1。
2、short:短整型。该类型的变量占用两个字节大小,可表达的数值范围是-32768到32767,即负2的15次方~2的15次方-1。
3、int:整型。该类型的变量占用四个字节大小,可表达的数值范围是-2147483648到2147483647,即负2的31次方~2的31次方-1。
4、long:长整型。该类型的变量占用八个字节大小,可表达的数值范围是-9223372036854775807到9223372036854775808,即负2的63次方~2的63次方-1。
5、float:浮点型,用来表示小数。该类型的变量占用四个字节大小,它包括一个符号位、一个8位的指数和一个23位尾数,此时1+8+23=32位=4字节。浮点数的计算公式为:正/负*(2的指数次方)*尾数,其中正/负由符号位决定,8位指数的表示范围是-128到127,尾数表示一个介于1.0和2.0之间的小数。这样float类型可表示的整数部分范围横跨正负3.402823乘以10的38次方,小数部分范围低至1.401298乘以10的负45次方,虽然看起来浮点数的表示位数大大增加,但是有效数字只有6到7位,也就是说,开头6到7位才是精确的数字,后面的数字统统不准。
6、double:双精度型,用来表示小数。该类型的变量占用八个字节大小,它包括一个符号位、一个11位的指数和一个52位尾数,此时1+11+52=64位=8字节。double类型可表示的整数部分范围横跨正负1.797693乘以10的308次方,小数部分范围低至4.9000000乘以10的负324次方,并且有效数字提高到了15到16位。跟double双精度相比,float类型的有效位数明显不够,于是浮点数也被称作单精度数。

对于实际开发来说,byte和short类型可表达的整数范围太小,同时现在电脑的存储容量毫不在乎几个字节的差异,因此这两个类型在Java编程中基本无用武之地。int类型可以表示高达21亿的整数,能够应付大部分的整数运算场景,故而Java编码中的整数变量最常使用int类型。至于long类型可表示多达19位的十进制数,常用于int类型覆盖不到的整数场合,比如世界人口数量80亿必须通过long类型来存储。小数计算方面,因为float类型的数字精度不够准,所以小数变量更常使用double类型来处理。
有了这些基本的数值类型,就能声明相应类型的变量了,声明语句的格式为“变量类型 变量名称;”。如果在声明变量之时就进行初始赋值,则声明语句的格式为“变量类型 变量名称 = 具体的数值;”。下面是个声明数值变量的代码例子,其中包含了先声明再赋值、以及声明时即刻赋值的两种情况:

public class Basic {

	public static void main(String[] args) {
int zhumulanma; // 先声明变量
// 8844是2005年中国测量得到的珠穆朗玛峰岩面高度,8848是冰雪高度
zhumulanma = 8844; // 再对变量赋值
System.out.println("珠穆朗玛峰的高度="+zhumulanma);
double yuanzhoulv = 3.1415926; // 在声明变量之时就进行初始赋值
System.out.println("圆周率="+yuanzhoulv);
}
}

上述代码的运行结果如下图所示。

Java开发笔记(五)数值变量的类型的更多相关文章

  1. Java开发笔记(二十七)数值包装类型

    方法的出现缘起优化代码结构,但它的意义并不局限于此,正因为有了方法定义,编程语言才更像一门能解决实际问题的工具,而不仅仅是只能用于加减乘除的计算器.在数学的发展过程中,为了表示四则运算,人们创造了加减 ...

  2. Java开发笔记(五十六)利用枚举类型实现高级常量

    前面介绍了联合利用final和static可实现常量的定义,该方式用于简单的常量倒还凑合,要是用于复杂的.安全性高的常量,那就力不从心了.例如以下几种情况,final结合static的方式便缺乏应对之 ...

  3. Java开发笔记(五十二)对象的类型检查

    前面介绍了类的多态性,来自于鸡类的实例chicken,既能用来表达公鸡实例,也能用来表达母鸡实例.可是这导致了一个问题,假如在call方法内部需要手工判断输入参数属于公鸡实例还是母鸡实例,那该如何是好 ...

  4. Java开发笔记(二十八)布尔包装类型

    前面介绍了数值包装类型,因为不管是整数还是小数,它们的运算操作都是类似的,所以只要学会了Integer的用法,其它数值包装类型即可一并掌握.但是对于布尔类型boolean来说,该类型定义的是“true ...

  5. Java开发笔记(三十一)字符类型的表达

    前面介绍的Java编程,要么是与数字有关的计算,要么是与逻辑有关的推理,充其量只能实现计算器和状态机.若想让Java运用于更广阔的业务领域,就得使其支撑更加血肉丰满的业务场景,而丰满的前提是能够表达大 ...

  6. Java开发笔记(三十五)字符串格式化

    前面介绍了字符串变量的四种赋值方式,对于简单的赋值来说完全够用了,即便是两个字符串拼接,也只需通过加号把两个目标串连起来即可.但对于复杂的赋值来说就麻烦了,假设现在需要拼接一个很长的字符串,字符串内部 ...

  7. Java开发笔记(五十五)关键字static的用法

    前面介绍嵌套类的时候讲到了关键字static,用static修饰类,该类就变成了嵌套类.从嵌套类的用法可知,其它地方访问嵌套类之时,无需动态创建外层类的实例,直接创建嵌套类的实例就行.其实static ...

  8. Java开发笔记(六十五)集合:HashSet和TreeSet

    对于相同类型的一组数据,虽然Java已经提供了数组加以表达,但是数组的结构实在太简单了,第一它无法直接添加新元素,第二它只能按照线性排列,故而数组用于基本的操作倒还凑合,若要用于复杂的处理就无法胜任了 ...

  9. Java开发笔记(二十五)方法的输入参数

    前面通过main方法介绍了方法的定义形式,对于方法的输入参数来说,还有几个值得注意的地方,接下来分别对输入参数的几种用法进行阐述.一个方法可以有输入参数,也可以没有输入参数,倘若无需输入参数,则方法定 ...

  10. Java开发笔记(三十三)字符包装类型

    正如整型int有对应的包装整型Integer那样,字符型char也有对应的包装字符型Character.初始化字符包装变量也有三种方式,分别是:直接用等号赋值.调用包装类型的valueOf方法.使用关 ...

随机推荐

  1. php使用protobuf3

    protoc的介绍,安装 1.定义一个protoc 文件 示例:person.proto syntax="proto3"; //声明版本,3x版本支持php package tes ...

  2. 32、可以拿来用的JavaScript实用功能代码

    可以拿来用的JavaScript实用功能代码(可能会有些bug,用时稍微修改下,我用了几个还可以) 转载自 1.原生JavaScript实现字符串长度截取 function cutstr(str, l ...

  3. pymongo的操作

    实例化和插入 from pymongo import MongoClient class TestMongo: def __init__(self): client = MongoClient(hos ...

  4. 合适么?现在学ASP.NET Core入门编程……

    现在都快找不到ASP.NET的培训课程了. 知道我要开课做培训,有同学劝我:“憋讲那什么.NET,讲Java,现在这个火!”我说我Java不熟,“唉呀!C#转Java,分分钟的事!以飞哥你的经验,…… ...

  5. 256.Spring Boot+Spring Security: MD5是加密算法吗?

    说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...

  6. Trie 简介

    一.Trie简介 在计算机科学中,Trie,又称字典树.前缀树.单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎 ...

  7. 配置Zookeeper、Dubbox

    CentOS的配置: 1.给CentOS安装Zookeeper: 网络配置成仅主机 上传tar.gz:比如用FTP tar -xvzf ... cd zookeeper mkdir data cd c ...

  8. [Swift]LeetCode450. 删除二叉搜索树中的节点 | Delete Node in a BST

    Given a root node reference of a BST and a key, delete the node with the given key in the BST. Retur ...

  9. [Swift]LeetCode936. 戳印序列 | Stamping The Sequence

    You want to form a target string of lowercase letters. At the beginning, your sequence is target.len ...

  10. 【机器学习】--Kmeans从初识到应用

    一.前述 Kmeans算法一般在数据分析前期使用,选取适当的k,将数据分类后,然后分类研究不同聚类下数据的特点. Kmeans算法是一种无监督的算法. 常用于分组,比如用户偏好. 二.概念及原理 Km ...