Java语言程序设计课后习题解答(张思民版).doc

上传人:小小飞 文档编号:5090027 上传时间:2020-02-01 格式:DOC 页数:110 大小:883.71KB
返回 下载 相关 举报
Java语言程序设计课后习题解答(张思民版).doc_第1页
第1页 / 共110页
Java语言程序设计课后习题解答(张思民版).doc_第2页
第2页 / 共110页
Java语言程序设计课后习题解答(张思民版).doc_第3页
第3页 / 共110页
Java语言程序设计课后习题解答(张思民版).doc_第4页
第4页 / 共110页
Java语言程序设计课后习题解答(张思民版).doc_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《Java语言程序设计课后习题解答(张思民版).doc》由会员分享,可在线阅读,更多相关《Java语言程序设计课后习题解答(张思民版).doc(110页珍藏版)》请在三一文库上搜索。

1、第1章 Java概述【1】为什么说Java的运行与计算机硬件平台无关?解答:Java编译器能够产生一种与计算机体系结构无关的字节指令(Byte Code),只要安装了Java虚拟机,Java就可以在相应的处理机上执行。利用Java虚拟机就可以把Java字节码程序跟具体的操作系统以及硬件平台分隔开来。【2】Java有什么特点?解答:Java的特点有:(1)简单性;(2)面向对象;(3)跨平台性;(4)健壮性;(5)安全性;(6)可移植性;(7)多线程性;(8)动态性。【3】试述Java开发环境的建立过程。解答:Java开发环境的建立过程如下:1JDK的下载与安装:从http:/下载最新版的JDK

2、,单击下载后的文件即出现安装界面;在此界面中打击“next”按钮即可;2JDK的配置:安装好JDK后,设安装路径为c:jdk1.5;还需要在环境变量中进行对应的配置。下面以Windows操作系统为例来进行配置。1) 设置JAVA_HOME环境变量:在桌面上用鼠标右键单击“我的电脑”,依次选择“属性”、“高级”、“环境变量”选项,新建一个系统变量,名称为JAVA_HOME,值为c:jdk1.5;2) 设置CLASSPATH环境变量,设置方法和JAVA_HOME一样,其值为c:jdk1.5libtools.jar;. ;3) 更新PATH环境变量的值,编辑PATH系统变量,在最后添加c:jdk1.

3、5bin;. 。【4】什么是Java API? 它提供的核心包的主要功能是什么?解答:Java API就是Java所提供的标准类库,它把程序设计所需要的常用的方法和接口分类封装成包。在Java API中主要包括核心java包、javax扩展包和org扩展包等。核心java包中封装了程序设计所需要的主要应用类。【5】如何编写和运行Java应用程序?解答:Java应用程序的编写和运行过程:1建立Java源文件:首先创建Java的源代码,即建立一个文本文档,包括有符合Java规范的语句。2编译源文件:“编译”就是将一个源代码文件翻译成计算机可以理解和处理的格式的过程。Java源程序编译后会生成一个字

4、节码文件,即带扩展名class的文件。Java字节码文件中包含的使Java解释程序将要执行的指令码。3执行字节码文件:通过Java虚拟机运行字节码文件。【6】为什么要为程序添加注释,在Java程序中如何为程序添加注释?解答:注释是程序中的说明性文字,是程序的非执行部分。它的作用是为程序添加说明,增加程序的可读性。Java使用以下二种方式对程序进行注释:1“/”符号,它表示从“/”符号开始到此行的末尾位置都作为注释。2“/*/”符号,它表示从“/*”开始到“*/”结束的部分都作为注释部分,可以使多行注释。【7】Java工具集中的javac、java、appletviewer各有什么作用?解答:j

5、avac的作用:它是Java编译器,用于将Java源程序编译成字节码文件;java的作用:它是Java解释器,用于解释执行Java字节码文件;appletviewer的作用:Applet程序浏览器,用于测试和运行Applet程序。【8】如何建立和运行Java Applet程序?解答:Java Applet程序的建立和运行过程:1建立Java源文件:首先创建Java的源代码,即建立一个文本文档,包括有符合Java规范的语句。2编译源文件:将Java源文件编译成Class的字节码文件,然后再将字节码文件嵌入到一个HTML文件中。3利用浏览器解释执行html文件。第2章 Java基础【1】什么是数据

6、类型?为什么要将数据划分为不同的数据类型?解答:Java是一门强类型语言。数据类型是用来区分不同的数据;由于数据在存储时所需要的容量各不相同,不同的数据就必须要分配不同大小的内存空间来存储,所有就要将数据划分成不同的数据类型。【2】Java中有哪些数据类型?解答:Java中有8 种基本数据类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),单精度型(float),双精度型(double),布尔型(boolean)。【3】声明变量的作用是什么?解答:变量时一个数据存储空间的表示,将数据指定给变量,就是将数据存储至对应的内存空间,调用变量,就是将

7、对应的内存空间的数据取出来使用。声明变量就是申请一个内存空间。【4】若x=4,y=2,计算z值:(1) z=x&y(2) z=x|y(3) z=x|y(4) z=xy(5) z= x(6) z= x y解答:public class Test_4 public static void main(String args) int x = 4, y = 2, z; /初始化x,y,zz = x & y; /求z=x&y;即x与y的值System.out.println(4_1:+z);z = x | y; /求z=x|y;即x或y的值System.out.println(4_2:+z);z = x

8、 y; /求z=xy;即x异或y的值System.out.println(4_3:+z);z = x y; /求z=xy;即x右移y位的值System.out.println(4_4:+z);z = x; /求z=x;即x位反的值System.out.println(4_5:+z);z = x y; /求z=x y; /求z=xy;即x无符号右移y位的值System.out.println(4_7:+z);【5】假设x=10,y=20,z=30,求下列布尔表达式的值:(1) x10 | xy & yx(3) (xy+z) & (x+10=20)(4) z-y=x & (y-z)=x(5) xx

9、(6) xy | yx(7) !(xy+z) |!(x+10=20)(8) (!(x=y) & (x!=y) & (xy | yx)解答:public class Test_5 public static void main(String args) int x = 10, y = 20, z = 30;boolean flag;/求x10|x10布尔值flag = x 10 | x y&y y & y x;System.out.println(5_2:+flag);/求(xy+z)&(x+10=20)布尔值flag = (x y + z) & (x + 10 = 20);System.out

10、.println(5_3:+flag);/求z-y=x&(y-z)=x布尔值flag = z - y = x & (y - z) = x;System.out.println(5_4:+flag);/求x10布尔值flag = x 10;System.out.println(5_5:+flag);/求xy|yx布尔值flag = x y | y x;System.out.println(5_6:+flag);/求!(xy+z)|!(x+10=20)布尔值flag = !(x y + z) | !(x + 10 = 20);System.out.println(5_7:+flag);/求(!(x

11、=y)&(x!=y)&(xy|yx)布尔值flag = (!(x = y) & (x != y) & (x y | y x);System.out.println(5_8:+flag);【6】什么是表达式? 什么是语句?解答:表达式是由运算符,操作数和方法调用按照语言的语法构造而成的符号序列。表达式可用于计算一个格式,位变量赋值以及帮助控制程序执行流程。语句:语句组成了一个执行程序的基本单元,类似于自然语言的句子。包括表达式语句、复合语句、控制语句等。【7】Java有哪些数据类型?请描述其分类情况。解答:Java定义了8个基本数据类型:字节型,短整型,整型,长整型,字符型,浮点型,双精度型,布

12、尔型。它们分为4组: 1) 整数型(byte,short,int,long) 2) 浮点数型(float,double)3) 字符型(char)4) 布尔型(boolean)【8】试比较break和continue语句的区别?解答:Break:强行退出循环,忽略循环体中的任何其他语句和循环的条件的条件测试。Continue:语句用来终止本次循环。其功能是终止当前正在进行的本轮循环,即跳过后面剩余的语句,转而执行循环的第一条语句,计算和判断循环条件,决定是否进入下一轮循环。【9】有一函数: x (x1) y = 3x-2 (1x10) 4x (x10)编写一程序,给定x值,输出y值。解答:imp

13、ort java.io.*;public class Test_9 public static void main(String args) throws NumberFormatException,IOException InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr);System.out.println(请输入数字x的值:);double x = Double.parseDouble(br.readLine();double y = 0

14、;if (x = 1 & x 10) y = 3 * x - 2; else y = 4 * x;System.out.println(y= + y);【10】说明while和do.while语句的差异。解答:Do-while与while 语句的主要区别在于,先执行循环体中的语句再计算条件表达式,所以do-while语句的循环体至少执行一次。【11】写出下列语句执行后的结果:for (k=1;k4) break;System.out.println(“k=”+k);解答:public class Test_11 public static void main(String args) int

15、k;for (k = 1; k 4)break;System.out.println(k= + k);【12】编写程序,求的值。解答: public class Test_12 public static void main(String args) int k,sum=0; for(k=1;k=10;k+) sum=sum+k*k; System.out.println(sum=+sum);【13】编写一程序,输入3个数,能按大小顺序输出。解答:import java.io.BufferedReader;import java.io.IOException;import java.io.In

16、putStreamReader;public class Test_13 public static void main(String args) throws NumberFormatException,IOException InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);int a = new int3;int k, temp;System.out.println(请输入3个数字(每输入一个数字后请换行);for (int i = 0;

17、 i 3; i+) ai = Integer.parseInt(br.readLine();for (int i = 0; i a.length; i+) k = i;for (int j = k + 1; j a.length; j+) if (aj ak) k = j;if (k != i) temp = ai;ai = ak;ak = temp;System.out.println(从小到大排序:);for (int i = 0; i a.length; i+) System.out.print(ai + );【14】编写一各Java程序,查找1100之间的素数并将运行结果输出。解答:p

18、ublic class Test_14 public static void main(String args) int m, k, i, n = 0;boolean flag;for (m = 1; m = 100; m=m+2) flag = true;k = (int)Math.sqrt(m);for (i = 2; i = k; i+) if (m % i = 0) flag = false;break;if (flag) System.out.print(m + );n = n + 1;if (n % 10 = 0)System.out.println();【15】运行下面程序,并分

19、析其执行过程:Public class multiplicationpublic static void main(String args )int i,j;for (i=1;i10;i+)for (i=1;i10;i+)System.out.print(i+”*”+j+”=”+i*j+”); System.out.println(); 解答:public class Test_15 public static void main(String args) int i, j;for (i = 1; i 10; i+) for (j = 1; j = i; j+) System.out.prin

20、t(i + * + j + = + i * j + );System.out.println();/*结果:1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9

21、9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81乘法表*/【16】编写程序实现:输入一组整数,比较并输出其中的最大值和最小值,再将数组元素从小到大排序并将运行结果输出。解答:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Test_16 public static void main(String args) throws NumberFormatException,IOExc

22、eption InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr);int a = new int5;int k, temp;System.out.println(请输入5个数字(每输入一个数字后请换行);for (int i = 0; i 5; i+) ai = Integer.parseInt(br.readLine();for (int i = 0; i a.length; i+) k = i;for (int j = k + 1; j a

23、.length; j+) if (aj ak) k = j;if (k != i) temp = ai;ai = ak;ak = temp;System.out.println(最小数字 :+a0);System.out.println(最大数字 :+aa.length-1);System.out.println(从小到大排序:);for (int i = 0; i a.length; i+) System.out.print(ai + );【17】编写打印下列图形的程序:(1) (2) (3) # * * * * * * * $ # # * * * * * $ $ $ # # # * * *

24、 $ $ $ $ $ # # # # * $ $ $ $解答:public class Test_17_1 public static void main(String args) int i, j;for (i = 1; i = 4; i+) for (j = 1; j = i; j+) System.out.print(# + );System.out.println();public class Test_17_2 public static void main(String args) int i, j, k;for (i = 0; i 4; i+) for (k = 0; k i;

25、k+) System.out.print( );for (j = 0; j = 6 - 2 * i; j+)System.out.print(*);System.out.println();public class Test_17_3 public static void main(String args) int i=0,blank,j,star,input=5;/input是输入的行数String s=;for( i = 0;i input; i+ ) blank = Math.abs( i - input/2);for( j = 1 ; j = blank; j+ ) s += ; st

26、ar = input - 2 * blank; for( j = 1; j = star ; j+ )s += $; s += n ; System.out.print( s ); 【18】考虑一个23的数组a。(1) 为a写一个设声明。试问,这样的声明使a有多少行,多少列,多少元素?(2) 写出a 的第1行的所有元素的名字。(3) 写一条语句,置行1列2的元素为零。(4) 写一个嵌套for结构,将a 的每个元素初始化为零。(5) 定一条语句,求第3列元素的和。解答:(1) 数组a有2行,3列,元素个数为6(2) 第一行元素的名字为a00,a01,a02(3) 置行1列2的元素为0,语句是a0

27、1=0;(4) for(int i=0;i2;i+) for(in j=0;j3;j+) aij=0;(5) int sum=0; sum=a02+a12;【19】求33矩形对角元素之和。解答:public class Test_19 public static void main(String args) int i, j, sum = 0;int a = new int33;for (i = 0; i 3; i+) for (j = 0; j 3; j+) aij = i + j; /输出二维数组for (i = 0; i 3; i+) for (j = 0; j 3; j+) Syste

28、m.out.print(aij + );System.out.println(); /显示对角线之和for (i = 0; i 3; i+) sum = sum + aii;System.out.println(对角线之和: + sum);【20】编写一程序,查找某一字符串是否包含有“abc”。解答:public class Test_20 public static void main(String args) String s = yangen abc;int a = s.indexOf(abc);/a位找到abc的下标,找不到则返回-1if (a != -1) System.out.pr

29、int(包含字符串abc); else System.out.print(不包含字符串abc);【21】设一字符串中包含有大写字母的字符,也有下写字母的字符,编写一程序,将其中的大小写字母的字符分别输出。解答:public class Test_21 public static void main(String args) String s=sdfKJjKjjsjdfKKJkjkjSDFsdf;String s1=,s2=,s3; for(int i=0;is.length();i+) s3=ABCDEFGHIJKLMNOPQRSTUVWXYZ; if(s3.indexOf(s.charAt(

30、i)!=-1) s1=s1+s.charAt(i); else s2=s2+s.charAt(i); System.out.println(大写字母 :); System.out.println(s1); System.out.println(小写字母 :); System.out.println(s2); 【22】输出一字符串,统计其中有多少个单词。(单词之间用空格分隔)。解答:import java.util.*;public class Test_22 public static void main(String args) int i = 0;String s = Hello worl

31、d i love java;StringTokenizer st = new StringTokenizer(s, );while (st.hasMoreTokens() i+;System.out.println(st.nextToken();System.out.print(单词个数 : + i);第3章 面向对象程序设计基础【1】什么是Java程序使用的类?什么是类库?解答:Java程序的基本单位是类。对象是对事物的抽象,而类是对对象的抽象和归纳,找出事物的共性,把具有共同性质的事物归结为一类,得出一个抽象的概念类。类是具有相同属性和方法的一组对象的集合,类是在对象之上的抽象,对象则是类

32、的具体化,一旦建立类之后,就可用它来建立许多你需要的对象。Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(Application Program Interface),它可以帮助开发者方便、快捷地开发Java程序。【2】如何定义方法?在面向对象程序设计中方法有什么作用?解答:方法的定义由两部分组成:方法声明和方法体。方法声明的基本格式如下:返回类型 方法名(形式参数) /方法体内容方法声明包括方法名、返回类型和形式参数,方法的小括号是方法的标志;方法体为实现方法行为的Java语句。 在面向对象程序设计中,方法所起的作用是完成对类和对象属性操作。【3】简述构造方法的功能和

33、特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。void Student(int no,String name)studentNo=no;studentName=name;return no; 解答:构造方法是一个特殊的方法,主要用于初始化新创建的对象。构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 以上的代码段出错于:构造方法Student()前不能加void 不能用return语句 【4】定义一个表示学生的student类,包括的域有学

34、号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。解答:程序代码段如下:class studentprivate String id; private String name; private String sex;private int age; public String getId()return id; public String getName() return name; public String getSex() return sex; public int getAge() return ag

35、e; void setAge(int age) this.age = age; public class TestStudent public static void main(String args) student stu = new student(0401398, 杨小明, 男,20); System.out.println(student info: + n学号:+stu.getId()+ n姓名+stu.getName()+n性别:+stu.getSex()+ n年龄:+stu.getAge(); stu.setAge(19); System.out.println(修改后的年龄为

36、:+stu.getAge();【5】扩充、修改程序。为第4题的student类定义构造函数初始化所有的域,增加一个方法public String printInfo()把student类对象的所有域信息组合形成一个字符串,并在主类中创建学生对象及测试各方法的功能。解答:程序代码段如下:class studentprivate String id; private String name; private String sex;private int age; student(String id , String name, String sex, int age) this.id = id;t

37、his.name = name;this.sex = sex;this.age=age;public String getId()return id; public String getName() return name; public String getSex() return sex; public int getAge() return age; void setAge(int age) this.age = age; public String printInfo() String s= student info: + n学号:+id+ n姓名+name+n性别:+sex+ n年龄

38、+age; System.out.println(s); return s;public class TestStudent public static void main(String args) student stu = new student(0401398, 杨小明, 男,20);stu.printInfo(); stu.setAge(19); stu.printInfo();【6】什么是修饰符?修饰符的种类有哪些?它们各有什么作用?解答:修饰符是用于限定类对象使用的权限,从而实现类中成员的信息隐藏。访问修饰符适用于类成员,而不是方法内部的局部变量。Java常见的访问修饰符有这4种:private、default、protected和public。(1) public 可以被所有的类访问(2) pravite 只能被类本身访问,其他类无法访问(3) protected 可以被类本身、它的子类(包括同一个包中以及不同包中的子类)(4) default 属于默认的访问状态,可以被类本身和同一个包中的类访问【7】什么是抽象类?为什么要引入抽象类的概念?解答

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 绩效管理


经营许可证编号:宁ICP备18001539号-1