资源预览内容
第1页 / 共60页
第2页 / 共60页
第3页 / 共60页
第4页 / 共60页
第5页 / 共60页
第6页 / 共60页
第7页 / 共60页
第8页 / 共60页
第9页 / 共60页
第10页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
学习导读本章是学习Java语言必须经过的基础阶段 通过本章的学习 应该能够对Java程序的构成有一个基本的理解 能够灵活运用Java语言提供的各种数据类型和运算符 面向对象的编程也是以面向过程编程为基础而发展起来的 因为在对象的方法等程序片内部 仍然需要严格遵守传统的结构化程序设计原则 因此 熟练掌握结构化程序设计的三种基本流程是进一步学习Java面向对象程序设计的基础 第3章Java语言基础 教学重点与难点 Java程序的构成Java的关键字 标识符 各种数据类型Java的常量与变量Java的各种运算符结构化程序设计的三种基本流程 3 1Java程序的构成 Java语言的源程序代码由一个或多个编译单元组成 每个编译单元可包含三个要素 1 一个包声明 packagestatement 可选 2 任意数量引入语句 importstatements 3 类的声明 classdeclarations 和接口声明 interfacedeclarations 该三要素必须以上述顺序出现 也就是说任何引入语句出现在所有类定义之前 如果使用包声明 则包声明必须出现在类和引入语句之前 每个Java的编译单元可包含多个类或接口 但是每个编译单元最多只能有一个类或者接口是公共的 3 2关键字 标识符 数据类型 常量与变量 3 2 1关键字关键字对Java编译器有特殊的含义 它们可标识数据类型名或程序构造 construct 名 表3 1列出了在Java编程语言中使用的关键字 有关关键字值得我们注意的地方 1 true false和null为小写 而不是象在C 语言中那样为大写 严格地讲 它们不是关键字 而是文字 然而 这种区别是理论上的 2 无sizeof运算符 因为所有数据类型的长度和表示是固定的 与平台无关 不是象在C语言中那样数据类型的长度根据不同的平台而变化 这正是Java语言的一大特点 3 goto和const不是Java编程语言中使用的关键字 3 2 2标识符在Java编程语言中 标识符是赋予变量 类或方法的名称 变量 函数 类和对象的名称都是标识符 程序员需要标识和使用的东西都需要标识符 标识符可从一个字母 下划线 或美元符号 开始 随后也可跟数字 字母 下划线或美元符号 标识符是区分大小写 没有长度限制 可以为标识符取任意长度的名字 下面是几个有效的标识符 identifierthisoneUserNameUser name system varl max 下面是几个非法的变量名 3max 变量名不能以数字开头 room 包含非法字符 class class 为保留字 标识符不能是关键字 但是它可以包含关键字作为它的名字的一部分 例如 thisone是一个有效标识符 但this却不是 因为this是一个Java关键字 3 2 3数据类型Java编程语言有八个原始数据类型 可分为以下四种 1 逻辑类booleanboolean数据类型有两种文字值 true和false 注意在Java编程语言中boolean类型只允许使用boolean值 在整数类型和boolean类型之间无转换计算 在C语言中允许将数字值转换成逻辑值 这在Java编程语言中是不允许的 2 字符类char使用char类型可表示单个字符 字符是用单引号括起来的一个字符 如 a B 等 Java中的字符型数据是16位无符号型数据 它表示Unicode集 而不仅仅是ASCII集 与C语言类似 Java也提供转义字符 以反斜杠 开头 将其后的字符转变为另外的含义 表3 2列出了Java中的转义字符 值得注意的一点是 用双引号引用的文字 就是我们平时所说的字符串类型不是原始类型 而是一个类 class String 它被用来表示字符序列 字符本身符合Unicode标准 且上述char类型的转义字符适用于String 3 整数类byte short int long在Java编程语言中有四种整数类型 每种类型可使用关键字byte short int和long中的任意一个进行声明 所有Java编程语言中的整数类型都是带符号的数字 不存在无符号整数 整数类型的文字可使用十进制 八进制和十六进制表示 首位为 0 表示八进制的数值 首位为 0 x 表示16进制的数值 请看下面的例子 5表示十进制值5075表示八进制数值75 也就是十进制数61 0 x9ABC表示十六进制的数值9ABC 也就是十进制数39612 整数类缺省为int类型 如在其后有一个字母 L 表示一个long值 也可以用小写 l 由于小写 l 与数字 1 容易混淆 因而 建议大家采用大写 L 上面所说的整数long的形式如下 5L表示十进制值5 是一个long值075L表示八进制数值75 是一个long值0 x9ABCL表示十六进制的数值9ABC 是一个long值四种整数类型的存储空间长度 能表示的范围是不一样的 如表3 3所示 4 浮点类double float在Java编程语言中有两种浮点类型 float和double 如果一个数包括小数点或指数部分 或者在数字后带有字母F或f float D或d double 则该数为浮点数 如果不明确指明浮点数的类型 浮点数缺省为double 下面是几个浮点数 3 14159 double型浮点数 2 08E25 double型浮点数 6 56f float型浮点数 在两种类型的浮点数中 float为32位 单精度 double为64位 双精度 也就是说double类型的浮点数具有更高的精度 3 2 4常量与变量在Java中 不同类型的数据既可以以常量的形式出现 也可以以变量的形式出现 常量就是指在程序执行期间其值不能发生变化的数据 常量是固定的 如整型常量123 实型常量1 23 字符常量 A 布尔常量true等 变量的值则是可以变化的 它的定义包括变量名 变量类型和作用域几个部分 注意以下几点 1 变量名必须是一个合法的标识符 变量名应具有一定的含义 以增加程序的可读性 2 变量类型可以为前面所说的任意一种数据类型 3 声明一个变量的同时也就指明了变量的作用域 变量的作用域指明可访问该变量的一段代码 按作用域来分 变量可以有下面几种 局部变量 类变量 方法参数 例外处理参数 局部 local 变量是在一个方法内定义的变量 也被称作自动 automatic 临时 temporary 或栈 stack 变量 当执行进入一个方法时 局部变量被创建 当执行离开该方法时 局部变量被清除 它的作用域为它所在的代码块 整个方法或方法中的某块代码 在成员函数内定义的变量对该成员变量是 局部的 因而 你可以在几个成员函数中使用相同的变量名而代表不同的变量 在一个确定的域中 变量名应该是唯一的 通常 一个域用大括号 和 来划定 4 下面是几个变量的声明 inta b c 定义a b c为int型变量doubled e 定义d e为double型变量floatf 2 5 g 5 8 定义f g为float型变量 并赋初值其中 多个变量间用逗号隔开 5 在Java程序中声明变量后 需给该变量赋值 可用赋值语句来初始化变量 任何变量都不能没有初始值 否则 则无法通过编译 赋值方式如下 将已声明的变量名放在左边 然后是等号 右边是有适当值的Java表达式 它的意思是 取得右边的值 把它复制到左边 右边的值可以是任何常数 变量或者表达式 只要能产生一个值就行 但左边的值必须是一个明确的 已命名的变量 如 inta 这是声明a 45 这是赋值charc 这是声明c y 这是赋值 相对于一个方法的 局部 变量 如果在初始化之前想使用它 编译器会提示出错 如下面这样就是不允许的 voidf inti i i 1 当一个对象被创建时 实例变量在分配存储器的同时被值初始化 初始化值如表3 4所示 下面给出几个Java程序的例子 使大家对数据类型进一步加深理解 例3 1 Java中的数据类型 例3 2 Java中变量的作用域 例3 3 Java中对象的初始化 3 3运算符 按照运算符功能来分 基本的运算符分包括算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符等 3 3 1算术运算算术运算符包括加号 减号 乘号 除号 取模 自增运算符 自减运算符 等 在算术运算中 有以下值得注意的地方 1 算术运算符的总体原则是先乘除 再加减 括号优先 2 整数除法会直接砍掉小数 而不是进位 3 与C语言不同 对取模运算符 来说 其操作数可以为浮点数 如 37 2 10 7 2 4 Java也用一种简写形式进行运算 并同时进行赋值操作 例如 为了将10加到变量x 并将结果赋给x 可用 x 10 5 Java对加运算符进行了扩展 使它能够进行字符串的连接 如 abc def 得到串 abcdef 6 前缀 与后缀 的区别 i 前缀 在使用i之前 使i的值加1 因此执行完 i后 整个表达式和i的值均为i 1 i 后缀 在使用i之后 使i的值加1 因此执行完i 后 整个表达式的值为i 而i的值变为i 1 i在使用i之前 使i的减1 因此执行完 i后 整个表达式和i的值均为i 1 i 在使用i之后 使i的减1 因此执行完i 后 整个表达式的值为i 而i的值变为i 1 例3 4 Java中算术运算符的使用 3 3 2关系运算关系运算符用来比较两个值 返回布尔类型的值true或false 关系运算符都是二元运算符 如表3 5所示 对 或运算 如果运算符左边的表达式的值为true 则整个表达式的结果为true 不必对运算符右边的表达式再进行运算 同样 对 与运算 如果左边表达式的值为false 则不必对右边的表达式求值 整个表达式的结果为false 例3 6 Java中逻辑运算符的使用 3 3 4位运算在Java语言中 位运算符有按位与运算符 按位或运算符 按位异或运算符 按位取反运算符 左移位运算符 1 按位与运算 参与运算的两个值 如果两个相应位都为1 则该位的结果为1 否则为0 即 0 0 0 0 1 0 1 0 0 1 1 12 按位或运算 参与运算的两个值 如果两个相应位都是0 则该位结果为0 否则为1 即 0 0 0 0 1 1 1 0 1 1 1 1 3 按位异或运算 参与运算的两个值 如果两个相应位的某一个是1 另一个是0 那么按位异或 在该位的结果为1 也就是说如果两个相应位相同 输出位为0 否则为1 即 0 0 0 0 1 1 1 0 1 1 1 04 按位取反运算 按位取反运算 属于一元运算符 它只对一个自变量进行操作 其他所有运算符都是二元运算符 按位取反生成与输入位的相反的值 若输入0 则输出1 输入1 则输出0 即 0 1 1 0 5 左移位运算符 与 运算符 执行一个右移位 带符号 左边按符号位补0或1例如 inta 16 b b a 2 b 4 运算符 同样是执行一个右移位 只是它执行的是不带符号的移位 也就是说对以补码表示的二进制数操作时 在带符号的右移中 右移后左边留下的空位中添入的是原数的符号位 正数为0 负数为1 在不带符号的右移中 右移后左边留下的空位中添入的一律是0 例3 7 Java中位运算符的使用 3 3 5类型转换Java程序里 将一种数据类型的常数或变量转换到另外的一种数据类型 称为类型转换 类型转换有两种 自动类型转换 或称隐含类型转换 和强制类型转换 在实际中常会将一种类型的值赋给另外一种变量类型 如果这两种类型是兼容的 Java将执行自动类型转换 简单的说 当把占用位数较短的数据转化成占用位数较长的数据时 Java执行自动类型转换 不需要在程序中作特别的说明 例如 下面的语句把int型数据赋值给long型数据 在编译时不会发生任何错误 inti 10 longj i 假若对主数据类型执行任何算术运算或按位运算 比int小 的数据 char byte short 在正式执行运算之前 那些值会自动转换成int 这样一来 最终生成的值就是int类型 整型 实型
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号