第 2 章 java 语言基础

65

Upload: tom

Post on 28-Jan-2016

234 views

Category:

Documents


0 download

DESCRIPTION

第 2 章 Java 语言基础. 主要内容 ( 6 学时). 标识符、保留字、分隔符 数据类型 基本类型 运算符 常用 JAVA 数值计算方法 表达式 包装类 输入输出. 2.1 标识符、保留字和分隔符. 2.1.1 标识符 程序中使用的各种数据对象如符号常量、变量、方法、类等都需要一定的名称,这种名称叫做标识符( identifier )。 Java 的标识符由字母、数字、下划线( _ )或美元符 ($) 组成,但必须以字母、下划线和美元符开始。 Java 标识符是大小写敏感的,没有字符数的限制。 Java 程序员在编程时的一些约定:. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 2 章  Java 语言基础
Page 2: 第 2 章  Java 语言基础

主要内容( 6 学时) 标识符、保留字、分隔符 数据类型 基本类型 运算符 常用 JAVA 数值计算方法 表达式 包装类 输入输出

Page 3: 第 2 章  Java 语言基础

2.1 标识符、保留字和分隔符2.1.1 标识符 程序中使用的各种数据对象如符号常量、变量、

方法、类等都需要一定的名称,这种名称叫做标识符( identifier )。

Java 的标识符由字母、数字、下划线( _ )或美元符 ($) 组成,但必须以字母、下划线和美元符开始。

Java 标识符是大小写敏感的,没有字符数的限制。

Java 程序员在编程时的一些约定:

( 1)每个名字可由几个单词或其缩写连接而成。( 2)对于类名,每个单词的开头字母必须大写。如 Hello、MyClass等。( 3)方法名及变量的第一个字母不使用大写。如 myMethod()、 intValue等。( 4)表示私有或局部变量的标识符全部用小写字母。( 5)表示常量的标识符,字母全部用大写。( 6)包名全部作小写字母。( 7)标识符中不用或少用美元符。

Page 4: 第 2 章  Java 语言基础

2.1.2 保留字 保留字( reserved word )又称为关键字,是

Java 语言本身使用的标识符,它有其特定的语法含义。所有的 Java 保留字将不能被用作标识符。

Page 5: 第 2 章  Java 语言基础

关键字 1• 原始数据类型

- byte- short- int- long- float- double- char- boolean

• 循环关键字- do- while- for- break- continue

• 分支关键字- if- else- switch- case- default- break

• 方法、变量和类修饰符- private- public- protected- final- static- abstract- synchronized- volatile- strictfp

Page 6: 第 2 章  Java 语言基础

关键字 2• 异常处理

- try- catch- finally- throw- throws

• 对象相关关键字- new- extends- implements- class- instanceof- this- super

• 字面值常量- false- true- null

• 方法相关关键字- return- void

• 包相关关键字- package- import

Page 7: 第 2 章  Java 语言基础

2.1.3 分隔符 分隔符用来分隔开 Java 程序中的基本语法元

素,可分为注释(单行和多行注释)、空白符(空格、回车和制表符)和普通分隔符(大括号、分号、逗号和冒号)三种。

Page 8: 第 2 章  Java 语言基础

2.2 数据类型2.2.1 数据类型概述 计算机程序处理的对象即各种数据,数据类型是指

数据的内在表现形式。 根据现实世界数据的不同形式,数据就划分为多种

不同的类型。数据类型不同,能进行的运算不同,取值范围也不同,计算机语言中还反映为数据的存储长度和形式不同。

Page 9: 第 2 章  Java 语言基础

基本类型

数值类型 整型( byte 、 short 、 int 、 long ) 实型( float 、 double )

字符型( char ) 布尔型( boolean )

复合类型

数组 类( class ) 接口( interface )

Java语言的数据类型

Page 10: 第 2 章  Java 语言基础

2.2.2 常量与变量 程序中所处理的数据表现为两种形式:常量和

变量。1 .常量 Java 中的常量值是用文字串表示的,反映了一

类在程序执行中不能变化的量。 常量区分为不同的类型,如:

整型常量 123 实型常量 4.56 字符常量 'a‘ 布尔常量 true 和 false 字符串常量 "Java programming "

Page 11: 第 2 章  Java 语言基础

2. 变量 为了在 Java 中存储一个数据,必须将它容纳

在一个变量之中。在变量中可根据需要存入不同的数据,这就是“变量”的含义。变量具有名称、类型、值和作用域等特性。在使用一个变量前必须先定义。变量定义是用标识符为变量命名、确定其数据类型,还可以根据需要为它赋初值(变量初始化)。定义了变量即为变量指定了存储方式。若是基本类型的变量,因为它们的存储长度是固定的,如何分配存储单元就确定了。若是复合类型的变量,定义后还需要用 new 运算符为用户数据分配存储单元,复合类型变量中存储用户数据存储单元的引用(指针)。

Page 12: 第 2 章  Java 语言基础

可以用如下语法定义变量: 类型 标识符 [[ = 初始赋值 ] , 标识符 ];

该语句告诉编译器用指定的类型和以标识符为名字建立一个变量,这里的分号将告诉编译器这是一个说明语句的结束;方格中的逗号和标识符表示可以把几个类型相同的变量放在同一语句进行说明,变量名中间用逗号分隔。

在创建了一个变量以后,就可以给它赋值,或者用运算符对它进行允许的运算。

Page 13: 第 2 章  Java 语言基础

2.3 基本类型2.3.1 整型数据 整型数据是最普通的数据类型,可表示日常生活

中的整数。1 .整型常量 Java 的整型常数有三种形式:十进制、十六进

制和八进制。十进制整数以 10 为基数,用 0~ 9 这 10 个数

字和正、负号组成,如 123 , -456 , 0 等。在Java 中,十进制整数的第一位数字不能为 0 。

Page 14: 第 2 章  Java 语言基础

十六进制整数以 16 为基数,用 0~ 9 的 10 个数字、字母 A~ F (小写也可,代表 10~ 15 这些整数)和正、负号组成。十六进制整数必须以 0X或 0x 作为开头。如 0x123 , -0xabc 等。

八进制整数以 8 为基数,用 0~ 7 的 8 个数字和正、负号组成。八进制整数必须用 0 开始,如 0567 , -0123 等。

每一个整型常数默认为 int 类型,占有 32位(即 4个字节)的存储空间。整型常数所表示的范围为 2,147,483,647~ 2,147,483,648 ,若要使用更大的数,可用 64 位( 8 字节)的长整型数( long 类型)。若希望把一个整数强制存为一个长整型数,可以在数字后面加字母 l 或 L 。

Page 15: 第 2 章  Java 语言基础

2 、整型变量分四种: ( 1 ) . int 型: 4 字节, 32位,取值范围: -231~231-1

( 2 ) . byte 型: 1 字节, 8位,取值范围: -27~27-1

( 3 ) . short 型: 2 字节, 16位,取值范围: -215~215-1

( 4 ) . long 型: 8 字节, 64位,取值范围: -263~263-1

Page 16: 第 2 章  Java 语言基础

2.3.2 实型(浮点型)数据1. 实型常量 Java 的实型常量有标准和科学计数法两种表现

形式。 (1) 标准形式,由数字和小数点组成,且必须有

小数点,如 0.123,4.56,789.0 等。 (2)科学计数法形式,数字中带 e 或 E ,如 123

e 或 4.56E3 ,其中 e 或 E 前必须有数字,且 e或 E 后面的数字(表示以 10 为底的乘幂部分)必须为整数。

实数后面可带后缀 F,f 或 D,d ,分别表示单精度实数和双精度实数。

Page 17: 第 2 章  Java 语言基础

2 、实型变量 分两种: (1) 单精度 float 4 字节 10-38~1038 和 -1038~-10-38 (2)双精度 double 8 字节 10-308~10308 和 -10308~-10-308

Page 18: 第 2 章  Java 语言基础

2.3.3 字符型数据 1 、字符常量: 字符型 char 数据是由一对单引号括起来的单个字符。

Java 使用 Unicode 格式的 16位字符集,而不仅仅为ASCII 字符集,因此 char 类型的范围从 0到 65535 。Unicode 能够容纳所有语言字符集,包括拉丁语、希腊语、阿拉伯语、希伯来语、汉语、日语、韩语等各国语言,因此使用 16位是非常必要的。如: ‘ A’,‘b’, ‘ ’き ,‘モ’

在 Java 语言中,以反斜杠( \ )开头的多个字符表示一个转义字符,转义字符一般用于表示某些非图形(非可视)字符。

2 、字符变量 使用关键字 char 来定义字符变量

Page 19: 第 2 章  Java 语言基础

2.3.4 布尔型数据 1 、常量:布尔 boolean 类型是最简单的一种

数据类型,布尔数据只有两个值: true 和 false ,且都是保留字,表示“真”和“假”这两种状态。关系运算和逻辑运算返回布尔类型的值。

2 、变量:布尔型变量用 boolean 定义,例如: boolean mouseOn = true; boolean done = false;

布尔型是一个独立的类型,它不像 C 语言中的布尔型代表 0 和 1 两个整数,由于这个原因,Java 中的布尔类型不能转换成数字。

Page 20: 第 2 章  Java 语言基础

2.3.5 字符串数据1. 字符串常量 字符串常量是用双引号括起来的零个或多个字

符(包括转义字符)。例如: " " \\ 空串 "我们赢了! \n" \\ 包含转义字符的字符串

一个长字符串可以用“ +” 号分成几个短字符串。例如: " 中国 北京 "+ "2008 奥运! " \\ 一个字符串

在 Java 语言中,每个字符串常量被作为字符串类 String 的对象来处理。

注意:标志字符串开始和结束标志的双引号必须在源代码的同一行上。

Page 21: 第 2 章  Java 语言基础

2. 字符串变量 在 Java 语言中,字符串变量是对象,是复合类型。

有两种字符串变量类型: String 类和 StringBuffer 类。String 类是常量类,初始化后不能改变; StringBuffer 类是字符串缓冲区,可以修改。例如: String str1 = new String("This is a string."); String str2 = "This is a string."; StringBuffer str3 = new StringBuffer(); StringBuffer str4 = new StringBuffer("This is a string.");

Page 22: 第 2 章  Java 语言基础

符号常量 final

格式: final 数据类型 变量名 = 初值注意:符号常量的值不能被改变

Page 23: 第 2 章  Java 语言基础

2.3.6 缺省初始值 在 Java 程序中,每个变量都对应一个值,不存

在没有值的变量。若一个变量只声明而没有初始化,则使用它的缺省初值。对于数值数据,缺省数值为相应类型的零;字符的缺省初值为 '\u0000';布尔初值为 false; Object 类型初值为 null 。

Page 24: 第 2 章  Java 语言基础

2.4 运算符 运算符的作用是与一定的运算数据组成表达式来完

成相应的运算。对不同的数据类型,有着不同的运算符。对运算符,有运算对象(操作数)个数及类型、运算优先级、结合性等特性。

Java 语言对运算符的优先级、结合性和求值顺序有明确的规定,从根本上消除了运算符运算过程的二义性以及结果不统一的弊端。

Page 25: 第 2 章  Java 语言基础

2.4.1 算术运算符 算术运算符按操作数的多少可分为一元(或称单目)和二元(或称双目)两类,一元运算符一次对一个操作数进行操作,二元运算符一次对两个操作数进行操作。算术运算符的操作数类型是数值类型。

一元运算符有 + 、 - 、 ++ 和 -- 。一元运算符的结合性是右结合性。

二元运算符有 + 、 - 、 * 、 / 和 % ,这些运算符并不改变操作数的值,而是返回一个必须赋给变量的值,二元算术运算符具有左结合性。

Page 26: 第 2 章  Java 语言基础

运算符 含义 示例 求值+ 加 c = a + b

- 减 c = a - b

* 乘 c = a * b

/ 除 c = a / b

% 取模 c = a % b

++ 递增 a++

-- 递减 b--

- 取负数 c= - a

Page 27: 第 2 章  Java 语言基础

算术运算符与表达式

加减运算符: + , - 。双目运算符,即连接两个操作元的运算符。结合方向从左到右。操作元是整型或浮点型数据。优先级是 4 级。乘除余运算符: * , / , % 。双目运算符,结合方向从左到右,操作元是整型或浮点型数据,优先级是 3 级。注: 5/2 的结果是 2 ,要想得到 2.5 ,必须写成 5.0/2 。算术表达式:用算术符号和括号连接符合 java 语法规则的式子。如 x+2*y-30+3*(y+5) 。

Page 28: 第 2 章  Java 语言基础

自增自减运算符: ++ , --

自增自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。优先级是 2 级,操作元必须是一个整型或浮点型变量,作用是使变量的值增 1 或减 1 ,如:++x , --x 表示在使用 x 之前,先使 x 的值加(减) 1 。x++ , x— 表示在使用 x 之后,使 x 的值加(减) 1 。粗略的看, ++x 和 x++ 的作用相当于 x=x+1 。但不同之处可用下例说明:如果 x 的原值是 5 ,对于 y=++x , y 的值为 6 。对于 y=x++ , y 的值为 5 ,然后 x 的值变为 6 。

Page 29: 第 2 章  Java 语言基础

2.4.2 关系运算符 关系运算符用于确定一个数据与另一个数据之间的关系,即进行关系运算。

所谓关系运算是比较运算,将两个值进行比较。关系运算的结果值为 true 、 false (布尔型)。

Java 语言提供了 6 种关系运算符,它们是 >( 大于 ) 、 <( 小于 ) 、 >=( 大于或等于 ) 、 <=( 小于或等于 ) 、 !=( 不等于 ) 和 ==( 等于 ) , 都是双目运算符。

运算符“ ==” 和“ !=” 的运算优先级低于另外四个关系运算符。

Page 30: 第 2 章  Java 语言基础

运算符 含义 示例

== 等于 a==b

!= 不等于 a!=b

> 大于 a>b

< 小于 a<b

>= 大于或等于 a>=b

<= 小于或等于 a<=b

Page 31: 第 2 章  Java 语言基础

2.4.3 布尔运算符 布尔运算符可以对布尔类型的数据(布尔常量、

布尔变量、关系表达式和布尔表达式等)进行运算,结果也为布尔类型。 Java 语言的布尔运算符见下表:

Page 32: 第 2 章  Java 语言基础

运算符 名称 例子 ! 逻辑非 !a

&& 简洁与 a && b

|| 简洁或 a || b

^ 异或 a ^ b

& 非简洁与 a & b

| 非简洁或 a | b

Page 33: 第 2 章  Java 语言基础

布尔运算符的运算规则如下: (1) 单目运算符!:将布尔值取反。 (2)双目运算符 && 和 & :当两个运算对象的

值都为 true 时,结果为 true ,其他情况均为 false 。

(3)双目运算符 || 和 | :当两个运算对象的值都为 false 时,结果为 false ,其他情况均为 true 。

(4)双目运算符 ^ :当两个运算对象的值不同时为 true ,相同时为 false 。

注意:简洁与、或和非简洁与、或的结果有时不同。非简洁与、非简洁或运算时,运算符两边的表达式都先要运算执行,然后两表达式的结果再进行与、或运算。简洁与、简洁或运算时,若只运算左边表达式即可确定与、或结果时,则右边的表达式将不会被计算。

Page 34: 第 2 章  Java 语言基础

2.4.4 位运算符 位运算符用来对二进制位进

行运算,运算操作数应是整数类型,结果也是整数类型。Java 中提供了 7 种位运算符,它 们 是 ~ ( 按 位 取 反 ) 、 & ( 与运算 ) 、 | ( 或运算 ) 、 ^ ( 异或运算 ) 、 << ( 左移 ) 、>> ( 算术右移 ) 和 >>> ( 逻辑右移 ) 。其中前四种称为位逻辑运算符,后三种称为算术移位运算符。

运算符

含义 示例

~ 按位非( NOT ) b = ~a

& 按位与( AND ) c = a & b

| 按位或( OR ) c = a | b

^ 按位异或( XOR ) c = a ^ b

>> 右移 b = a >> 2

>>> 右移,左边空出的位以 0填充

b = a >>> 2

<< 左移 b = a << 1

Page 35: 第 2 章  Java 语言基础

2.4.5 赋值运算符 赋值运算符都是二元运算符,具有右结合性。1 .简单赋值运算符( = ) 赋值运算符“ =” 用来将一个数据赋给一个变量。在

赋值运算符两侧的类型不一致的情况下,若左侧变量的数据类型的级别高,则右侧的数据被转换为与左侧相同的高级数据类型,然后赋给左侧变量。否则,需要使用强制类型转换运算符。

2 .复合赋值运算符 Java 语言允许使用复合赋值运算符,即在赋值符前加上其他运算符。复合赋值运算符是表达式的一种缩写。例如: a += 5 基本等价于 a = a + 5 。复合赋值运算符有 11 种。

Page 36: 第 2 章  Java 语言基础

2.4.6 条件运算符条件运算符是一种三元运算符,它的格式如下:

  布尔表达式 ? 表达式 1: 表达式 2

在这个式子中,先计算布尔表达式的真假,若为真,则计算并返回表达式 1 ,若为假,则计算并返回表达式 2 。例如:    (a > b) ? a : b; // 将返回 a 和 b 中较大的那个数值。

Page 37: 第 2 章  Java 语言基础

2.4.7 字符串运算符 运算符“ +” 可以实现两个或多个字符串的连接,

也可实现字符串与其他类对象的连接,在连接时,其他类对象会被转换成字符串。另外,运算符“ +=”把两个字符串连接的结果放进第一个字符串里。例如,当想把几项输出内容输出在同一行里时使用的就是“ +” 运算符。

Page 38: 第 2 章  Java 语言基础

2.6 表达式 表达式是由操作数和运算符按一定的语

法形式组成的符号序列。每个表达式结果运算后都会产生一个确定的值,称为表达式的值。表达式的值是有类型的,该类型称为表达式类型。表达式类型由运算符和参与运算的数据的类型决定。可以是简单类型,也可以是复合类型。

可以按表达式值的类型将表达式分类。

Page 39: 第 2 章  Java 语言基础

2.6.1 类型转换 在一个表达式中可能有不同类型的数据进行混合运算,

这是允许的,但在运算时, Java 将不同类型的数据转换成相同类型,再进行运算。

1. 自动类型转换 整型、实型和字符型数据可以进行混合运算。在运算中,

不同类型的数据先转换成相同类型,然后再进行运算。转换从低级到高级。可混合运算数据类型从低到高排列如下: 低- > byte , short , char , int , long , float , double - > 高

Page 40: 第 2 章  Java 语言基础

2. 强制类型转换高级数据要转换为低级数据时,需进行强制类型转换, Java 不象 C/C++那样允许自动类型转换。从一种类型转换到另一种类型可以使用下面的语句:      int a;   char b;      b=(char)a;

加括号的 char 告诉编译器想把整型变成字符并把它放在 b 里。

Page 41: 第 2 章  Java 语言基础

3. 表达式求值中的自动类型提升 在表达式的求值过程中,运算中间值的精度有时会超出操作数的取值范围。例如: byte x = 30,y = 50,z = 100; int a = x * y / z;

在运算 x*y项时,结果 1500已经超出了操作数 byte 类型的范围。为解决这类问题, Java 语言在对表达式求值时,自动提升 byte 或 short 类型的数据为 int 类型的。

Page 42: 第 2 章  Java 语言基础

自动类型提升对数据的运算带来了方便,但也容易引起编译错误。例如: byte x = 30; x = - x; // 编译错误!不能向 byte 变量赋 int 值

Page 43: 第 2 章  Java 语言基础

2.6.2 优先级 在一个表达式中可能有各种运算符, Java 语言规定了表达式中出现各种运算符的时候,哪种运算符先进行运算,哪种运算符后进行运算的运算符运算顺序,称为运算符的优先级,它指明了同一表达式中多个运算符被执行的次序,同一级里的操作符具有相同的优先级。在表达式中,优先级高的运算符先进行运算。

Page 44: 第 2 章  Java 语言基础

2.6.3 结合性 在表达式中出现多个相同优先级的运算符时,就需

要考虑结合性。结合性确定同级运算符的运算顺序。运算符有左结合性和右结合性两种。左结合性指的是从左向右使用运算符。例如二元算术运算符具有左结合性,计算 a + b - c 时,操作数 b 的左、右运算符 + 、 - 是同级运算符,计算时, b 先与左边的 + 结合,计算 a + b ,其和再与 c 相减;而右结合性是从右向左使用运算符。例如,赋值运算符具有右结合性,计算 a = b = c 时,操作数 b 的左、右运算符都是同级的赋值运算符,所以,先执行 b = c ,再执行 a = b 。

Page 45: 第 2 章  Java 语言基础

2.5 常用 Java 数值计算方法 在 Java 的类 Math 中包含了一些数值常量,如 E

和 PI ,以及一些基本的数值计算方法,如指数、对数、平方根和三角函数等,为用户程序进行数值计算带来了方便。常用的数值方法有: abs ()绝对值、 sin()正弦值、 cos()余弦值、 tan()正切值、 asin() 反正弦值、 acos() 反余弦值、 atan()反正切值、 ceil()求不小于参数的最小整数、 floor()求不大于参数的最大整数、 pow(a,b)求 a 的 b次方、 random()产生 0.0~ 1.0 的伪随机数、 sqrt()平方根、 log()自然对数、 max(a,b)求 a,b 中的大者、 min(a,b)求 a,b 中的小者等。

Page 46: 第 2 章  Java 语言基础

【例 2.5】类 Math 中常量和方法的使用。 class UseMath { public static void main(String args[]) { double a = 3.0, b = 4.0; double c = Math.sqrt(a * a + b * b); System.out.println(" 半径为 3.0 的圆面积是 : " + Math.PI * a * a); System.out.println(" 直角三角形直角边为 3.0 和 4.0

时 的斜边长为 : " + c); System.out.println(" -8 和 -4 的较大者是 : " + Math.max(-8, -4)); System.out.println("–18 的绝对值是 : " + Math.abs(-18)); System.out.println(" 不小于 45.7 的最小整数是 : " + Math.ceil(45.7));

Page 47: 第 2 章  Java 语言基础

System.out.println(" 不 大 于 45.7 的最大 整 数 是 : "

+ Math.floor(45.7)); System.out.println(“sin25 度的值是 :” + Math.sin(25.0/180*Math.PI)); } }

程序运行结果如下: 半径为 3.0 的圆面积是 : 28.274333882308138 直角三角形直角边为 3.0 和 4.0 时的斜边长为 :

5.0 -8 和 -4 的较大者是 : -4 -18 的绝对值是 : 18 不小于 45.7 的最小整数是 : 46.0 不大于 45.7 的最大整数是 : 45.0 sin25 度的值是 : 0.42261826174069944

Page 48: 第 2 章  Java 语言基础

注意:程序中使用了一些 Math 类中的常量和方法,它们都是 Math 类的静态成员,一般情况下,可通过“类名 .静态成员名”的格式来引用一个类中的静态成员。但若使用了 Java 语言的静态引入功能,则可省去静态成员名称前的类名。即若在程序的最前面增加语句:

import static java.lang.Math.*;那么,程序中所有的 Math 可省去不写,这样可简

化程序的书写和输入。

Page 49: 第 2 章  Java 语言基础

2.7 包装类( wrapper class ) Java 语言中专门提供了所谓的包装类( wrapper cl

ass )。这些类将基本类型包装成类。与基本类型对应的包装类有 Byte 、 Short 、 Integer 、 Long 、Character 、 Float 、 Double 、 Boolean 和 Void 。

Page 50: 第 2 章  Java 语言基础

使用包装类的方法与其他类一样,定义对象的引用、用 new 运算符创建对象,用方法来对对象进行操作。

例如: Integer i = new Integer(10); // i 是 Integer 类的一个对象,值为 10 Integer j = new Integer(20); // j 是 Integer 类的一个对象,值为 20

【例 2.8 】包装类 Integer 类常用方法的使用以及与 int 数据进行混合运算的例子。

Page 51: 第 2 章  Java 语言基础

class UseWrapper { public static void main(String args[]) { int num = 2005; System.out.println(num + " 的二进制是 : " + Integer.toBinaryString(num)); // 转换十进制数为二进制数 System.out.println(num + " 的八进制是 : " + Integer.toOctalString(num)); // 转换十进制数为八进制数 System.out.println(num + " 的十六进制是 : " + Integer.toHexString(num)); // 转换十进制数为十六进制数 Integer iobj = Integer.valueOf("123"); Integer iobj1 = new Integer(234); Integer iobj2 = new Integer("234"); int i = iobj.intValue(); System.out.println("iobj = " + iobj); System.out.println("i = " + i);

Page 52: 第 2 章  Java 语言基础

System.out.println("iobj1==iobj2 ? " + iobj1.equals(iobj2)); // 比较两个对象是否相等 iobj = iobj + num; // int 数据和 Integer 数据可以混合运算 System.out.println("iobj = " + iobj); num = iobj + num; System.out.println("num = " + num); } }

程序运行结果如下: 2005 的二进制是 : 11111010101 2005 的八进制是 : 3725 2005 的十六进制是 : 7d5 iobj = 123 i = 123 iobj1==iobj2 ? true iobj = 2128 num = 4133

Page 53: 第 2 章  Java 语言基础

2.8 输入输出初步 2.8.1 标准输入输出 1. 标准输出 (1)print 和 println 方法 可以用 System.out.println 在程序中可以将常量、变

量或表达式的值输出到屏幕。 println 方法可有 0 个或 1 个参数。若参数是 0 个,则输出一回车换行,光标移动到下一行行首;若有一个参数,该参数可以是 char,byte,int,boolean , float,double,String,char[] (字符数组)和 Object (对象)类型的,各种类型的数据转换成相应的字符串类型输出。输出给定所有内容后,输出一个回车换行。

Page 54: 第 2 章  Java 语言基础

另外也常用 System.out.print 进行输出, print 方法需要一个参数来输出,可用的参数类型与 println 相同,输出参数的值后不输出回车换行,因此,若输出内容本身不包含控制光标的内容或未满行, System.out.print 输出后,光标将停留在输出内容后。

(2)printf和 format 格式输出方法 要控制输出数据的格式,可使用 System.out.printf和

类似的 System.out.format 方法,在方法的参数中对每一输出项 ( 表达式 ) ,都可在一个格式控制字符串中用%开始的格式符进行格式控制。

例如: System.out.printf("a=%d\tb=%f\tc=%c",a,b,c); 或: System.out.format("a=%d\tb=%f\tc=%c",a,b,c);

Page 55: 第 2 章  Java 语言基础

其中的输出项为 a 、 b 和 c 三项,在格式控制字符串 "a=%d\tb=%f\tc=%c" 中有三个格式符对它们进行控制,未指出顺序时,按照自然顺序进行格式控制,即:% d控制 a 使其以十进制整数形式输出;% f控制 b 使其以十进制实数形式输出;% c控制 c 使其以字符形式输出。为了能得到正确输出的数据和格式,不同类型的输出项应使用不同的格式符来进行格式控制输出。适用于基本类型和字符串类型输出的常用格式符有: % b 布尔型数据 % c 字符 % d 十进制整数 % f 十进制实数 % e 或% g 科学记数法形式的十进制实数 % s 字符串

格式控制字符串中的其他字符,无格式控制功能,输出时将按字符原样输出。如上例中的 "a="、 "b="、 "c="和 "\t"(制表符)将按原意输出。

Page 56: 第 2 章  Java 语言基础

2. 标准输入 (1)read 方法 可以用 System.in.read()从键盘输入整数值在 0~

255 之间的 byte 值( int 类型)。若程序运行时需要从键盘输入其他类型的数据,则需要使用 Java

提供的输入 / 输出功能。不论需从键盘输入何种类型的数据, Java从键盘接收数据都是以字符串的形式进行,再根据实际数据的需要进行类型转换。

应用本方法时要使用 Java 的异常处理机制。

Page 57: 第 2 章  Java 语言基础

【例 2.9】从键盘输入一个字符,并输出它在 Unicode 字符集中的前一字符和后一字符。 import java.io.*; // 引入 java.io 包 class CharDemo { public static void main(String args[]) throws IOExceptio

n{ char c,c1,c2; c=(char)System.in.read(); // 输入字符 c1=(char)(c-1); c2=(char)(c+1); System.out.println(" : " + c1); System.out.println(" : " + c2); } }

Page 58: 第 2 章  Java 语言基础

(2) 使用 next 方法 若使用 Java提供 java.util.scanner 类中的各种 next

方法,可从键盘输入各种基本类型和字符串类型的数据。不论需从键盘输入何种类型的数据, Java从键盘接收数据都是以字符串的形式进行, next 方法要根据输入数据的类型来选用。有 nextByte 、 nextInt 、 nextShort 、 nextLong 、 nextFloat 、 nextDouble 、 nextBoolean 和 next (以空格和回车为结束标记的字符串输入)等适用于不同类型数据输入的方法。使用 next 方法进行键盘输入的例子如下。

Page 59: 第 2 章  Java 语言基础

【例 2.10】从键盘输入三角形的三个边长,求这个三角形的面积。 import java.util.Scanner; class TriArea{ public static void main(String args[]){ System.out.printf("请输入三角形的三边长: \n"); Scanner sc = new Scanner(System.in); double a = sc.nextDouble(); double b = sc.nextDouble(); double c = sc.nextDouble(); double t = (a+b+c)/2.0; double s = Math.sqrt(t*(t-a)*(t-b)*(t-c)); System.out.format(" 三角形的面积为 %f\n",s); } }

Page 60: 第 2 章  Java 语言基础

2.8.2 对话框输入输出 1 .使用 showMessageDialog( 输出信息对话框 )

方法 Java 中的 JOptionPane.showMessageDialog方

法是用对话框的形式来进行输出,支持一个输出项,在输出内容较多时,也可用字符串连接的形式来输出。例如下面的程序:

【例 2.11】求 sin30º和 cos30º的值。 import javax.swing.JOptionPane; import static java.lang.Math.*; class DialogDemo{ public static void main(String args[]){ String s1="sin30 度的值= "; s1 = s1 + sin(PI*30/180); s1 = s1 + "\ncos30 度的值= "; s1 = s1 + cos(PI*30/180); JOptionPane.showMessageDialog(null,s1); } }

Page 61: 第 2 章  Java 语言基础

例 2.11 的输出结果如右图所示。

2 .使用 inputMessageDialog方法输入信息使用 Java提供的 javax.swing.JOptionPane 类

中的 showInputDialog方法,可从输入信息对话框中输入一个字符串。需要时,可进行类型转换,得到所需类型的输入数据。

【例 2.12】使用对话框进行程序的输入输出。输入一个代表年号的整数,求这一年的元旦是星期几?

元旦是星期几的计算公式 (设年号为 y,按整数运算 ) :

s = y + (y-1) / 4 - (y-1) / 100 + (y-1)/ 400; s除以 7的余数即为星期数,余数为 0表示星期日。

Page 62: 第 2 章  Java 语言基础

import javax.swing.JOptionPane; class YuanDan{ public static void main(String args[]){ int s,y; y=Integer.parseInt(JOptionPane.showInputDialog( "请 输入一个年号: ")); s = y + (y-1) / 4 - (y-1) / 100 + (y-1)/ 400; s = s % 7; JOptionPane.showMessageDialog(null,y + " 年的元旦是星期 "+ s); } }

程序运行的输入输出界面及结果见下图。

Page 63: 第 2 章  Java 语言基础

例 2.12 的输出结果如下图所示。

Page 64: 第 2 章  Java 语言基础

总结 1 、掌握 JAVA 语言的标志符、保留字和分隔

符 2 、掌握 JAVA 语言的基本数据类型 3 、掌握 JAVA 语言中的运算符和表达式 4 、了解 JAVA 常用的数值计算方法和包装类 5 、掌握 JAVA 语言中的输入输出的方法,会

用它编写程序

Page 65: 第 2 章  Java 语言基础

作业书面作业

课后习题 2.10 2.11 2.12上机作业

例题 2.10 2.12 课后习题 2.15 2.16