Java核心技术卷I基础知识3.3.1 整型

3.3.1 整型

整型用于表示没有小数部分的数值,它允许是负数。Java提供了4种整型,具体内容如表3-1所示。

表3-1 Java整型

类型     存储需求     取值范围

int  4字节   -2 147 483 648~2 147 483 647(正好超过20亿)

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

 

在通常情况下,int类型最常用。但如果表示星球上的居住人数,就需要使用long类型了。byte和short类型主要用于特定的应用场合,例如,底层的文件处理或者需要控制占用存储空间量的大数组。

在Java中,整型的范围与运行Java代码的机器无关。这就解决了软件从一个平台移植到另一个平台,或者在同一个平台中的不同操作系统之间进行移植给程序员带来的诸多问题。与此相反,C和C++程序需要针对不同的处理器选择最为高效的整型,这样就有可能造成一个在32位处理器上运行很好的C程序在16位系统上运行却发生整数溢出。由于Java程序必须保证在所有机器上都能够得到相同的运行结果,所以各种数据类型的取值范围必须固定。

长整型数值有一个后缀L或l(如4000000000L)。十六进制数值有一个前缀0x或0X(如0xCAFE)。八进制有一个前缀0,例如,010对应八进制中的8。很显然,八进制表示法比较容易混淆,所以建议最好不要使用八进制常数。

从Java 7开始,加上前缀0b或0B就可以写二进制数。例如,0b1001就是9。另外,同样是从Java 7开始,还可以为数字字面量加下划线,如用1_000_000(或0b1111_0100_0010_0100_0000)表示一百万。这些下划线只是为了让人更易读。Java编译器会去除这些下划线。

      C++注释:在C和C++中,int和long等类型的大小与目标平台相关。在8086这样的16位处理器上整型数值占2字节;不过,在32位处理器(比如Pentium或SPARC)上,整型数值则为4字节。类似地,在32位处理器上long值为4字节,在64位处理器上则为8字节。由于存在这些差别,这对编写跨平台程序带来了很大难度。在Java中,所有的数值类型所占据的字节数量与平台无关。

注意,Java没有任何无符号(unsigned)形式的int、long、short或byte类型。

时间: 2024-09-07 10:02:20

Java核心技术卷I基础知识3.3.1 整型的相关文章

Java核心技术卷I基础知识3.3 数据类型

3.3 数据类型 Java是一种强类型语言.这就意味着必须为每一个变量声明一种类型.在Java中,一共有8种基本类型 (primitive type),其中有4种整型.2种浮点类型.1种用于表示Unicode编码的字符单元的字符类型 char(请参见论述char类型的章节)和1种用于表示真值的boolean类型.       注释:Java有一个能够表示任意精度的算术包,通常称为"大数值"(big number).虽然被称为大 数值,但它并不是一种新的Java类型,而是一个Java对象

Java核心技术卷I基础知识3.5.7 位运算符

3.5.7 位运算符 处理整型类型时,可以直接对组成整型数值的各个位完成操作.这意味着可以使用掩码技术得到整数中的各个位.位运算符包括:   这些运算符按位模式处理.例如,如果n是一个整数变量,而且用二进制表示的n从右边数第4位为1,则   会返回1,否则返回0.利用&并结合使用适当的2的幂,可以把其他位掩掉,而只保留其中的某一位.       注释:应用在布尔值上时,&和|运算符也会得到一个布尔值.这些运算符与&&和||运算符很类似,不过&和|运算符不采用&quo

Java核心技术卷I基础知识3.10 数组

3.10 数组 数组是一种数据结构,用来存储同一类型值的集合.通过一个整型下标可以访问数组中的每一个值.例如,如果a是一个整型数组,a[i]就是数组中下标为i的整数. 在声明数组变量时,需要指出数组类型(数据元素类型紧跟[])和数组变量的名字.下面声明了整型数组a:   不过,这条语句只声明了变量a,并没有将a初始化为一个真正的数组.应该使用new运算符创建数组.   这条语句创建了一个可以存储100个整数的数组.数组长度不要求是常量:new int[n]会创建一个长度为n的数组.      

Java核心技术卷I基础知识3.5.3 强制类型转换

3.5.3 强制类型转换 在上一小节中看到,在必要的时候,int类型的值将会自动地转换为double类型.但另一方面,有时也需要将double转换成int.在Java中,允 许进行这种数值之间的类型转换.当然,有可能会丢失一些信息.在这种情况下,需要通过强制类型转换(cast)实现这个操作.强制类型转换 的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名.例如:   这样,变量nx的值为9.强制类型转换通过截断小数部分将浮点值转换为整型. 如果想对浮点数进行舍入运算,以便得到最

Java核心技术卷I基础知识1.5 关于Java的常见误解

1.5 关于Java的常见误解 在结束本章之前,我们列出了一些关于Java的常见误解,同时给出了解释. 1.?Java是HTML的扩展 Java是一种程序设计语言:HTML是一种描述网页结构的方式.除了用于在网页上放置Java applet的HTML扩展之外,两者没有任何共同之处. 2.?使用XML,所以不需要Java Java是一种程序设计语言:XML是一种描述数据的方式.可以使用任何一种程序设计语言处理XML数据,而Java API对XML处理提供了很好的支持.此外,许多重要的第三方XML工

Java核心技术卷I基础知识3.1 一个简单的Java应用程序

第3章 Java的基本程序设计结构 ▲  一个简单的Java应用程序     ▲  字符串 ▲  注释                      ▲  输入输出 ▲  数据类型               ▲  控制流 ▲  变量                      ▲  大数值 ▲  运算符                  ▲  数组   现在,假定已经成功地安装了JDK,并且能够运行第2章中给出的示例程序.我们从现在开始将介绍Java应用程序设计.本章主要介绍程序设计的基本概念(如数

Java核心技术卷I基础知识1.2.1 简单性

1.2.1 简单性 人们希望构建一个无须深奥的专业训练就可以进行编程的系统,并且要符合当今的标准惯例.因此,尽管人们发现C++不太适用,但在设计Java的时候还是尽可能地接近C++,以便系统更易于理解.Java剔除了C++中许多很少使用.难以理解.易混淆的特性.在目前看来,这些特性带来的麻烦远远多于其带来的好处. 的确,Java语法是C++语法的一个"纯净"版本.这里没有头文件.指针运算(甚至指针语法).结构.联合.操作符重载.虚基类等(请参阅本书各个章节给出的C++注释,其中比较详细

Java核心技术卷I基础知识3.7.2 格式化输出

3.7.2 格式化输出 可以使用System.out.print(x)将数值x输出到控制台上.这条命令将以x对应的数据类型所允许的最大非0数字位数打印输出x.例如:   打印   如果希望显示美元.美分等符号,则有可能会出现问题. 在早期的Java版本中,格式化数值曾引起过一些争议.庆幸的是,Java SE 5.0沿用了C语言库函数中的printf方法.例如,调用   可以用8个字符的宽度和小数点后两个字符的精度打印x.也就是说,打印输出一个空格和7个字符,如下所示:   在printf中,可以

Java核心技术卷I基础知识3.7.3 文件输入与输出

3.7.3 文件输入与输出 要想对文件进行读取,就需要一个用File对象构造一个Scanner对象,如下所示:   如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠: "c:\\mydirectory\\myf?ile.txt".       注释:在这里指定了UTF-8字符编码,这对于互联网上的文件很常见(不过并不是普遍适用).读取一个文本文件时,要知道它的字符编码--更多信息参见卷Ⅱ第2章.如果省略字符编码,则会使用运行这个Java程序的机器的"默