《Java 7程序设计入门经典》一2.2 Java的基本数据类型

2.2 Java的基本数据类型

Java包括两大类内置的数据类型:面向对象的数据类型和非面向对象的数据类型。Java中面向对象的数据类型由类定义,在后面会有类的介绍。但是,Java的核心是8种基本数据类型(也称元素数据类型或简单数据类型),如表2-1所示。这里使用“基本”(primitive)这个词来表示,从面向对象的角度看,这些类型不是对象,而是普通的二进制值。出于有效性,这些基本数据类型不是对象。

Java为每个基本数据类型严格指定范围和行为。所有Java虚拟机都必须支持这些。因为Java的可移植性需求,Java在这方面的要求是强制的。例如,int类型在所有执行环境中必须都是一样的。这使得程序完全可移植。没有必要为特定的平台重新编写代码。尽管在某些环境下,严格指定基本数据类型的范围会引起一些性能损失,但为了获得可移植性,这么做是值得的。

2.2.1 整数

Java定义了4种整数类型:byte、short、int和long。现列举如下:

正如上表所示,所有的整数类型都是有符号的,它们可正可负。Java不支持无符号的整数(即非负的整数)。许多其他计算机语言同时支持有符号的和无符号的整数。但是,Java的设计者认为,无符号整数是不必要的。
注意:从技术上说,Java的运行时系统可以用任何大小来存储一个基本数据类型。但是,在任何情况下,该类型都应按规定运行。
最常见的整数类型是int类型。int类型的变量经常用于控制循环、标记数组索引、执行一般意义的整数数学运算。
在需要比int范围更大的整数时,可使用long类型。例如,下面是一个计算在1英里× 1英里×1英里大小的立方体里有多少立方英寸的程序:

注意,1英里相当于5?280英尺。于是,为了计算在一立方英里有多少立方英寸,首先给出一英里里有多少英寸,然后再将这个值取立方。程序的输出如下所示:

显然,这么大的数无法用int类型的变量来表示。
最小的整数类型是byte类型。byte类的变量在对原始的二进制数据进行操作时特别有用。原始的二进制数据也许不能由Java其他的内置类型直接支持。类型short创建一个短整形。short类型的变量在想要节约内存时比较合适,因为它不需要像int类型那样大的范围。

2.2.2 浮点类型

正如第1章介绍的那样,浮点类型可以表示含有小数部分的数。有两类浮点数:float和double,分别表示单精度和双精度数。float类型是32位宽,double类型是64位宽。它们大小的不同意味着,float类型的字面量最大约为3.4×1038,double类型的字面量最大约为1.8×10308。
在以上两种类型中,类型double是最常用的,因为Java类库中所有的数学函数都用double值。例如,定义在标准Math类中的sqrt()方法返回一个double值,它是double类型参数的平方根。这里,sqrt()方法在给定两条直角边的长度的情况下,用来计算直角三角形的斜边。

程序输出如下所示:

在上述示例中还有一个注意点:正如上面介绍的那样,sqrt()方法是标准类Math的一个成员。请注意sqrt()的调用方法:它之前有类名Math。这与println()之前有对象名System.out相似。尽管不是所有的标准方法在调用时都要指定类名,但是有许多是这样的。

2.2.3 字符

Java不像那些使用8位量来表示字符的计算机语言。与其不同,Java使用16位来表示字符。其不同的原因在于Java支持Unicode字符。Unicode定义了可以表示所有人类语言中字符的字符集。最初,Unicode设计为16位,所以Java将char类型设计为16位长。在Java中,char类型是一个无符号的16位数,其取值范围为0到65?535。标准8位的ASCII字符集是Unicode字符集的子集,其范围为0~127。于是,ASCII字符在Java中仍然是有效字符。(ASCII表示美国信息交换标准代码(American Standard Code for Information Interchange)。)
可以把一个由单引号包裹的字符赋予一个字符变量。例如,若把字符X赋予字符变量ch:

可以用println()语句输出char值。例如,下面这行代码输出ch的值:

由于char是一个无符号的16位类型,因此可以在char变量上执行算术运算。例如,考虑以下程序:

程序的输出如下所示:

在程序中,首先把值X赋予ch。然后递增ch的值。结果是,ch包含Y,它是在ASCII(和Unicode)字符集序列中的下一个值。接着,给ch赋值90。在ASCII(或Unicode)字符集中,90对应字符Z。因为ASCII字符集占据了Unicode字符集中的前127个值,所以在其他语言中用到的那些字符伎俩在Java中同样适用。

2.2.4 布尔类型

类型boolean表示真值或假值。Java用保留字true和false定义真值和假值。于是,一个boolean类型的变量或表达式一定是这两个值之一。
下面的程序演示了boolean类型的用法:

程序的输出如下所示:

这个程序有三个令人感兴趣的要点:首先,当用println()方法输出一个boolean值时,显示“true”或“false”。其次,boolean变量的值本身足够用来控制if语句。不需要写像这样的if语句:

最后,关系运算符(例如“<”)的结果是boolean值。这是表达式10>9显示为true的原因。另外,10>9的外面有一对圆括号。这对圆括号是必需的,因为运算符“+”比运算符“>”有更高的优先级(precedence)。当一个运算符比其他运算符具有更高的优先级时,它会比同一表达式中的其他部分先计算。


时间: 2024-08-22 07:40:36

《Java 7程序设计入门经典》一2.2 Java的基本数据类型的相关文章

《Java 7程序设计入门经典》一第2章 数据类型和运算符

第2章 数据类型和运算符 本章要点 了解Java的基本数据类型: 使用字面量: 初始化变量: 了解方法中变量作用域的规则: 使用算术运算符: 使用关系运算符和逻辑运算符: 理解赋值运算符: 理解速记赋值: 理解赋值语句中的类型转换: 使用强制类型转换: 理解表达式中的类型转换. 对任意一种编程语言而言,其基础都是数据类型和运算符.Java也不例外.这些元素定义语言的限制,决定它能够用于哪些类型的任务.幸运的是,Java支持一系列丰富的数据类型和运算符,使其适合于几乎所有类型的编程. 数据类型和运

《Java 7程序设计入门经典》一2.1 为什么数据类型很重要

2.1 为什么数据类型很重要 在Java中,数据类型特别重要,因为Java是一门强类型语言.这意味着,编译器会对所有运算符的类型进行类型检查,以检查类型兼容性.非法操作不会完成编译.于是,强类型检查帮助避免错误,增强可读性.为了使强类型检查能够工作,所有的变量.表达式和值都有类型.例如,这里没有"无类型"变量的概念.另外,值的类型决定了其上运行的操作.在一种类型上允许的操作也许不能在另一种类型上运行.

《Java 7程序设计入门经典》一1.4 Java语言

1.4 Java语言 本书使用Java语言来讲解编程的基础知识.虽然其他编程语言也可以用来达到此目的,但是由于以下两个原因,本书选择了Java:首先,它是世界上使用最广泛的计算机语言之一.所以从实际的观点看,它是绝佳的学习语言.其次,它设计和实现了一些特性,这些特性使得对编程基础知识的介绍变得简单. 但是还有第三个原因.Java展现了现代编程的许多特点.对Java的理解可以使你像专业程序员一样看待和思考编程工作.它是这个时代定义的语言之一. 计算机语言演进是一个正在进行的历史过程,而Java是其

《Java 7程序设计入门经典》一第1章 Java编程基础 1.0

第1章 Java编程基础 本章要点 了解计算机的主要组成: 理解位.字节和二进制计数系统: 了解程序的两种形式: 了解Java的历史和设计理念: 理解面向对象编程的基本原则: 创建.编译并运行一个简单的Java程序: 使用变量: 使用if和for控制语句: 创建代码块: 理解语句是如何放置.缩进和结束的: 了解Java关键字: 理解Java标识符的规则. 仅仅在近十年的时间里,编程就从一门晦涩难懂的学科转变为现代社会不可或缺的一部分,从事编程工作的人也从少变多.其发展原因容易理解.如果仅仅用一个

《Java 7程序设计入门经典》一1.6 Java开发工具包

1.6 Java开发工具包 既然上面已经讨论了Java的历史和理论基础,现在就开始编写Java程序吧.但是,在编译和运行程序前,需要在计算机上安装Java开发工具包(Java Development Kit,JDK).下面会介绍如何在计算机上访问JDK. 注意:如果想在计算机上安装JDK,可以在www.oracle.com/technetwork/java/javase/downloads/index.html下载JDK.请根据计算机的种类执行安装流程.在安装JDK后,就可以编译和运行程序. J

《Java 7程序设计入门经典》一1.7 第一个简单的程序

1.7 第一个简单的程序 编译和运行一个简短的示例程序是开始介绍Java的诸多关键元素的最佳方法.我们将使用以下代码: 下面将运行以下三步: 1)输入程序: 2)编译程序: 3)运行程序. 1.7.1 输入程序 创建一个程序的第一步就是将源代码输入到计算机中.正如前面所介绍的那样,程序的源代码是程序可由人类阅读的形式.必须使用文本编辑器,而不是字处理软件将源代码输入到计算机中.字处理软件一般不仅存储文本信息,还存储格式信息.格式信息会使Java编译器困惑.源代码必须只包含文本.如果使用IDE,则

《Java 7程序设计入门经典》一2.16 习题

2.16 习题 1.为什么Java严格指定基本数据类型的范围和行为? 2.什么是Java的字符类型?它与其他语言的字符类型有什么区别? 3.判断正误:因为非零值是真值,所以boolean值可以是任何值. 4.给定输出: 仅使用一个字符串,写出利用println()方法产生这个输出的方法. 5.下面代码片段有什么错误? 6.请解释递增运算符前缀形式和后缀形式的区别. 7.请举例说明带有"短路"功能的AND运算如何用来防止除以0带来的错误. 8.在表达式中,byte类型和short类型会提

《Java 7程序设计入门经典》一导读

前 言 本书通过Java语言来讲解编程的基础知识.该书假设读者之前没有任何编程经验.本书首先介绍最基本的知识,例如,如何编译和运行Java程序:接着,讨论关键字.运算符和一些形成Java语言的构造.本书还会涉及Java的应用编程接口(Application Programming Interface,API)库.其中,包括Swing框架,它可以用来创建具有图形用户界面(Graphical User Interface,GUI)的程序.还包括集合框架,它可以用来存储对象集合.简而言之,本书旨在对J

《Java 7程序设计入门经典》一3.1 从键盘输入字符

3.1 从键盘输入字符 到目前为止,本书中的示例程序都向用户显示信息,但不从用户接收信息.于是,只使用了控制台输出,没有使用控制台输入(即键盘输入).主要原因在于,许多Java输入需要依赖和使用本书还未讲到的特性.这些特性在后面才会提及.另外,在真实情况下,许多Java程序和applet是图形界面或是窗口界面的,而不是控制台的.因此,本书的例子很少使用控制台输入.但是,有一种控制台输入相对容易使用,那就是从键盘读入字符.因为本章有许多需要用到这个特性的例子,所以在这里讨论它们. 我们将用Syst