基本数据类型及基本操作.ppt_第1页
基本数据类型及基本操作.ppt_第2页
基本数据类型及基本操作.ppt_第3页
基本数据类型及基本操作.ppt_第4页
基本数据类型及基本操作.ppt_第5页
已阅读5页,还剩174页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java程序设计 第2章基本数据类型及基本操作 楚雄师范学院计算机科学系java程序设计课程 2 138 学习目标 1 理解Java语言中标识符的构成方法和关键字的概念 理解变量和常量的作用和声明方法 能正确书写合符Java语法的复杂的表达式和赋值语句 掌握各种运算符的使用 会三种注解方法 2 理解数值数据类型 掌握其运算方法 理解Java语言对字符的编码方法 理解字符数据类型 并掌握其运算方法 理解布尔数据类型 掌握布尔基本运算 理解字符串类型 掌握其基本运 楚雄师范学院计算机科学系java程序设计课程 3 138 学习目标 运算 理解类型转换的概念和种类 掌握各种数据类型之间的转换方法 3 理解Java语言输入输出的基本方法 能理解并掌握程序中控制台输入和输出的实现方法 包括Scanner类的使用与println和printf的使用 以及使用对话框实现输入和输出的方法 包括JOptionPane类中的showInputDialog和showMessageDialog方法 4 理解并掌握好的编程风格 理解程序测试和调试的基本概念和基本方法 楚雄师范学院计算机科学系java程序设计课程 4 138 内容摘要 2 1引言2 2变量 常量与表达式2 3数值数据类型及其运算2 4字符数据类型及其运算2 5类型转换 楚雄师范学院计算机科学系java程序设计课程 5 138 内容摘要 2 6布尔数据类型及其运算2 7字符串类型String2 8输入2 9输出2 10编程风格2 11测试与调试 楚雄师范学院计算机科学系java程序设计课程 6 138 内容摘要 2 1引言2 2变量 常量与表达式2 3数值数据类型及其运算2 4字符数据类型及其运算2 5类型转换 楚雄师范学院计算机科学系java程序设计课程 7 138 内容摘要 2 6布尔数据类型及其运算2 7字符串类型String2 8输入2 9输出2 10编程风格2 11测试与调试 楚雄师范学院计算机科学系java程序设计课程 8 138 2 1引言 在前面章节 我们介绍了如何创建 编译和运行Java程序 从前面章节介绍的简单Java程序中我们可以看到 程序中包含数据和运算两种基本成份 它们描述了事物的属性和行为 在本章中 我们将介绍Java的基本数据类型 基本运算和相关的概念 楚雄师范学院计算机科学系java程序设计课程 9 138 内容摘要 2 1引言2 2变量 常量与表达式2 3数值数据类型及其运算2 4字符数据类型及其运算2 5类型转换 楚雄师范学院计算机科学系java程序设计课程 10 138 2 2变量 常量与表达式2 2 1标识符 关键字与注释 我们首先来看一个编写程序的例子 例2 1编写一个Java程序 它接受用户输入两个实数 并输出其平均值 解答 完成该问题的程序前面曾给出过 这里重新给出 并配上注释 1 本程序计算两个数的平均值 2运行时 先由用户输入两个数然后 3系统在屏幕上显示出它们的平均值 楚雄师范学院计算机科学系java程序设计课程 11 138 2 2 1标识符 关键字与注释 4importjavax swing JOptionPane 5publicclassaverage26 7publicstaticvoidmain String args 8 9Stringv1 v2 10floata b c 11v1 JOptionPane showInputDialog 输入第一个数 楚雄师范学院计算机科学系java程序设计课程 12 138 2 2 1标识符 关键字与注释 13a Float parseFloat v1 14b Float parseFloat v2 15c a b 2 16System out println Theaverageis c 17 18 例子说明 该程序由一个类构成 该类由两个部分构成 楚雄师范学院计算机科学系java程序设计课程 13 138 2 2 1标识符 关键字与注释 第一部分是类头 由第5行给出 它用class声明从本处开始的是一个类 用public声明该类是公共的 并给出了本类的类名为average2 类的第二部分称为类体 由第6行到第18行构成 它以 开始且以 结束 中间部分是由方法构成 该类包含一个称为main的方法 第7行至第17行 在这个程序中main方法包含有8条语句 语句使用分号 结束 其中 楚雄师范学院计算机科学系java程序设计课程 14 138 2 2 1标识符 关键字与注释 其中第9行是一条声明语句 它使用String声明2个字符串变量v1和v2 第10行也是一条声明语句 使用float声明三个实型变量a b和c 第11 12行都是调用类JOptionPane的方法showInputDialog来接受用户输入数据 如图2 1所示 并返回输入结果 然后分别赋值给 即存放到 v1和v2 楚雄师范学院计算机科学系java程序设计课程 15 138 2 2 1标识符 关键字与注释 楚雄师范学院计算机科学系java程序设计课程 16 138 2 2 1标识符 关键字与注释 第11 12行中 赋值给v1和v2的是字符串数据 需要转换为算术类型如float实数型 才能进行算术运算 所以第13 14行调用Float类的方法parseFloat分别v1和v2转换为float实数型数据并分别赋值给 即存放到 变量a和b 第15行计算a和b的平均值 并将计算结果赋值给 存放到 变量c 第16行是System out println语句 它在屏幕上输出 Theaverageis c的结果 楚雄师范学院计算机科学系java程序设计课程 17 138 2 2 1标识符 关键字与注释 这里 Theaverageis 是一个字符串 通过加号 把它与变量c的值合并成一个新的串作为结果输出 该程序的第1 2 3行是注释行 由 开始后跟注释的文字 且由 结束 注释并不是程序的一部分 它只起到说明的作用 以便使程序可读性强 编译程序在编译源程序时会去除注释 不会编译它的 第4行是导入 import 语句 它导入Java扩展包javax的swing包中的类JOptionPane 楚雄师范学院计算机科学系java程序设计课程 18 138 2 2 1标识符 关键字与注释 该类提供了方法showInputDialog 这能保证第11 12行正确执行 在上述例子中 我们用到了许多符号 如v1 println average2 等等 这些符号我们称为标识符 它是一个由字母 数字 下划线 和美元符号 构成的 且不能由数字开始的符号串 标识符不能是关键字 也不能是true false和null 标识符是用来命名变量 常量 方法 类和 楚雄师范学院计算机科学系java程序设计课程 19 138 2 2 1标识符 关键字与注释 包等 例如 ComputeVolume 6 average root1 sum和showInputDialog都是合法的标识符 而2 root v 1和123都不是合法标识符 注 与C语言相同 在Java语言中大小写是需要区分的 所以 像X和x是两个不同的标识符 在上述例子中 我们还用到另一些符号 如public class static和void等 这些符号我们称为关键字 它是指Java系统保留 楚雄师范学院计算机科学系java程序设计课程 20 138 2 2 1标识符 关键字与注释 下来自己使用的 用来作特殊用途且具有特殊意义的符号串 又称为保留字 例如 编译器看到class 就知道class后面的标识符是该类的名字 在例2 1中的关键字还有import和float 表2 1列出了Java语言保留专用的50个关键字 楚雄师范学院计算机科学系java程序设计课程 21 138 2 2 1标识符 关键字与注释 楚雄师范学院计算机科学系java程序设计课程 22 138 2 2 1标识符 关键字与注释 注 关键字goto和const是C 保留的关键字 但是在Java中不能使用 如果它们出现在Java程序中 Java编译器能够识别它们并产生错误信息 在例2 1中 我们使用了与第1章例子不同的方法来进行注释 事实上 在Java程序中 注释可使用三种方法 第一种是使用 开始后跟注释的文字 且注释文字不能换行 即以 开始的注释 其以换行符为结束标志 楚雄师范学院计算机科学系java程序设计课程 23 138 2 2 1标识符 关键字与注释 第二种方法是 以 开始后跟注释的文字 且注释文字可以换行 注释以 结束 第三种方法是 以 开始后跟注释的文字 且注释文字可以换行 注释以 结束 第三种方法不同于第二种方法的地方是 它可以通过JDK的javadoc命令把java源程序中的相应注释转换为HTML网页文件 楚雄师范学院计算机科学系java程序设计课程 24 138 2 2 2变量 变量是用来存放数据的 它使用标识符作为名字 在前面所有例子中 我们都使用了变量 由于数据有各种类型 大小不等 且不同类型的数据其运算也不完全一致 所以 变量也具有类型 不同类型变量存放的数据的大小或精度也不一样 能进行的运算也各异 楚雄师范学院计算机科学系java程序设计课程 25 138 2 2 2变量 为了使用变量 我们必须声明它 必须说明其类型和名字 变量声明的格式为 Java语言有各种类型符 可以声明各种类型变量 后面我们将逐步介绍 下面是一些变量声明的例子 楚雄师范学院计算机科学系java程序设计课程 26 138 2 2 2变量 inta 把a声明为一个整型变量 用来存放整型值floatv1 v2 average 把v1 v2和average声明为单精度实数类型 用来存放实型数doublex1 x2 把x1和x2声明为双精度实数类型 用来存放实型数charch1 ch2 把ch1和ch2声明为字符型 用来存放单个字符 楚雄师范学院计算机科学系java程序设计课程 27 138 2 2 2变量 变量在声明的同时也可以存放相应数据 我们把这种情形称为变量初始化 下面是变量初始化的例子 inta 6 把a声明为一个整型变量 并初始化为6floatv1 2 3 v2 5 6 把v1和v2声明为单精度实数类型 并分别初始化为2 3和5 6 楚雄师范学院计算机科学系java程序设计课程 28 138 2 2 2变量 注 按照习惯 变量名使用小写字母 如果一名字由多个词组成 把所有词连接起来 除了第一个词 其他词的第一个字母都要大写 例如 computeVolum和equationRoot1 楚雄师范学院计算机科学系java程序设计课程 29 138 2 2 3常量 常量是用来表示永远都不会发生变化的数据 声明常量的语法格式为 final final是Java的关键字 表示常量不会改变 下面是一些常量声明的例子 finalfloatPI 3 1415 finalintG 10 K 2 楚雄师范学院计算机科学系java程序设计课程 30 138 2 2 3常量 注 常量必须在使用前声明和初始化 一经说明 就不能改变常量的值 按照习惯 常使用大写字母命名 如PI 楚雄师范学院计算机科学系java程序设计课程 31 138 2 2 4表达式 在例2 1中 我们还用到了 和 等运算符 运算符是用来构成表达式的 所谓表达式是使用各种运算符连接变量 常量和方法而成的式子 例如 b b 4 a c 2 a 表达式必须计算出一个值来 和我们熟知 楚雄师范学院计算机科学系java程序设计课程 32 138 2 2 4表达式 的情形一样 在计算表达式时 必须按照一定的计算顺序进行 不同的运算符具有不同的优先级别 表达式中的运算符决定了计算该表达式时顺序 同级别的运算符按照结合性来确定计算顺序 表2 2给了一些运算符及其优先级别和结合性 Java的所有运算符见本书附录 楚雄师范学院计算机科学系java程序设计课程 33 138 2 2 4表达式 楚雄师范学院计算机科学系java程序设计课程 34 138 2 2 4表达式 表中不同行的运算符 它们的优先级别是不一样的 在表中由上往下优先级别由高到低 在同一行的运算符 优先级别相同 当它们在表达式中处于相邻时应按结合原则确定运算顺序 下面我们以例说明 假设有int型变量a b c和d 其值分别为1 2 3和4 表达式a b c d 5 2的运算顺序与我们在数学中是一样的 由左往右运算顺序是 楚雄师范学院计算机科学系java程序设计课程 35 138 2 2 4表达式 第1个乘法 c d 12 除法 12 5 2 第2个乘法 2 2 4 加法 a b 3 减法 3 4 1 其中由于这是int表达式 运算过程中的每一步按常规有小数时应舍去小数部分 注意 不进行四舍五入处理 这样12除以5为2 4 结果是12 5 2 表达式 a b c d 5 2的运算顺序与我们在数学中是一样的 楚雄师范学院计算机科学系java程序设计课程 36 138 2 2 4表达式 由左往右运算顺序是 加法 a b 1 减法 1 3 2 第1个乘法 2 d 8 除法 8 5 1 乘法 1 2 2 表达式 a中a先进行自增1 即累加1 的运算 使变量a为2 然后a作为表达式中的一项被引用 表达式结果为2 同样 表达式 b中的b先进行自减1 即累减1 的运算 然后b作为表达式中的一项被引用 表达式结果为1 可见 a和 b是先运算后引用 楚雄师范学院计算机科学系java程序设计课程 37 138 2 2 4表达式 但是 表达式a 中先引用a的值参加表达式运算 然后再进行自增1 即累加1 的运算 表达式结果为1 变量a中的值结果2 同样 表达式b 中先引用b的值参加运算 然后再进行自减1 即累减1 的运算 表达式结果为2 变量a中的值变为1 表达式a b c d 5 2的运算顺序是 引用b的值 后缀 前缀 引用c的值 引用d 后缀 楚雄师范学院计算机科学系java程序设计课程 38 138 2 2 4表达式 第1个乘法 第2个乘法 除法 第个3乘法 加法 其中b 中b的值2先被先引用参与表达式运算 然后再进行 后缀 使b为3 d 中d的值4先被引用参与表达式运算 然后再进行 后缀 使d为3 其中 c 前缀 先进行 运算使c的值为2 然后被引用参与表达式运算 楚雄师范学院计算机科学系java程序设计课程 39 138 2 2 4表达式 最后表达式结果为4 运算符 只能用于int型运算 它计算余数 所以表达式5 3和5 3 的结果都为2 5 3的结果 2 因为5 1 3 2 5 1 3 2 5 1 3 2 赋值表达式a b a b a b a b a b分别为a a b a a b a a b a a b a a b 赋值表达式a b c 1 楚雄师范学院计算机科学系java程序设计课程 40 138 2 2 4表达式 等价于a b c 1 其运算结束后 a b和c分别为9 8和4 条件运算符 构成了条件表达式 中如果成立 它的运算结果为 否则为 表达式 a 3 b a b的结果为a的值1 因为a 3 b是成立的 表达式 a b a b的结果为b的值2 因为a b是不成立的 楚雄师范学院计算机科学系java程序设计课程 41 138 2 2 4表达式 注 5 2是整数除法 其结果为2 而5 0 2实数除法 其结果为2 5 所以 如果a b和D均为整型变量 则数学表达式在Java中应写为 b D 2 0 a 楚雄师范学院计算机科学系java程序设计课程 42 138 2 2 5赋值语句与赋值表达式 运算符 可以构成赋值语句和赋值表达式 赋值语句的语法格式为 其中 的作用是使其左边的变量的值变为其右边表达式的结果 这个过程称为赋值 作为例子 我们来看下列代码 floata 12 b 34 average 把12赋值给变量a 把34赋值给变量b 楚雄师范学院计算机科学系java程序设计课程 43 138 2 2 5赋值语句与赋值表达式 average a b 2 计算a和b的平均值 并将其赋值给变量average由于 是运算符 所以 在Java中我们可以把赋值语句看作表达式 这样 下列例子是正确的 System out println a 12 它等同于下面语句 a 12 楚雄师范学院计算机科学系java程序设计课程 44 138 2 2 5赋值语句与赋值表达式 System out println a 下面的语句也是正确的 a b c 12 它等同于下面语句 c 12 b c a b 楚雄师范学院计算机科学系java程序设计课程 45 138 2 2 5赋值语句与赋值表达式 注 在赋值语句中 左边变量的数据类型必须与右边的表达式结果值的数据类型兼容 例如 int型的值可以赋值给int型变量 也可以赋值给float型变量 楚雄师范学院计算机科学系java程序设计课程 46 138 内容摘要 2 1引言2 2变量 常量与表达式2 3数值数据类型及其运算2 4字符数据类型及其运算2 5类型转换 楚雄师范学院计算机科学系java程序设计课程 47 138 2 3数值数据类型及其运算 我们上节提到 不同类型数据的大小是不一样的 所以 它们所需要的存储空间大小也各不相同 编译器将根据变量或常量的数据类型为它们分配所需要的存储空间 Java语言为数值 字符值和布尔数据提供了多种基本数据类型 本节介绍数值类型及其相关运算 楚雄师范学院计算机科学系java程序设计课程 48 138 2 3数值数据类型及其运算 Java语言提供了六种数值类型 四种整型和两种浮点类型 表2 3列出了六种数值类型及其值范围所占的存储空间 楚雄师范学院计算机科学系java程序设计课程 49 138 2 3数值数据类型及其运算 楚雄师范学院计算机科学系java程序设计课程 50 138 2 3数值数据类型及其运算 注 在Java语言中 byte short int long都是有符号数 并且采用32 bitIEEE754标准表示float型数据 采用64 bitIEEE754标准表示double型数据 我们在Java程序中 经常需要直接书写数据 例如下面语句中的3 1415和100 finalfloatPI 3 1415 intbound 100 楚雄师范学院计算机科学系java程序设计课程 51 138 2 3数值数据类型及其运算 这种直接书写的数据 我们称之为直接量 literal 一般情况下 整型直接量是可以直接赋值给整型变量的 但当直接量太大以致超出变量的范围时 就会出现编译错误 例如 byteb 1000会引起编译错误 这是因为byte型变量存放不下1000 整型直接量默认为是int型的 其值在 231 2147483648 到231 1 147483647 之间 楚雄师范学院计算机科学系java程序设计课程 52 138 2 3数值数据类型及其运算 当需要写一个long型的整型直接量 则应在其后加字母L或l L的小写 如2147483648L 默认情况下 整型直接量是十进制数 然而 在Java语言中 直接量也可以使用八进制和十六进制 要写一个八进制数 用0 零 开头 要写一个十六进制数 用0 x或0X 零x 开头 例如 下列语句输出八进制数和十六进制数 楚雄师范学院计算机科学系java程序设计课程 53 138 2 3数值数据类型及其运算 System out println 056 输出八进制数56System out println 0 x5F 输出十六进制数5F除了整型直接量外 我们也可以写浮点型直接量 浮点型直接量被默认为是double型的 例如 5 0认为是double型大同而不是float型 楚雄师范学院计算机科学系java程序设计课程 54 138 2 3数值数据类型及其运算 同样地 可以通过在直接量后面加字母f或F表示float型直接量 加d或D表示double型直接量 例如 10 2f表示float型值 10 2d表示double型值 浮点直接量也可以使用科学记数法 例如 0 001234可以写成1 234e 3或1 234E 3 123 45可以写成1 2345e2或1 2345E2 楚雄师范学院计算机科学系java程序设计课程 55 138 内容摘要 2 1引言2 2变量 常量与表达式2 3数值数据类型及其运算2 4字符数据类型及其运算2 5类型转换 楚雄师范学院计算机科学系java程序设计课程 56 138 2 4字符数据类型及其运算 字符可分为两种类型 可打印字符和不可打印字符 其中可打印字符包括小写字母 大写字母 数字 标点符号以及诸如 和 这样的特殊字符等 它们都有相应的图形符号 不可打印字符有换行符 空格符 跳格符和响铃符等 它们没有相应的图形符号 楚雄师范学院计算机科学系java程序设计课程 57 138 2 4字符数据类型及其运算 字符数据类型char用来表示单个字符 字符型直接量使用单引号括起来 如字符a的直接量写为 a 每个字符在计算机中使用二进制表示 其表示方法称为编码 encoding 字符有许多不同的编码方法 编码方案定义了字符如何编码 楚雄师范学院计算机科学系java程序设计课程 58 138 2 4字符数据类型及其运算 ASCII码 AmericanStandardforInformationInterchange 美国标准标准交换码 是一种计算机广泛使用的字符编码方案 它定义了128个基本字符 由7个二进制位表示 在计算机中 ASCII码使用一个字节 8位 存储 其高位为0 8位的ASCII码又称为扩展ASCII码 在Java语言中 字符采用的是统一码 Unicode 方案 楚雄师范学院计算机科学系java程序设计课程 59 138 2 4字符数据类型及其运算 它是由UnicodeConsortium建立的一种16位编码方案 支持世界不同语言的文本交换 处理和显示 详细信息参见统一网站www unicode org Unicode占两个字节 书写上以 u开头的4位十六进制数表示 范围从 u0000 到 uFFFF 例如 单词 coffee 翻译成中文需要两个字 楚雄师范学院计算机科学系java程序设计课程 60 138 2 4字符数据类型及其运算 符 它们的统一码为 u5496 u5561 统一码可以表示65536个字符 且前128个统一码即 u0000 到 u00FF 用来表示ASCII字符 例如 下面两条语句都把字符A赋值给char型变量letter charletter A charletter u0041 楚雄师范学院计算机科学系java程序设计课程 61 138 2 4字符数据类型及其运算 在Java语言中 对于不可打印的特殊字符以及 反斜杠 单引号 和 双引号 等字符 它们对应的直接量 需要转义字符来表示 即以反斜杠符号 开始的一个字符 例如 n 表示换行符 表示反斜杠 表示单引号 这种表示法也称为换码序列 表2 4列出了Java语言中的转义序列 楚雄师范学院计算机科学系java程序设计课程 62 138 2 4字符数据类型及其运算 楚雄师范学院计算机科学系java程序设计课程 63 138 2 4字符数据类型及其运算 由前述我们知道 字符在计算机内部是使用二进制编码的 所以 在Java中字符型的直接量可以进行算术加或减运算 例如 字符 A 的Unicode码为 u0041 而 A 1的Unicode码为 u0042 表示字符 B 如果把它作为int型数据时则为66 楚雄师范学院计算机科学系java程序设计课程 64 138 内容摘要 2 1引言2 2变量 常量与表达式2 3数值数据类型及其运算2 4字符数据类型及其运算2 5类型转换 楚雄师范学院计算机科学系java程序设计课程 65 138 2 5类型转换 表达式的计算结果具有一个特定的数据类型 该类型依赖于表达式中的各种运算对象 常量 变量 函数返回值 这些运算对象的类型可以互不相同 但编译器可以根据情况为表达式结果确定一个特定类型 这种在表达式运算过程中系统根据运算对象的类型确定计算结果类型的现象称为类型转换 类型转换的原则是把简单类型对象转换为复杂类型对象 其方式有隐式类型转换和显示类型转换 如图2 2所示 楚雄师范学院计算机科学系java程序设计课程 66 138 2 5类型转换 楚雄师范学院计算机科学系java程序设计课程 67 138 2 5类型转换 实际上 表达式在计算过程中即要进行类型转换 因为不同数据类型的算术运算在计算机内实现时采用的运算指令是不完全相同的 事实上 不同类型数据与具体的运算符具有关联性 换言之 不同类型数据在做相同算术运算时 其在计算机内部实现的指令是不相同的 例如 同是加 运算 编译器为 12 56 与 12 3 4 78 选用的运算指令是不相同的 楚雄师范学院计算机科学系java程序设计课程 68 138 2 5 1隐式类型转换 隐式类型转换是自动发生的 不需要我们做任何工作 所有数值型的值都可以赋值给范围更大的类型的变量 所以 char类型可以用于任何int类型合法使用的地方 浮点型数值可以赋值给任何具有相同或更高精度的浮点变量 例如 下列语句是合法的 楚雄师范学院计算机科学系java程序设计课程 69 138 2 5 1隐式类型转换 1intv1 2charletter B 字符B的Unicode为 u0042 该代码对应的十进制数为663v1 letter 12 letter中的编码被自动转换为int型数据 然后与12相加4System out println Thevalueis v1 楚雄师范学院计算机科学系java程序设计课程 70 138 2 5 1隐式类型转换 在第3行 letter中的编码被自动转换为int型数据 然后与12相加 结果赋值给int型变量v1 该段语句输出结果为 Thevalueis 78下列语句也是合法的 1floatfv 123 456F fv被初始化为float型直接量 楚雄师范学院计算机科学系java程序设计课程 71 138 2 5 1隐式类型转换 2doubledv1 dv2 23 985 dv2被初始化为double型直接量3dv1 dv2 fv 4System out println Thevalueis dv1 在第3行中 float型变量fv中数据首先被自动转换为double型 然后与dv2相加 结果赋值给double型变量dv2 该段语句输出结果为 楚雄师范学院计算机科学系java程序设计课程 72 138 2 5 1隐式类型转换 Thevalueis 147 4410012817383注 上述隐式类型转换过程中 变量letter和变量fv本身没有被转换 被转换的是从它们引用来的数据 而下列语句却是不合法的 1floatfv1 fv2 123 456F fv2被初始化为float型直接量2doubledv 23 985 dv被初始化为double型直接量 楚雄师范学院计算机科学系java程序设计课程 73 138 2 5 1隐式类型转换 3fv1 dv fv2 4System out println Thevalueis dv1 Java编译器将指出在第3行中 dv的double型数据参与float型数据fv2运算并赋值给float型变量fv1时 将有可能损失精度 表2 5列出了各种类型可以隐式地转换为的类型 楚雄师范学院计算机科学系java程序设计课程 74 138 2 5 1隐式类型转换 从表2 5可以看出 char型数据可以与其他数值型数据进行算术运算 并赋值给相应数值型变量 楚雄师范学院计算机科学系java程序设计课程 75 138 2 5 2显式类型转换 当某种类型不能通过隐式转换赋值给另一种类型时 则必须通过强制转换显式地完成类型转换 例如 char型数据不能隐式地转换为byte类型 所以 必须对char型数据进行类型强制转换 才能赋值给byte类型变量 注 再一次说明 把某类型变量的数据转换为另一类型时 只是从原类型变量中引用数据 楚雄师范学院计算机科学系java程序设计课程 76 138 2 5 2显式类型转换 然后转换该数据的类型 而原类型变量本身及其中数据并没有发生类型转换 显式类型转换的语法格式为 它把的结果数据的类型转换为表示的类型 其中 的运算优先级低于 后置 楚雄师范学院计算机科学系java程序设计课程 77 138 2 5 2显式类型转换 后置 前置 前置 一元 和 一元 等 而高于 以及其他算法运算符等 其结合性为由右向左 例如 short 12 3 4 6的结果数据是double类型 而不是short类型 因为 short 优先级高于 所以先进行的运算是 short 12 3 其结果为short类型数据12 然后进行12 4 6运算 即把12隐式转换为 楚雄师范学院计算机科学系java程序设计课程 78 138 2 5 2显式类型转换 double类型并与4 6进行 运算 结果为double类型数据16 6 注 实数型直接量如4 6的默认类型是double类型 当进行类型强制转换时 转换后的新值必须是转换前的旧值的最佳表示 例如 下列语句把float型数据显式地转换为int类型 floatold V 12 6F 楚雄师范学院计算机科学系java程序设计课程 79 138 2 5 2显式类型转换 intnew V int old V 转换时 12 6的小数部分被舍去 结果new V被初始化为12 注 也有一些类型数据 不能显式地强制转换为其他类型 例如 后面介绍的boolean类型数据就不能显式地强制转换为其他类型 楚雄师范学院计算机科学系java程序设计课程 80 138 内容摘要 2 6布尔数据类型及其运算2 7字符串类型String2 8输入2 9输出2 10编程风格2 11测试与调试 楚雄师范学院计算机科学系java程序设计课程 81 138 2 6布尔数据类型及其运算 在编制程序过程中 经常需要设计条件判断或条件表达式 而条件表达式的结果只能是两种情形之一 即要么为 真 要么为 假 在Java语言中 真 采用true表示 假 采用false表示 它们就是布尔数据类型 Boolean 直接量 布尔类型也称为逻辑类型 布尔数据也称为逻辑数据 本节介绍布尔数据类型及其运算 楚雄师范学院计算机科学系java程序设计课程 82 138 2 6 1关系表达式 最简单的条件表达式是一个关系运算符连接两个数据而形成的简单关系表达式 如a 0 b 0 x y等 表2 6列出了Java语言提供的六种关系运算符 在表2 6中还给出了关系运算符的优先级和结合性 并给了若干例子 楚雄师范学院计算机科学系java程序设计课程 83 138 2 6 1关系表达式 楚雄师范学院计算机科学系java程序设计课程 84 138 2 6 1关系表达式 关系运算符的优先级低于算术运算符 而高于赋值类运算符 如 例如 关系表达式12 4 6的结果为false 字符也可以进行比较 字符的比较是按它们的统一码来进行的 例如 因为 a 统一码为 u0061 A 的统一码为 u0041 所以 a 大于 A 楚雄师范学院计算机科学系java程序设计课程 85 138 2 6 2布尔运算 要表达复杂条件如 a 0且b 0 只有简单关系表达式是不够的 我们还得有布尔运算 与 和 并且 同时 或 及 非 它们的符号见表2 7 楚雄师范学院计算机科学系java程序设计课程 86 138 2 6 2布尔运算 楚雄师范学院计算机科学系java程序设计课程 87 138 2 6 2布尔运算 如果要描述条件 a 0且b 0 则我们写为 a 0 b 0 这里关系运算符的计算优先级要比布尔运算符如 与 和 或 高 布尔运算符含义见表2 8 2 9 2 10和2 11 楚雄师范学院计算机科学系java程序设计课程 88 138 2 6 2布尔运算 楚雄师范学院计算机科学系java程序设计课程 89 138 2 6 2布尔运算 楚雄师范学院计算机科学系java程序设计课程 90 138 2 6 2布尔运算 楚雄师范学院计算机科学系java程序设计课程 91 138 2 6 2布尔运算 楚雄师范学院计算机科学系java程序设计课程 92 138 2 6 2布尔运算 用布尔运算符连接而成的式子称为布尔表达式 布尔表达式的计算结果只有两种情形 即真 true 值和假 false 值 它们可以存放在布尔类型变量中 布尔类型变量采用Boolean声明 例如 下列是正确的布尔表达式 a 0 b b 4 a c 0 楚雄师范学院计算机科学系java程序设计课程 93 138 2 6 2布尔运算 b 0 c 0 注意 关系运算符的优先级比布尔运算符 除 运算符外 高 比算术运算符低 运算符的优先级除了比圆括号 数组下标 对象成员访问符 后置 前置 后置 前置 一元 和 一元 低之外 都比其他运算符高 为了提高运算效率 系统在运算含有 和 楚雄师范学院计算机科学系java程序设计课程 94 138 2 6 2布尔运算 运算符的逻辑表达式时 只要得到了结果真或假 其计算过程即停止 假设exp1和exp2是表达式 且exp1的值为false 则在对布尔表达式exp1 exp2求值时 不会对exp2求值 因为false exp2的结果必为false 类似地 如果exp1的值为true 则在对布尔表达式 楚雄师范学院计算机科学系java程序设计课程 95 138 2 6 2布尔运算 exp1 exp2求值时 不会对exp2求值 因为true exp2的结果必为true 楚雄师范学院计算机科学系java程序设计课程 96 138 内容摘要 2 6布尔数据类型及其运算2 7字符串类型String2 8输入2 9输出2 10编程风格2 11测试与调试 楚雄师范学院计算机科学系java程序设计课程 97 138 2 7字符串类型String 在2 4节中 我们介绍了字符类型 它是用来处理单个字符的 要处理多个字符构成的序列 需要使用字符串类型 所谓字符串就是由多个字符构成的序列 构成字符串的字符个数称为字符串长度 字符串类型的直接量使用双引号括起来 例如 由字符a b和c构成的一个字符串直接量为 abc 其长度为3 由一个空格符构成的字符串为 其长度为1 长度为0 楚雄师范学院计算机科学系java程序设计课程 98 138 2 7字符串类型String 的字符串记为 且称其为空串 Java使用String类型来声明字符串类型变量 它可以存储字符串 例如 下列是合法的语句 Strings1 s2 s3 Hi s1 s3 s2 Hesaid Comeon 楚雄师范学院计算机科学系java程序设计课程 99 138 2 7字符串类型String 注 在当双引号也作为字符串中的一个字符时 该双引号使用转义序列表示法 如 字符串最常用的一种运算是连接运算 其运算符使用加号 例如 s1 abc 123 执行后 s1中的字符串为 abc123 字符串的连接符号 与作为算术运算的加号 的优先级和结合性是相同的 并且可以 楚雄师范学院计算机科学系java程序设计课程 100 138 2 7字符串类型String 同时用于字符串和其他类型数据 例如 abc 12的运算结果是一个字符串 abc12 12先转换为字符串 再连接 Itis true的运算结果是字符串 Itistrue true先转换为字符串 再连接 abc 3 4的运算结果是一个字符串 abc34 3先转换为字符 3 然后把 abc 和 3 连接为 abc3 接着把4转换为字符串再连接 楚雄师范学院计算机科学系java程序设计课程 101 138 2 7字符串类型String abc 3 4 的运算结果是一个字符串 abc7 注 字符串 a 与字符 a 是不同类型的数据 不能混用 例如 下列语句都是错误的 Strings1 a chars2 a 楚雄师范学院计算机科学系java程序设计课程 102 138 2 7字符串类型String 当字符串是由数值直接量构成时 该字符串的类型也能转换为数值类型 例如 字符串 1234 可转换为整数1234 字符串 1234 可转换为整数 1234 字符串 1 23 可转换为整数 1 23 把一个由数值构成的字符串转换为相应的数值类型数据 必须使用特定预定义类的方法来完成 表2 12列出可以实现数值字符串转换为数值数据的方法 楚雄师范学院计算机科学系java程序设计课程 103 138 2 7字符串类型String 楚雄师范学院计算机科学系java程序设计课程 104 138 2 7字符串类型String 注 转换数值串时 数值串中不能包含除负号 和小数点 外的非数值字符 例如 12 和 123g 在转换时将发生运行时错误 类型String实际上是一个Java预定义类 而不是如同int那样的基本类型 它称为引用类型 引用数据类型将在后面章节介绍 楚雄师范学院计算机科学系java程序设计课程 105 138 内容摘要 2 6布尔数据类型及其运算2 7字符串类型String2 8输入2 9输出2 10编程风格2 11测试与调试 楚雄师范学院计算机科学系java程序设计课程 106 138 2 8输入 一般而言 几乎所有面向用户的程序都具有输入功能 输入是用户在程序执行过程中 向程序传达信息以实现控制程序执行过程或者提供处理数据的一个重要方法 本节介绍两种实现输入的方法 一种是通过控制台输入数据 一种是通过对话框输入数据 楚雄师范学院计算机科学系java程序设计课程 107 138 2 8 1从控制台输入 Java并没有直接支持键盘输入 而是通过预定义类Scanner来实现从控制台输入数据 要使用Scanner类实现输入 就得用Scanner创建一个从键盘读入的对象 然后使用该对象调用类Scanner提供的输入方法来完成键盘输入 创建一个从键盘读入的Scanner对象的语法格式为 楚雄师范学院计算机科学系java程序设计课程 108 138 2 8 1从控制台输入 Scanner newScanner System in 其中System in是Java用来表示标准输入设备的 在默认情况下 标准输入设备指的是键盘 类Scanner提供的输入方法有多个 表2 13列出了这些方法 楚雄师范学院计算机科学系java程序设计课程 109 138 2 8 1从控制台输入 楚雄师范学院计算机科学系java程序设计课程 110 138 2 8 1从控制台输入 方法的调用格式为 下面通过例子说明如何使用Scanner类实现键盘输入 例2 2输入两个实数 计算它们的平均值并显示在屏幕上 解答 求解的程序如下 楚雄师范学院计算机科学系java程序设计课程 111 138 2 8 1从控制台输入 1 计算两个数的平均值 2importjava util Scanner 3publicclassaverage34 5publicstaticvoidmain String args 6 楚雄师范学院计算机科学系java程序设计课程 112 138 2 8 1从控制台输入 7floata b c 8Scanners newScanner System in 9System out println 输入第一个数 10a s nextFloat 11System out println 输入第二个数 楚雄师范学院计算机科学系java程序设计课程 113 138 2 8 1从控制台输入 12b s nextFloat 13c a b 2 14System out println 平均值为 c 15 16 程序执行过程 如图2 3所示 楚雄师范学院计算机科学系java程序设计课程 114 138 2 8 1从控制台输入 楚雄师范学院计算机科学系java程序设计课程 115 138 2 8 1从控制台输入 例子说明 为了使用Scanner类 需要把它导入到本程序中来 而第2行的作用正在于此 第8行声明了一个对象变量s 同时创建一个从键盘读的Scanner对象 并把该对象的引用赋值给对象变量s 这样 第10 12行就通过它调用类Scanner的方法读float型数据 每次读数据前 由第9 11行输出提示信息 楚雄师范学院计算机科学系java程序设计课程 116 138 2 8 1从控制台输入 注 在使用Scanner类实现输入时 输入的数据中不能有非法字符 否则将发生错误 例2 3求解一元一次方程 解答 求解的程序如下 1 求解一元一次方程 ax b 0 2importjava util Scanner 3publicclasslineEquation4 楚雄师范学院计算机科学系java程序设计课程 117 138 2 8 1从控制台输入 5publicstaticvoidmain String args 6 7doublea b x 8Scanners newScanner System in 9System out println 输入方程中的一次项系数 楚雄师范学院计算机科学系java程序设计课程 118 138 2 8 1从控制台输入 10a s nextDouble 11System out println 输入方程的常数项 12b s nextDouble 13x b a 14System out println 方程 a x b 0的解为 x x 楚雄师范学院计算机科学系java程序设计课程 119 138 2 8 1从控制台输入 16 程序执行过程 如图2 4所示 楚雄师范学院计算机科学系java程序设计课程 120 138 2 8 1从控制台输入 楚雄师范学院计算机科学系java程序设计课程 121 138 2 8 2使用输入对话框输入 使用对话框输入 可以编写出图形化输入界面 例2 1中我们已经使用过输入对话框 输入对话框是由类JOptionPane提供的方法showInputDialog来实现的 该方法是静态的 static 这意味着 不用创建对象即可通过类来调用它 调用showInputDialog的语法格式为 JOptionPane showInputDialog 楚雄师范学院计算机科学系java程序设计课程 122 138 2 8 2使用输入对话框输入 其中将在输入对话框中显示 作为输入提示信息 当用户通过对话框输入数据并按确定按钮后 该输入数据作为字符串类型将返回 并赋值给 然而 使用输入对话框输入的数据是字符串类型的 需要我们使用2 7节介绍的方法 见表2 12 进行类型转换 另外 由于类JOptionPane属于扩展类 处于javax swing位置 所以使用前需要导入它 楚雄师范学院计算机科学系java程序设计课程 123 138 2 8 2使用输入对话框输入 下面再给出一个使用对话框进行输入的例子 该例子是例2 3的另一个解法 例2 4使用对话框 求解一元一次方程 解答 求解的程序如下 1 求解一元一次方程 ax b 02要求 使用对话框输入 3importjavax swing

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论