第 2 章 Java 语言基础 通过本章的实践, 要掌握 Java 中的标识符 关键字 常量, 熟练掌握算术 关 系 逻辑 条件 赋值 位运算符的使用, 掌握简单顺序结构的程序设计 2.1 典型习题解答 2.1 Java 中怎样进行注释? 解答 Java 语言中的注释有 3 种形式 : (1) 单行 : // (2) 多行 : /* */ (3) 文档注释 : /** */ 第三种形式是第二种形式的变形, 可用 javadoc.exe 来提取注释内容制作 HTML 帮助文档 2.2 Java 中标识符定义的规则有哪些? 解答 在 Java 语言中, 标识符的定义规则为 : 以字母 下划线 (_) 美元符 ($) 开 始, 其后面可以是任意个字母 数字 (0~9) 下划线 美元符的字符序列 ;Java 标识符区分 大小写 ; 对长度没有限制 ; 用户定义标识符不可以是 Java 关键字, 但可以将关键字作为用 户定义标识符的一部分, 例如,my_class 是一个合法的用户标识符, 其中关键字 class 作为 它的一部分 2.3 下面字符串中哪些是关键字? CLASS sizeof abstract NULL INTEGER LONG native import 解答 以下字符串是 Java 关键字 :abstract native import 2.4 下面哪些是 Java 中的标识符? &Moon9 $_1234computer MyVariance My%INTEGER INT $_$_You 86xyz new class You&Me 解答 以下字符串可以作为 Java 语言的标识符 :$_1234computer MyVariance INT $_$_You 2.5 Java 中包含哪些基本数据类型? 解答 Java 语言中的基本数据类型有 : 字符类型 (char) 数值类型和布尔类型 (boolean), 其中, 数值类型包括整型和实型, 整型分为 : 字节类型 (byte) 短整型 (short) 整型 (int) 和长整型 (long); 实型分为 : 单精度浮点型 (float) 和双精度浮点型 (double)
第 2 章 Java 语言基础 11 2.6 判断下面常量的数据类型 true 123 3f 8.23e 2 4.6789 345L ' a ' "Hello world!" 解答 布尔类型常量 :true 整型常量 :123 345L 实型常量 :3f 8.23e 2 4.6789 字符型常量 :' a ' 字符串常量 :"Hello world!" 2.7 Java 运算符有哪些? 并给出运算实例 解答 算术运算符: +( 正号 ), 例如 :+8 ( 负号 ), 例如 : 8 +( 加 ), 例如 :2+8, 结果为 10 ( 减 ), 例如 :16 8, 结果为 8 *( 乘 ), 例如 :10*8, 结果为 80 /( 整除 ), 例如 :10/8, 结果为 1 %( 模除 ), 例如 :10%8, 结果为 2 ++( 增 1), 例如 :++j( 前缀 ) j++( 后缀 ) ( 增 1), 例如 : j( 前缀 ) j ( 后缀 ) 关系运算符 : = =( 等于 ), 例如 :2= =8, 结果为 false!=( 不等于 ), 例如 :2!=8, 结果为 true >=( 大于等于 ), 例如 :12>=8, 结果为 true <=( 小于等于 ), 例如 :2<=8, 结果为 true >( 大于 ), 例如 :2>8, 结果为 false <( 小于 ), 例如 :12<8, 结果为 false 布尔逻辑运算符 : &( 与 ), 例如 :5>2&2>3, 结果为 false ( 或 ), 例如 :5>2 2>3, 结果为 true!( 非 ), 例如 :! true, 结果为 false ^( 异或 ), 例如 :5>2^8>3, 结果为 false &&( 简洁与 ), 例如 :5>12&&22>3, 结果为 false ( 简洁或 ),5>2 2>3, 结果为 true 位运算符 : ~( 按位取反 ), 例如 :~00011001, 结果为 11100110 &( 按位与 ), 例如 :00110011&10101010, 结果为 00100010 ( 按位或 ), 例如 :00110011 10101010, 结果为 10111011 ^( 按位异或 ), 例如 :10100001^00010001, 结果为 101100000 <<( 左移位 ), 例如 :a=00010101,a<<2, 结果为 01010100
12 Java 语言程序设计习题解答 实验指导及实训 >>( 右移位 ), 例如 :a= 10101000, a>>2, 结果为 11101010 >>>( 无符号右移 ), 例如 :a= 10101000, a>>>2, 结果为 00101010 赋值运算符 : =( 赋值 ), 例如 :a=100, 结果为 a 中存储 100 +=( 加等于 ), 例如 :a=8,b=3,a+=b 的结果为 a=11,b=3 =( 减等于 ), 例如 :a=8,b=3,a =b 的结果为 a=5,b=3 *=( 乘等于 ), 例如 :a=8,b=3,a*=b 的结果为 a=24,b=3 /=( 除等于 ), 例如 :a=8,b=3,a/=b 的结果为 a=2,b=3 %=( 模除等于 ), 例如 :a=8,b=3,a%=b 的结果为 a=2,b=3 条件运算符 :?: ( 条件运算符 ), 例如 :int max,a=20,b=19; max=a>b?a:b; 结果为 max=20 2.8 在下列符号中不属于字符常量的有哪些? 说明理由 ' x ' ' \101 ' ' \r ' ' \\ ' ' \% ' ' \u0030 ' ' + ' M s ' \= ' 解答 不属于字符常量的有 : ' \% ' ' \= ': 单撇号内有两个字符, 又不是转义字符 M s: 没有用单撇号扩起来 2.9 已知 int i=10,j=0; 计算下面表达式的值 (1)j=5+++i (2)j=5+i++ (3)j=8+3*9/7 6 (4)j=i+3*9%i 4 解答 (1)j=16 (2)j=15 (3)j=5 (4)j=13 2.10 已知 int i=10,j=20,k=30; 计算下面表达式的值 (1)i<10&&j>10&&k!=10 (2)i<10 j>10 k!=10 (3)!(i+j>k)&&!(k j>i) (4)!(i==j)&&!(j==k)&&!(i==k) 解答 (1)false (2)true (3)true (4)true 2.11 已知 int i=6,j=8; 求下面表达式计算后 j 的值 (1)j+=++i (2)j =5+i++
第 2 章 Java 语言基础 13 (3)j*=j+3*i*j (4)j+=j =j*=j 解答 (1)j=15 (2)j= 3 (3)j=1216 (4)j=0 2.12 编写程序, 从键盘输入圆的半径, 求圆的周长和面积并输出 解答 解题思路 : (1) 从键盘输入半径值, 需要引用 java.io.* 包中的类 (2) 把输入的字符串转换为需要的数值类型 (3) 根据半径, 计算圆的周长和面积 (4) 按照相关要求输出计算结果 参考程序 : import java.io.*; class C02E12 { public static void main(string args[]) { byte buf[]=new byte[50]; //50 个字节的数组用于存字符串 String str; double dblr=0.0; // 局部变量要初始化 try { //try 语句 System.out.print(" 输入圆的半径 :"); System.in.read(buf); // 从键盘读一个数字串保存于 buf 中 str=new String(buf,0); //buf 转换成 String 对象 str dblr=double.parsedouble(str.trim()); // 数字串转换成整数 catch (Exception e) { //catch 语句,Exception 为异常类 System.out.println(" 圆的半径为 :"+dblr); System.out.println(" 圆的周长为 :"+2*Math.PI*dblR); System.out.println(" 圆的面积为 :"+Math.PI*dblR*dblR); 程序执行结果 : 输入圆的半径 :15 圆的半径为 :15.0 圆的周长为 :94.24777960769379 圆的面积为 :706.8583470577034 2.13 编写程序, 从键盘输入平行四边形的底和高, 求面积并输出 解答 解题思路 : (1) 从键盘输入数据, 需要引用 java.io.* 包中的类 (2) 把输入的字符串转换为需要的数值类型 (3) 根据平行四边形面积计算公式, 计算平行四边形的面积 (4) 输出计算结果
14 Java 语言程序设计习题解答 实验指导及实训 参考程序 : public class C02E13{ public static void main(string args[]){ double dblwidth=0.0,dblheight=0.0; // 参数个数检查 if(args.length<2){ System.out.println(" 输入的参数个数不对 :"); return; try{ dblwidth=java.lang.double.valueof(args[0]).doublevalue(); dblheight=java.lang.double.valueof(args[1]).doublevalue(); catch(exception e){ System.out.println(" 输入参数的格式不对 :"); return; System.out.println(" 平行四边形的底为 "+dblwidth); System.out.println(" 平行四边形的高为 "+dblheight); System.out.println(" 平行四边形的面积为 :"+dblwidth*dblheight); 程序执行结果 : 平行四边形的底为 15.0 平行四边形的高为 24.0 平行四边形的面积为 :360.0 2.14 编写程序, 实现摄氏温度和华氏温度的转换, 要求输入摄氏温度, 输出华氏温度 ; 输入华氏温度, 输出摄氏温度 摄氏温度和华氏温度的转换公式为 : 解答 解题思路 : 华氏温度 =9 摄氏温度 5+32 (1) 从键盘输入数据, 需要引用 java.io.* 包中的类 (2) 把输入的字符串转换为需要的数值类型 (3) 根据输入的是 1 还是 2, 确定输入的是摄氏温度还是华氏温度 (4) 根据输入的摄氏温度或华氏温度, 按转换公式转换为相应的温度值 (5) 按照要求输出计算结果 参考程序 : import java.io.*; public class C02E14{ public static void main(string args[]){ byte buf[]=new byte[50]; //50 个字节的数组用于存字符串 int T=0; String str; double dblt=0.0; // 局部变量要初始化 try{ System.out.print(" 选择摄氏温度 1 或华氏温度 2?");
第 2 章 Java 语言基础 15 System.in.read(buf); str=new String(buf,0); T=Integer.parseInt(str.trim()); catch(exception e){ switch(t){ case 1: try { //try 语句 System.out.print(" 输入摄氏温度值 :"); System.in.read(buf); // 从键盘读一个数字串保存于 buf 中 str=new String(buf,0); //buf 转换成 String 对象 str dblt=double.parsedouble(str.trim()); // 数字串转换成整数 catch (Exception e) { //catch 语句,Exception 为异常类 System.out.println(" 输入摄氏温度值为 :"+dblt); System.out.println(" 相应的华氏温度为 :"+(9*dblT/5+32)); break; case 2: try { //try 语句 System.out.print(" 输入华氏温度值 :"); System.in.read(buf); // 从键盘读一个数字串保存于 buf 中 str=new String(buf,0); //buf 转换成 String 对象 str dblt=double.parsedouble(str.trim()); // 数字串转换成整数 catch (Exception e) { //catch 语句,Exception 为异常类 System.out.println(" 输入华氏温度值为 :"+dblt); System.out.println(" 相应的摄氏温度为 :"+5*(dblT-32)/9); break; default: System.out.println(" 没有选择适当的温度!"); break; 程序执行结果 : 选择摄氏温度 1 或华氏温度 2?1 输入摄氏温度值 :100 输入摄氏温度值为 :100.0 相应的华氏温度为 :212.0 程序再次执行结果为 : 选择摄氏温度 1 或华氏温度 2?2 输入华氏温度值 :200 输入华氏温度值为 :200.0 相应的摄氏温度为 :93.33333333333333 注意 : 华氏温度转换为摄氏温度的公式为 : 摄氏温度 =5 ( 华氏温度 32) 9 2.15 编写程序, 实现英里到公里的转换, 其转换公式为 : 1 英里 =1.6 公里
16 Java 语言程序设计习题解答 实验指导及实训 解答 解题思路 : (1) 从键盘输入数据, 需要引用 java.io.* 包中的类 (2) 把输入的字符串转换为需要的数值类型 (3) 根据输入的英里数, 按转换公式 1 公里 =1 英里 1.6 计算成公里数 (4) 按照要求输出计算结果 参考程序 : import java.io.*; public class C02E15{ public static void main(string args[]){ byte buf[]=new byte[50]; //50 个字节的数组用于存字符串 String str; double dblk=0.0; // 局部变量要初始化 try{ System.out.print(" 输入英里数 :"); System.in.read(buf); str=new String(buf,0); dblk=double.parsedouble(str.trim()); catch(exception e){ dblk=dblk/1.6; System.out.println(" 相应的公里数为 :"+dblk); 程序执行结果为 : 输入英里数 :198 相应的公里数为 :123.75 2.2 Java 基本数据类型 运算符和表达式实验 2.2.1 实验目的 1. 掌握 Java 的基本数据类型 2. 掌握 Java 的常用运算符 3. 掌握 Java 表达式的应用 2.2.2 实验内容 1. 执行下列程序, 分析输出结果 public class DataType{ public static void main(string srgs[]){ int i1=800; short s1=1024; long lg1=1234567890; float f1=6222.365f; double d1=20041010.2222;
第 2 章 Java 语言基础 17 char c1='a'; String str1=" 北华航天工业学院计算机系 "; boolean b1=false; System.out.println(" 数据类型和变量 :"); System.out.println("-----------------------------------------"); System.out.println(" 整型 :"+i1+" 短整型 :"+s1+" 长整型 :"+lg1); System.out.println(" 单精度浮点型 :"+f1+" 双精度浮点型 :"+d1); System.out.println(" 字符型 :"+c1+" 字符串型 :"+str1); System.out.println(" 布尔类型 :"+b1); System.out.println("---------------------------------------\n"); System.out.println(" 转义字符 :"); System.out.println("-----------------------------------------"); System.out.print(" [\\\\] 为反斜杠,[\\n] 为换行.\n"); System.out.println(" [\\101]:"+'\101'+" [\\141]:"+'\141'); System.out.println("-----------------------------------------"); 2. 执行下列程序, 分析输出结果 // DataType2.java import java.applet.*; import java.awt.*; public class DataType2{ public void paint(graphics g){ int i1=800; short s1=1024; long lg1=1234567890; float f1=6222.365f; double d1=20041010.2222; char c1='a'; String str1=" 北华航天工业学院计算机系 "; boolean b1=false; g.drawstring(" 数据类型和变量 :",20,30); g.drawstring("----------------------------------------",20,40); g.drawstring(" 整型 :"+i1+" 短整型 :"+s1+" 长整型 :"+lg1,20,50); g.drawstring(" 单精度浮点型 :"+f1+" 双精度浮点型 :"+d1,20,60); g.drawstring(" 字符型 :"+c1+" 字符串型 :"+str1,20,70); g.drawstring(" 布尔类型 :"+b1,20,80); g.drawstring("---------------------------------------\n",20,90);
18 Java 语言程序设计习题解答 实验指导及实训 g.drawstring(" 转义字符 :",20,110); g.drawstring("----------------------------------------",20,100); g.drawstring(" [\\\\] 为反斜杠,[\\n] 为换行.\n",20,120); g.drawstring(" [\\101]:"+'\101'+" [\\141]:"+'\141',20,130); g.drawstring("----------------------------------------",20,140); //CT02E02.HTML <HTML> <HEAD> <TITLE> 数据类型 变量 常量的应用 </TITLE> </HEAD> <BODY> <APPLET CODE="DataType2.class" WIDTH="400" HEIGHT="300"> </APPLET> </BODY> </HTML> 3. 执行下列程序, 分析输出结果 public class Expression{ public static void main(string srgs[]){ int i1=100,i2=89,i3=0,i4=0; boolean b1=false; float f1=87.654f; double d1=987.1234; System.out.println("0 各变量的原始值为 :"); System.out.println("------------------------------------"); i3=(int)f1;i4=(int)d1; System.out.println("1 类型转换后, 各变量的值为 :"); System.out.println("----------------------------------------"); i3=i1/i2;i4=i1%i2; System.out.println("2 双目运算后, 各变量的值为 :"); System.out.println("----------------------------------------"); i1++;--i2;i3=i1++;i4=--i2;
第 2 章 Java 语言基础 19 System.out.println("3 单目运算后各变量的值为 :"); System.out.println("----------------------------------------"); b1=(i1+i2)>(i3+i4); System.out.println("4 关系运算后各变量的值为 :"); System.out.println("----------------------------------------"); b1=(i1==i2) (i3<i4); System.out.println("5 逻辑运算后各变量的值为 :"); System.out.println("----------------------------------------"); i1=i2<<(i3-i4)%10; System.out.println("6 移位运算后各变量的值为 :"); System.out.println("----------------------------------------"); b1=(i1-i2)!=(i3-i4)?(i1!=i2 i3==i4):false; System.out.println("7 移位运算后各变量的值为 :"); 2.2.3 实验步骤 1. 在 Java 开发环境中, 输入程序代码, 编译执行, 程序运行结果为 : 数据类型和变量 : --------------------------------------------- 整型 :800 短整型 :1024 长整型 :1234567890 单精度浮点型 :6222.365 双精度浮点型 :2.00410102222E7 字符型 :A 字符串型 : 北华航天工业学院计算机系布尔类型 :false ------------------------------------------------ 转义字符 : ------------------------------------------------ [\\] 为反斜杠,[\n] 为换行. [\101]:A [\141]:a ------------------------------------------------
20 Java 语言程序设计习题解答 实验指导及实训 2. 实验步骤如下 : (1) 在 Java 开发环境中, 输入 DataType 2.java 程序代码, 编译生成 DataType2.class 文件 (2) 在 Java 开发环境或记事本中编写 CTOZEO2.HTML 文件 (3) 使用 appletviewer 或 IE 打开 CTOZEO2.HTML 文件, 执行结果如图 2-1 或图 2-2 所示 图 2-1 使用 appletviewer 执行结果图 2-2 使用 IE 执行结果 3. 在 Java 开发环境中, 输入程序代码, 编译执行, 程序运行结果为 : 0 各变量的原始值为 : i1=100 i2=89 i3=0 i4=0 f1=87.654 d1=987.1234 b1=false ----------------------------------------------------------- 1 类型转换后, 各变量的值为 : i1=100 i2=89 i3=87 i4=987 f1=87.654 d1=987.1234 b1=false ------------------------------------------------------------ 2 双目运算后, 各变量的值为 : i1=100 i2=89 i3=1 i4=11 f1=87.654 d1=987.1234 b1=false ----------------------------------------------------------- 3 单目运算后各变量的值为 : i1=102 i2=87 i3=101 i4=87 f1=87.654 d1=987.1234 b1=false ----------------------------------------------------------- 4 关系运算后各变量的值为 : i1=102 i2=87 i3=101 i4=87 f1=87.654 d1=987.1234 b1=true ----------------------------------------------------------- 5 逻辑运算后各变量的值为 : i1=102 i2=87 i3=101 i4=87 f1=87.654 d1=987.1234 b1=false ----------------------------------------------------------- 6 移位运算后各变量的值为 : i1=1392 i2=87 i3=101 i4=87 f1=87.654 d1=987.1234 b1=false ----------------------------------------------------------- 7 移位运算后各变量的值为 : i1=1392 i2=87 i3=101 i4=87 f1=87.654 d1=987.1234 b1=true
第 2 章 Java 语言基础 21 2.2.4 实验总结在本章实验中, 首先对变量进行了定义, 并用赋值语句为变量进行了赋值 ; 变量的类型涉及到 : 整型 长整型 短整型 单精度浮点型 双精度浮点型 字符型和字符串型 在使用字符型常量时, 特别要注意转义字符的使用 变量类型之间可以使用强制类型转换运算符进行转换 在编写本程序时, 要掌握的运算符包括算术运算符 :+ ++ / %; 关系运算符 : > < ==!=; 位运算符 :<<; 逻辑运算符 :! ; 条件运算符 :?: 在使用运算符时, 需要注意运算符的功能 优先级和结合性