目录
-
- 写在前面
- 使用教材
- 实验二:Java语言基础
- 实验三:Java语言基础
- 实验四:类与对象基础
- 实验五:类与对象基础
- 实验六:类与对象基础
- 实验七:类的设计与封装
写在前面
- 关于题目
涉及Java语言基础、类与对象基础、类的设计与封装、类继承与接口的设计、集合框架与泛型、异常类、嵌套类、枚举类型、输入/输出流、多线程与网络编程基础等大内容,知识点包括标识符、关键字与字面值、变量与类型、运算符与表达式、语句、类与对象、Math类、字符串:String类与StringBuffer类、数组对象、包装类、大数处理与BigInteger类、时间处理、类设计的基本思路、矩形类的初步设计、类声明与域的定义……
题目来自实验课老师布置,由于课本不在手边,所以涉及课本例题的,没有办法提供原例题。 - 关于答案
主要是我作业里自己写的代码,如果和老师发的参考答案差别较大,会发上两个答案。能力有限,如果有错误的地方,欢迎指正。 - 持续更新中……
使用教材
- Java面向对象程序设计
出版社:高等教育出版社
作者: 苏健
版次:1
重点项目: “十一五”国家规划课题研究成果
实验二:Java语言基础
- 结合C语言课程的代码,将例2.4更改为判断素数的总个数。
- 阅读课本P32中2.5.2关于Java基本类型的内容。试回答:C语言中是否有对应的数据类型? 如果有,两者有差异吗,如果没有,C语言中有没有实现类似功能的内容?
Java基本类型在C语言中对应的基本类型:
整数类型:int-int、short-short、long-long;
浮点类型:float-float、double-double;
字符类型:char-char。
C语言没有byte和boolean类型。
对应的类型中,Java的long类型取值范围比C语言的更广,Java的char类型占用2个字节(16位),C语言的char类型占用1个字节(8位)。
C语言中,unsigned char可以实现Java的byte类型;而要实现Java中的boolean布尔类型,需要在代码运算后用return功能返回一个表达式,表达式0表示假,非0表示真。
实验三:Java语言基础
- 首先判断下列语句是否有错,然后上机检验,如果有错的请更正并说明错误原因。
- 假设已定义变量int a=9; int b=2; 请判断以下表达式的值以及运行后a和b的值,然后上机检验。
逻辑运算符左右两边只接受boolean类型,具有短路特性
位运算符可以使用所有整数类型和boolean类型的数据,没有短路特性
- (a–>7) || (b++>7)
表达式的值为true,a=8,b=2- ((a–)>7) | (b++>7)
表达式的值为true,a=7,b=3- (b++>7) && ((a–)>7)
表达式的值为false,a=7,b=3- (b++>7) & ((a–)>7)
表达式的值为false,a=7,b=3
- 试判断下面两段程序是否有错误。
讯享网
- 阅读类StringExample1的代码,通过搜索引擎或猜测三个println语句输出的结果,然后运行程序验证你的结果。
- 类ArrayAverage用于对两个数组计算平均值,main中通过调用getAver函数来计算平均值,补充两个函数中的语句使其能正常工作。
讯享网
- 完成课本P57的习题15,类名定义为TestDigi,题中的“输入若干个数字”可以直接初始化一个数组,然后依次判断数组的元素,无须使用Scanner类。
实验四:类与对象基础
- 阅读并运行课本P.66中的例子3.2,两个类都加上public限定符号,两个类放在同一个包下。
//注意:由于加了public,两个类要分别放在自己的类文件中,文件名和类型一致。
- 编写程序通过Math类的方法和域来实现如下功能:首先生成3个随机数,然后以这3个数为半径,分别计算其面积,最后输出这三个面积的最大值。
//相关方法在P71
- 阅读并运行课本P.78中的例3.8,然后编写类SStrLoc来实现功能:给定一个字符串,通过程序判断该字符串中是否包含某个子串。如果包含,求出子串的所有出现位置。如:"abcbcbabcb34bcbd"中,"bcb"子串的出现位置为: 1,7,12。注意找到子串后,再次搜索可以直接从这个子串后开始,无须再从第二个字符开始,例如前述例子中,找到第一个bcb后,可以直接从第5个字符开始第二次搜索。
- 回答问题:如何判断两个String对象是否相等?如何判断两个String对象在忽略大小写的情况下是否相等?并补充下列代码,通过代码判断几个String对象的关系。
//P77中有判断字符串是否相等的方法,==只能判断引用(对象地址)是否相等。
//注意S1和S2的关系、S1和S3的关系,注意阅读P74中例3.4前面的一段话。
- 首先阅读并运行课本P80中的例3.11。假定有字符串对象s,String s=”name=zhangsan age=18 classNo=090728” ; 编写类SplitStr将上面的字符串拆分,结果如下: zhangsan 18 090728。
//提示:首先使用空格进行拆分,再使用=进行拆分。
- 编写类RevStr将输入的字符串反转并变更为大写,例如将”test” 变为 “TSET”。
//提示:查找类String或StringBuffer,看有没有类似的方法。
//P81,String和StringBuffer的相互转换
- 编写类SymStr来实现功能:给定一个字符串,判断该字符串是否对称,例如abcdcba和abcddcba都是对称的。
实验五:类与对象基础
- 回答以下问题。
1)如定义对象 StringBuffer ch = new StringBuffer(“Shanghai”) 则ch.length()=( 【1】 )。
2)对于数组int t[ ][ ]={{1,2,3},{4,5,6}}来说,t.length等于( 【2】 ),t[0].length等于( 【3】 )。
3)判断下列两个程序的输出:


//注意字符串使用成员方法length()来获取长度,数组使用成员变量length来获取长度。
//数组名是一个对象引用。第一个例子最后a和b指向同一个数组。
【1】 8
【2】 2
【3】 3
第一个输出:10
第二个输出:1
- 下图是数组myArray在内存堆上的示意图,写出可以生成这个数组的语句。

- 数组ca的数值如下:{{1,3,4,5},{7,8,9},{1,2},{8,7,6,5,4,3,2,1}};编写程序,使用for语句遍历整个数组的元素。
- 编写程序实现下列功能:
1)使用Random类随机填充一个长度为20的整数数组a,0<=数组元素<=100,输出所有的数组元素;
2)查找数组a中是否包含值为60的元素;
3)将数组a的前10个元素复制到数组b,输出b的元素;
4)分别计算数组a和数组b的平均值。
- 包装类的函数主要用于(基本数据类型/字符串/包装类)三者间的转换。通过阅读课本或搜索,通过语句举例回答如下问题(以int/Integer/String为例):
(1) 现有基本数据类型变量,如何转换为对应的包装类?如何转换为字符串?
int i = 10;
Integer i1 = new Integer(i);
String si = Integer.toString(i);
(2)现有字符串形式表示的基本数据类型,如何转换为对应的包装类?如何转换为基本数据类型?
String si = “10”;
Integer i1 = new Integer(si);
int i = Integer.parseInt(si);
(3) 现在包装类对象,如何转换为对应的基本数据?如何转换为字符串?
Integer i1 = new Integer(10);
int i = i1. intValue( );
String si = i1.toString();
实验六:类与对象基础
- concat是String类的成员函数,用于连接两个字符串。编写程序验证下列语句能否实现连接字符串的功能。
string x = “abc”;
x.concat(“def”);
System.out.println("x = "+x);
不能,因为conta函数只能调用,而不能修改字符串本身的内容。要获取新的字符串需要创建新的字符串对象。实现字符串连接可以使用下列语句:
String y = x.concat(“def”);
System.out.println("y = " + y);
- append是StringBuffer类的成员函数,同样用于连接两个字符串。下列语句能否实现连接字符串的功能?编写程序验证。
StringBuffer sb = new StringBuffer(“abc”);
sb.append(“def”);
System.out.println("sb = " + sb);
能,因为append函数是StringBuffer类通过重载方法得到的。
- 下面的代码主要用来统计通过String类连接10000个字符所花费的时间。Random类主要用来生成随机数;nanoTime()是System类的静态函数,用来返回当前时间(纳秒)。读懂下列代码并上机运行。然后使用StringBuffer类改写EX51,并对比两个程序的运行结果,哪个更快?为什么?
- 阅读课本例3.30(P110)和例3.31(P112),然后完成课本习题3中的第15小题(P126)。
- 编程实现(Calendar类/Date类):
(1) 给定一个身份证号(可以直接在程序中定义,不需要从键盘输入),输出生日的年、月、日,并计算当天是星期几。
(2) 计算下一个生日还有多少天(注意今年的生日可能已经过了)。
实验七:类的设计与封装
- 阅读课本P138中的例4.2,并上机运行。对比例4.1,例4.2改进了什么地方?
例4.2为Rectangle类提供了一个构造器,并在这个构造器中提供了对象的初始化代码,这样既方便Rectangle对象的创建和使用,同时也避免了对象初始化代码的简单重复。因为nextId是类变量,所以nextId的值可被多个对象共享。由于构造器在每次执行创建对象时,都对nextId进行自增,这就保证在创建下一个对象时,其编号都是唯一的。
- 阅读课本P147中的例4.4,并上机运行。对比例4.3,例4.4改进了什么地方?
例4.4演示了如何在一个构造器中通过“this(参数)”形式调用重载的其他构造器。在这个例子中,Rectangle类的构造器2和构造器3中都通过this(参数)调用了构造器1,从而避免了对象创建功能代码的重复。
- 模仿课本P150中的例4.5,上机运行,然后给例4.5添加一个成员方法,这个成员方法用来判断一个矩形是否为一个正方形。
- 模仿课本的例4.5的矩形类,编程实现一个类似的三角形类。




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/5325.html