1
JavaSE技能手册 3G软件学院
2
序
本技能手册为三个月的javaSE学习所用。里面的题目以本学院教学大纲为基础,分为初、中、高三个教学周期。每个教学周期分为20个单元,每天一个单元。每天老师讲完本单元内容后,学生都要把手册里面对应的技能练习题完成,老师都要对学生的完成情况进行检查。
为促进老师在教学过程中重视本手册,促使学生在学习过程中使用本手册,每个月的技能考试的题目原型都来源于本手册。通过此措施,达到“以考促教,以考促学”的教学目的。
本手册为提高学生技能而写,希望各位同学能积极利用,发挥其价值。
王昕哲 2013-1-1
3
JavaSE初级—第一单元:JAVA语言概述,简单的JAVA程序解析 1:java语言的特点是什么?
自动垃圾回收机制 面向对象的编程语言 不包含指针
2:举例写出在java发展史上对java有深刻影响的公司名称?
3:使用java实现输出 hello world!!
4:使用java实现输出如下图形。
5:问题:System.out.println()和System.out.print()有什么区别呢?
以下代码的运行效果是什么?
System.out.println(\我的爱好:\System.out.println(\打网球\
System.out.print(\我的爱好:\System.out.print(\打网球\
4
JavaSE初级—第二单元:Java开发工具介绍eclipse平台使用 1:列举你所知道的开发java程序的工具?
2:实现两个整数的加减乘除以及取余算法
3:写出常用的10个eclipse快捷键。
4:简述使用eclipse创建一个类的过程,以及一个工程里面的基本结构。
JavaSE初级—第三单元:变量、常量和基本数据类型 1:列举java里面的8中基本数据类型?
2:每种基本数据类型都定义一个常量。(八种)
3:每种基本数据类型都定义一个变量。
4:写出基本数据类型自动转化的流程图。
5:实现两个字符型数据的加减乘除运算。
6:计算下列表达式的结果:
10/3 ; 10/5 ; 10%2 ; 10.5%3;
5
JavaSE初级—第四单元:运算符,表达式及空语句
1:为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
2: 小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。 提示:摄氏度与芈氏度的转换公式为:摄氏度 = 5/9.0*(华氏度-32) 3:根据你的理解,说明一下“==”和“=”的区别。 4:根据运算符的功能,我们把运算符分成哪几类? 5:写出程序的输出结果:
public static void main(String args[]){
int a=5+4; int b=a*2; int c=b/4; int d=b-c; int e=-d; int f=e%4; double g=18.4; double h=g%4; int i=3;int j=i++; int k=++i; System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ }
7:写出程序的输出结果:public static void main(String[] args){ int n=3, m=4;
System.out.println();
System.out.println(\
System.out.println(\ System.out.println(\ System.out.println(\
8:写出程序的输出结果:public static void main(String[] args){ int x=1,y=12; x+=2; y-=3;
System.out.println();
System.out.println(\ y/=x;
System.out.println(\ y++; y%=x;
System.out.println(\ }
JavaSE初级—第五单元:程序结构设计顺序结构,选择结构
6
1:写一个方法,此方法实现判断一个整数,属于哪个范围:大于0;小于0;等于0 2:写一个方法,此方法实现判断一个整数是偶数还是奇数。
3:写一个方法,此方法实现对三个整数进行排序,输出时按照从小到大的顺序输出。 4:写一个方法,此方法实现判断这个数是否是水仙花数。
333
水仙花数的条件:三位数为abc,则满足:a+b+c=abc 5:写一个方法,此方法实现判断某一年份是否是闰年。
6:写一个方法,此方法实现判断一个4位整数,统计出此整数里面包含多少个偶数,多少个奇数
7: 开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适。
8: 判断此考试成绩为什么等级。
90-100之间为优秀,80-89之间为优良,70-79之间为良好, 60-69之间为及格,60分以下为不及格。
9: 写一个方法,此方法实现格式化时间,此方法有三个整形参数,输出类似09:03:12的时间格式,中间需要判断输入的数字是否符合实际情况,比如小时数就不能大于24,如果大于24就提示输入错误。 10: 有3个整数,给出提示信息: 能否创建三角形;
如果能构建三角形,提示是直角三角形还是等边三角形等腰三角形还是普通三角形; 最后输出三角形面积;
11:随机输入一个字母,如果是大写字母就转化为小写字母输出;如果是小写字母就转化为大写字母输出。
12:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下 的用C表示
13:使用条件结构实现:岳灵珊同学参加到java的学习,他父亲岳不群和母亲宁中则承诺:
编写程序达成小明的心愿。如果岳灵珊的考试成绩==1OO分,父亲给她买辆车 如果岳灵珊的考试成绩>=90分,母亲(宁中则)给她买台笔记本电脑 如果岳灵珊的考试成绩>=60分,母亲给她买部手机 如果岳灵珊的考试成绩<60分,没有礼物
14:使用条件结构实现,如果用户名等于字符‘青’,密码等于数字‘123’,就输出“欢迎你,青”,否则就输出“对不起,你不是青”。
提示:先声明两个变量,一个是char型的,用来存放用户名,一个是int型的,用来存放密码。
2
15:求ax+bx+c=0方程的根。 a,b,c分别为函数的参数,
222
如果:b-4ac>0,则有两个解;b-4ac=0,则有一个解;b-4ac<0,则无解;
2
已知:x1=(-b+sqrt(b-4ac))/2a
2
X2=(-b-sqrt(b-4ac))/2a
JavaSE初级—第六单元:循环结构
7
1:求10以内的偶数的和。
2:求100以内的所有素数(只能被自己和1整除;)
3:随机产生一个1-100之间的整数,看能几次猜中。要求:猜的次数不能超过7次,每次猜完之后都要提示“大了”或者“小了”。
4:写一个方法,此方法实现判断某年某月某日是这一年的第几天?(年月日通过方法的参数提供)
5:写一个方法,此方法实现输出100-999之间的水仙花数。
6:输出小写的a-z以及大写的在Z—A
7:求出1-3+5-7+9-?..101的和
8:求出1-1/2+1/3-1/4?..1/100的和
9:输出20-80之间能被3整除的整数,每5个一行
10:打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
11:定义两个整数a、b,a、b的取值范围在0-9之间,给出所有符合a+b=12的组合。
12:A、B、C、D分别为0——9之间的整数,求出满足AB+CD=DA条件的数。
例如:90+09=99
13:随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么
14:输出九九乘法表
15:使用java实现输出如下图形。
8
JavaSE初级—第七单元:循环结构
1:实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。
2:输出1-100之间的不能被5整除的数,每5个一行。
3:输出斐波那契额数列数列的前20项
4:输出一个整数的二进制数、八进制数、十六进制数。
5:随机产生一个字母,如果是大写字母则输出“yes”,否则输出“no”
6:随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则怎输出“其他字符”;
7:判断一个月份属于一年中的那个季节。(春夏秋冬)
8:年月日分别为自定义函数的参数,判断是否为正确的日期,并求出该日期的下一天的年份月份和日期。
9:求100到1000之间的所有能被5和6整除的整数,每行显示5个
10:求和:1/3+3/5+5/7+7/9+???..+97/99
11:在控制台上打印出今年的日历。
12:输出100以内的所有素数,每行显示5个;并求和。
13:山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。 提示:
(1) 用整型变量water表示水缸里的水“int water = 15;”。 (2) 用整型变量l表示小和尚下山挑水的次数“int l = 0;”。 (3) 分析循环条件(水少于50升),循环操作(水增加5升,挑水次数增加1)。 (4) 套用while循环(或do-while循环)写出代码。
14:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现) 提示:采用逆向思维分析问题。
9
JavaSE初级—第八单元:数组
1:对10个整数进行按照从小到大的顺序排序
2:求一个3*3矩阵对角线元素之和
<提示>程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
3:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 <提示>程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数, 依次后移一个位置。
4:将一个数组逆序输出。
<提示>程序分析:用第一个与最后一个交换。
5:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
6:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
7:定义一个4行4列的二维数组,逐个从键盘输入值,然后将第1行和第4行的数据进行交换,将第2行和第3行的数据进行交换
8:定义一个3行4列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0
9:定义一个3行4列的二维数组,逐个从键盘输入值,将左下三角的值清0
10:定义一个4行4列的二维数组,逐个从键盘输入值,将对角线的值清0
11:定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;
12:有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中
10
JavaSE初级—第九单元: 方法的结构以及调用
1:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”,既为3的倍数又为5的倍数则替换为单词“FlipFlop”。 2:生成13位条形码
Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。 例如:690123456789 计算其校验码的过程为:
@前十二位的奇数位和6+0+2+4+6+8=26 @前十二位的偶数位和9+1+3+5+7+9=34 @将奇数和与偶数和的三倍相加26+34*3=128 @取结果的个位数:128的个位数为8 @用10减去这个个位数10-8=2 所以校验码为2
(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0) 实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。 例:输入:692223361219输出:6922233612192 3:求两个整数的最大公约数和最小公倍数
4:从键盘上输入一个 3*4 的整型数组,求出其中的最大值和最小值,并显示出 5:用数组求出斐波那契数列的前20项值
6:有10个数字要求分别用选择法和冒泡法从大到小输出
7:给100元整钱,现在有10元,5元,1元的零钱,求出一共有多少种组合,找出最佳组合(钱张数最少)
8:输出n行n列的空心菱形及(要求使用嵌套循环),当n=5时,运行结果显示如下(20分):
* ****
**
** ***
9:设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
10:定义一个判断闰年的方法,在main方法中调用该方法判断输入的一个年份是否是闰年。
11
JavaSE初级—第十单元: 案例分析-ATM取款机功能分析菜单设计 JavaSE初级—第十一单元 面向对象的基本概念 1:写一个人的类
属性:名字,性别,年龄 方法:(1)自我介绍的方法(2)吃饭的方法 创建一个对象“张三” 2:写一个汽车类:
属性:品牌;车长;颜色;价格; 方法:跑的方法 创建五个对象:“捷达”,“宝马”,“劳斯莱斯”,“科鲁兹”,“迈锐宝” 3:写一个课程类:
属性:课程名;学时;任课老师; 创建五个对象:“c语言”,“java编程”,“php网络编程”,“c++”,“数据结构” 4: 0——————>X | |
| P(X,Y) | | Y
定义一个类,用于描述坐标点
(1) 具有计算当前点到原点距离的功能 (2) 求到任意一点(m,n)的距离
(3) 具有坐标点显示功能,显示格式(x,y) 3:定义一个圆类型
提供显示圆周长功能的方法 提供显示圆面积的方法
4:编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,定义一个方法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。
5:设计一个Dog类,有名字、颜色和年龄属性,定义构造方法初始化这些属性,定义输出方法show()显示其信息。 6:定义一个计算机类: 属性:品牌;价格;颜色; 方法:(1)编程的功能 (2)上网的功能 实例化两个对象:“lenovo”;“hasee”
8:编写一个类Student,代表学员,要求:
(1)具有属性:学号、姓名、年龄、性别、专业。
(2)具有方法:自我介绍,负责输出该学员的姓名、年龄、性别以及专业。
12
JavaSE初级—第十二单元 构造方法 1:写一个人的类
属性:名字,性别,年龄;提供无参的构造方法和一个有参的构造方法 方法:(1)自我介绍的方法(2)吃饭的方法 创建一个对象“张三”
2:写一个汽车类:
属性:品牌;车长;颜色;价格; 创建五个对象:“捷达”,“宝马”,“劳斯莱斯”,“科鲁兹”,“迈锐宝” 提供无参的构造方法和一个有参的构造方法
3:写一个课程类:
属性:课程名;学时;任课老师; 创建五个对象:“c语言”,“java编程”,“php网络编程”,“c++”,“数据结构” 提供无参的构造方法和一个有参的构造方法
4: 0——————>X | |
| P(X,Y) | | Y
定义一个类,用于描述坐标点
(1) 具有计算当前点到原点距离的功能 (2) 求到任意一点(m,n)的距离 (3) 求到任意一点(Point p)的距离
(4)具有坐标点显示功能,显示格式(x,y) (5)提供无参的构造方法和一个有参的构造方法
5:定义一个圆类型
提供显示圆周长功能的方法 提供显示圆面积的方法
提供无参的构造方法和一个有参的构造方法
6:编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,定义一个方法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。 提供无参的构造方法和一个有参的构造方法
7:设计一个Dog类,有名字、颜色和年龄属性,定义构造方法初始化这些属性,定义输出方法show()显示其信息。
提供无参的构造方法和一个有参的构造方法
13
JavaSE初级—第十四单元 JAVA特性之封装 1:要求设计一个学生类。
1:属性有:姓名、java成绩、android成绩、mysql成绩 2:所有属性要求使用private修饰。 3:为每个属性设置setter和getter方法 4:添加有为全部属性赋值的构造方法 5:有输出一个完整学生信息的方法
6:要求可以求学生的总分、平均分、最高分、最低分。
2: 编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个类都有构造方法进行属性初识化和输出相关数据的方法;使用Test类中的main方法定义各类初始化数据后台打印相关数据
3:请通过代码封装,实现如下需求:
编写一个类Book,代表教材:
1)具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200
2)每个属性要求使用private修饰,并且为各属性设置赋值和取值方法 3)具有方法:detail,用来在控制台输出每本教材的名称和页数
4)编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确
4:通过继承实现员工工资核算打印功能。有员工类,普通员工类和部门经理类,普通员工工资=单日工资*天数*等级(1);部门经理工资=1000+单日工资*天数*等级(1.2)。
a) 员工属性(单日工资,工作天数,工资等级静态常量),员工方法(打印
工资)
b) 普遍员工及部门经理都是员工子类,需要重写打印工资方法。
定义并初始化普通员工对象,调用打印工资方法输入工资,定义并初始化部门经理对象,调用打印工资方法输入工资
5:编写一个类Book2,代表教材: 具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200
具有方法:Sdetail,用来在控制台输出每本教材的名称和页数 具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制
编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确
6: 编写一个类Book3,代表教材: 具有属性:名称(title)、页数(pageNum)、类型(type)
具有方法:detail,用来在控制台输出每本教材的名称、页数、类型 具有两个带参构造方法:第一个构造方法中,设置教材类型为“计算机”(固定),其余
14
属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定 编写测试类Book3Test进行测试:
分别以两种方式完成对两个Book3对象的初始化工作,并分别调用它们的detail方法,看看输出是否正确
7:根据上图写出“司机”类。(主要体现方法的重载)
8:编写一个类Student,代表学员,要求: (1)具有属性:姓名、年龄、性别、专业。
(2)具有方法:自我介绍,负责输出该学员的姓名、年龄、性别以及专业。
(3)具有两个带参构造方法:第一个构造方法中,设置学员的性别为男、专业为3g,其余属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定 编写测试类StudentTest进行测试,分别以两种方式完成对两个Student对象的初始化工作,并分别调用它们的自我介绍方法,看看输出是否正确。
15
JavaSE初级—第十五单元 JAVA的特性之继承 (一) 1:宠物类叫Pet(父类); 属性有name 和 age;
行为有吃 eat(); 喝 drink(); 叫声shout(); 子类 Cat 和 Dog
Cat继承 Pet类所有并且增加一个自己的特有方法climbTree() 爬树并且叫声是喵喵 Dog继承 Pet类所有并且增加一个自己的特有方法police() 警戒并且叫声是汪汪
2:父类:家用电器,属性有电流、电压;行为有开open(),关close() 子类:电视除以上还有方法:display();
洗衣机还有方法:wash();
电灯的特有方法如light(); 3:已有Bird类的定义如下: public class Bird {
protected staticintreferenceCount=0; public Bird(){referenceCount++;} protected void fly(){ }
static intgetReCount(){return referenceCount;} }
有类Nightingale的定义如下,请写出它的输出结果。 class Nightingale extends Bird { Nightingale( ) { referenceCount++;}
public static void main( String args[ ]){ System.out.println(\ Nightingale florence=new Nightingale( ); System.out.println(\florence.fly( ); } }
分析以上程序的输出结果是什么?为什么? 4:定义一个图形类和(子类)圆形类、矩形类
图形类:有求周长和求面积和显示图形信息的功能。 圆形类:包含圆心和半径,重写求周长和求面积的方法。 矩形类:包含长和宽,重写求周长和求面积的方法
5:写出this和super的用法。
16
6:写出static和final的用法
7:编写老师类
(1)要求有属性“姓名name”,“年龄age”,“职称post”,“基本工资salary”(10分) (2)设置4个静态常量:“部门department”值为“baway”“工资级别levela ,,levelb,levelc”初始值分别为1.1,1.2,1.3。(10分) (3)编写业务方法, introduce(),实现输出一个教师的信息。(10分) (4):编写教师类的三个子类:教授类、副教授类、讲师类。工资级别分别为:教授为1.3、副教授为1.2、讲师类1.1。在三个子类里面都重写父类的introduce()方法。 (5)定义并初始化一个老师对象,调用业务方法,实现对象基本信息的后台打印。(10分)
8:通过继承实现员工工资核算打印功能。 父类:员工类
子类:部门经理类、普通员工类
部门经理工资=1000+单日工资*天数*等级(1.2)。 普通员工工资=单日工资*天数*等级(1.0);
(1) 员工属性:姓名,单日工资,工作天数(10分) (2) 员工方法(打印工资)(10分)
(3)普遍员工及部门经理都是员工子类,需要重写打印工资方法。(20分)
(4)定义并初始化普通员工对象,调用打印工资方法输入工资,定义并初始化部门经理对象,调用打印工资方法输入工资(10分)
9:设计父类—员工类。子类:工人类,农民类,教师类,科学家类,服务生类。(10分) (1) 其中工人,农民,服务生只有基本工资。(10分) (2) 教师除基本工资外,还有课酬(元/天)。(10分) (3) 科学家除基本工资外,还有年终奖。(10分)
(4) 编写一个测试类,将各种类型的员工的全年工资打印出来。(10分) 10:
定义一个图形类Picture,再定义Picture的两个子类:圆形类Circle、矩形类Rect。(10分) 要求:
图像类:有求周长和求面积和显示图形信息的功能。(10分) 圆形类:包含圆心和半径,重写求周长和求面积的方法。(15分) 矩形类:包含长和宽,重写求周长和求面积的方法。(15分)
17
JavaSE初级—第十六单元 JAVA的特性之继承 (二)--Object类 1:为什么要重写toString()方法?
2:为什么要重写equals()方法?
3:定义平面内点的类Point,属性有横坐标和纵坐标。
(1) 每个属性都使用private修饰,为每个属性设置setter和getter方法。 (2) 设置无参的构造方法
(3) 设置有参的构造方法Point(int x,int y) (4) 设置有参的构造方法Point(Point p)
(5) 重写toString()方法,用于输出坐标点的信息 (6) 重写euqals()方法,用于对两个坐标点进行比较
4:定义一个person类, 属性如下: (1)身份证号,性别,姓名,年龄,户籍,出生日期(Data类型,需要引用java.uitl.Data) 功能:
(2)自我介绍:介绍格式:(toString) 身份证号+姓名+户籍
(3)提供对象比较equals方法,只要身份证号+姓名相同就认为对象相等
5:写出重载与重写的区别。
6:请写出java基本数据类型及对应的封装类型,并说明封装类的作用。
7:写出“==”和equals的区别。
8:创建一个汽车类(Car)
(1) 为其定义两个属性:颜色和型号。每个属性都使用private进行封装,为每个属性
设置set、get方法。(10分)
(2) 为该类创建两个构造方法。第一个为无参的构造方法。第二个为带参构造方法(10
分)
(3) 重写toString方法,通过toString输出汽车信息。(10分)
(4) 重写equals方法,如果汽车的颜色和型号相同就认为是同一辆车。(10分) (5) 实例化两个对象,输出两个对象的信息,比较两个对象是否是同一个对象。(10分)
18
9:编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。(20分) (1) 每个类都有构造方法进行属性初识化(10分) (2) 每个类都输出相关数据的toString方法(10分)
(3) 使用Test类中的main方法定义各类初始化数据后台打印相关数据(10分) 10:(1)编写一个人类Person,其中包含姓名、性别和年龄的属性,包含构造方法以及显示姓名、性别和年龄的方法。(10分)
(2)再编写一个学生类Student,它继承Person类,其中包含学号属性,包含构造方法以及显示学号的方法。(10分) (3)在Student类里面重写equals方法,只要是学号和姓名一致就认为是同一个学生。(20分)
(4)最后编写一个测试类,此类里面包含main()方法,在main()方法中定义两个学生s1和s2并给他们赋值,最后显示他们的学号、姓名、性别以及年龄,以及判断两个学生是否是同一个学生。(10分)
JavaSE初级—第十七单元 String类、StringBuffer类 、Math类、Date类
1:完成MathLib类,可以做加,减,乘,除等功能,其中加法不但可以做数字的加法,还可以做字符串的相加。
2:任意给定的一串字母,统计字符串里面的大写字母和小写字母的个数。 3:根据传入得路径,获取文件名。
例如:D:\\myfile\\hello.java取出hello.java 4:根据传入得路径,获取文件的类型名。 例如:D:\\myfile\\hello.java取出.java 5:String类和StringBuffer类的区别 6:求两个日期之间相隔的天数
写一个方法(例如:fun3(\),求输入的字符串2010-09-20 与 2010-09-21 之间相隔的天数
7:编写java程序,输入形式为: First Middle Last的人名,以Last,First .M的形式打印出来。其中.M是中间单词的首字母。例如输入“Willian Jefferson Clinton”,输出形式为:Clinton, Willian .J
8:编写java程序,随便输入两个单词,两个单词之间以空格隔开,输出时每个单词的首字母变为大写。如输入:“hello java”,输出为“Hello Java”
9:求出“hijavahehejavahejava”字符串里面包含几个“java字符串。”
10:输出字符串\里的大写字母数,小写英文字母数,非英文字母数
11:输入一句5个字的话,然后将它逆序输出。例如: 原数组:我爱你中国 逆序输出:国中你爱我
提示:先声明一个字符串数组,每个汉字作为字符串数组的一个元素,然后再从数组末尾开始循环输出。
12:利用随机数生成一个整数数组,数组中有10个元素,每个元素的值都在0-9之间,打
19
印该数组。
提示:使用Math.random()方法可以生成一个随机小数x(O JavaSE初级—第十八单元 JAVA内存存储方式 1:java对内存的划分分为几类? 2:堆和栈的区别? 3:写出8中基本数据类型的包装类。 20 JavaSE中级—第一单元:抽象类 1:抽象类和抽象方法之间的关系 定义抽象类和抽象方法的关键字是(abstract)。抽象类中(可以)(可以/不可以)有抽象方法,(可以)(可以/不可以)有普通方法(可以)(可以/不可以)有属性;一个类中定义了抽象方法,那这个类(必须)(必须/不必须)用abstract修饰,即抽象类。 2:定义一个抽象类Person,有name,age,sex三个属性,创建构造函数,给这三个属性赋值,重写打印描述信息方法,打印三个属性值;这个类中有两个抽象方法work和hello;定义两个子类Teacher,Student;教师的work实现是:教书育人,hello实现是:“同学好”;学生的work实现是:认真学习,hello实现是“老师好”。 3:定义Shape抽象类,包含私有属性color,创建构造器为color赋值;包含计算周长的方法celPerimeter();定义子类Triangle,包含三边;定义子类Circle,包含半径radius;子类分别实现父类的计算周长功能。 4:定义员工类Employee,包含姓名、工号和工资,包含计算奖金方法bonus,普通员工和经理都是员工,计算奖金的方法为工资*奖金系数,普通员工的奖金系数为1.5(常量),经理为2(常量),分别实现bonus方法,创建对象测试。 5:定义一个交通工具类,并定义抽象方法,说明交通工具可以移动。继承交通工具而产生汽车、飞机、轮船类,并实现其移动方法。 6:按要求实现下列问题: 1)封装一个西游记人物类Person:包含私有属性:姓名(name)、身高(height)、武器(weapon)、种族(race),并提供访问器(get方法)和修改器(set方法) 2) 在测试类中实例化三个对象:tangseng(唐僧)、sunwukong(孙悟空)、baigujing (白骨精),分别设置他们的种族为:人族、仙族、妖族 3) 在打印对象时,按照例如:“姓名:孙悟空;种族:仙族”的格式在控制台输出 信息。 4) 提供一个技能方法void skill(),这个方法根据当前对象name属性判断技能,如 果是孙悟空,就打印“七十二变”,如果是唐僧,就打印“紧箍咒”,如果是白骨精,就打印“九阴白骨爪”,在测试类中调用这个方法。 5) 重写equals方法进行判断,如果种族属性是人族或者仙族,则返回true,如果是 妖族,则返回false,在测试类中对孙悟空和唐僧进行比较,打印结果,对唐僧和白骨金进行比较,并打印结果。 7:按要求实现下列问题: 实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty 和Staff。 具体要求如下: 1) Person类中的属性有:姓名name(String类型),地址address(String类 型), 电话号码telphone(String类型)和电子邮件地址email(String类型); 2) Employee类中的属性有:办公室office(String类型),工资wage(double 21 类型),受雇日期hiredate(String类型); 3) Faculty类中的属性有:学位degree(String类型),级别level(String 类型); 4) Staff类中的属性有:职务称号duty(String类型)。 5) 现有对象Person p1 =new Faculty()和Person p2 =new Staff (),请分别为 p1的属性赋值“本科”和Staff类的duty赋值“职员” JavaSE中级—第二单元:接口 1:叙述接口的特点和作用 2:选择题 1)下面关于接口的说法中不正确的是()。 A.接口中所有的方法都是抽象的 B.接口中所有的方法都是public访问权限 C.子接口继承父接口所用的关键字是implements D.接口是Java中的特殊类,包含常量和抽象方法 2)Java语言接口间的继承关系是()。 A.单继承 B.多重继承 C.不能继承 D.不一定 3)一个类实现接口的情况是()。 A.一次可以实现多个接口 B.一次只能实现一个接口 C.不能实现接口 D.不一定 3:填空题 1)是声明接口的关键字,可以把它看成一个特殊类。接口中的数据成员默认的修饰符是,接口中的成员方法默认的修饰符是。 2)如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须该接口的所有抽象方法;如果实现某接口的类是abstract的抽象类,则它可以该接口所有的方法。但是对于这个抽象类任何一个非抽象的子类而言,它们父类所实现的接口中的所有抽象方法以及自身所实现接口中的抽象方法都必须有实在的。 4:编一个程序,包含以下文件。 (1)Shape.java文件,在该文件中定义接口类Shape,该接口在shape包中。 属性:PI。 接口:求面积的方法area()。 (2)Circle.java文件,在该文件中定义圆类Circle,该类在circle包中,实现Shape接口类。 属性:圆半径radius。 方法:构造方法;实现求面积方法area();求周长方法perimeter()。 22 (3)Cylinder.java文件,在该文件中定义圆柱体类Cylinder,该类在cylinder包中, 继承圆类。 属性:圆柱体高度height。 方法:构造方法;求表面积方法area();求体积方法volume()。 (4)X5_3_6.java文件,在该文件中定义主类X5_3_6,该类在默认包中,其中包含主方法main(),在主方法中创建两个圆类对象cir1和cir2,具体尺寸自己确定,并显示圆的面积和周长;再创建两个圆柱体类的对象cy1和cy2,具体尺寸自己确定,然后分别显示圆柱体cy1和cy2的底圆的面积和周长以及它们各自的体积和表面积。 【编程分析】本题主要考察接口、包、继承、封装等问题。 5:鸭嘴兽属于脊椎动物中的哺乳动物,太阳花属于植物中的种子植物,而鸭嘴兽和太阳花都属于生物。 完成如下要求(共50分,每小题10分): 1)设计一系列的接口来表示这些规范:生物?动物?脊椎动物?哺乳动物;生物?植物?种子植物,并且按照箭头要求来继承; 2)生物都有呼吸方式,只有一个方法声明:void respirations();设计两个类,分别是鸭嘴兽和太阳花,分别实现生物接口的respirations方法,执行方法可以分别输出:“鸭嘴兽是动物,需要呼吸氧气”,“太阳花是植物,可以吸收二氧化碳,呼出氧气”; 3)动物接口拥有方法声明:void run(),鸭嘴兽类可以实现方法,输出信息:“鸭嘴兽只有两只脚,它可以用两只脚奔跑” 4)植物接口都有繁殖方法声明 void reproduction(),太阳花在实现reproduction方法时输出信息“太阳花可以用种子繁殖,也可以用枝条繁殖” 5) 声明一个Test类作为测试,执行上述声明的所有方法; 6:请使用接口编码实现如下需求: 乐器(Instrument)分为:钢琴(Piano)、小提琴(Violin) 各种乐器的弹奏( play )方法各不相同。 编写一个测试类InstrumentTest,要求: 编写方法testPlay,对各种乐器进行弹奏测试。要依据乐器的不同,进行相应的弹奏。 在main方法中创建不同的乐器对象,通过testPlay的弹奏测试方法进行测试。 7:按要求实现下列问题: 1) 动物类Animal包含了抽象方法 abstract void shout(); 2) Cat类继承了Animal,并实现方法shout,打印“猫会喵喵叫” 3) Dog类继承了Animal,并实现方法shout,打印“狗会汪汪叫” 4) 在测试类中实例化对象Animal a1 =new Cat(),并调用a1的shout方法 5) 在测试类中实例化对象Animal a2 =new Dog(),并调用a2的shout方法 23 JavaSE中级—第三单元:简单工厂模式 1:接口和抽象类的异同点 2:叙述工厂模式的设计理念 3:有一个交通工具接口类Vehicles,有work接口,有Horse类和Boat类分别实现Vehicles,创建交通工具工厂类,有两个方法分别获得交通工具Horse和Boat;有Person类,有name和Vehicles属性,在构造器中赋值,实例化“唐僧”,一般情况下用Horse作为交通工具,遇到大河时用Boat作为交通工具。 4:有一个农场公司,专门向市场销售各类水果,主要包括下列水果:葡萄 Grape,草莓 Stuawberry,苹果 Apple;有一个Fruit接口,包含grow生长,harvest收获和plant方法,葡萄、草莓和苹果都实现了这个接口;有一个农场园丁类FruitGardener,具有采摘水果的方法getFruit(String fruitName);这时有人来果园玩,和园丁说介绍一下你的各种水果(创建一个People类进行测试,分别通过农场园丁类得到各种水果)。 5:有一个显示器接口Graphoscope,具有display方法,有两个类:台式显示器和液晶显示器都实现显示器接口,有一个显示器生产厂家能够生产这两种显示器;有Computer类,具有Graphoscope属性,生产两台电脑,分别配置台式显示器和液晶显示器。 JavaSE中级—第四单元:内部类 1:填空题 1)内部类(可以/不可以)了解外部类 2)静态内部类用修饰。 3)外部类(可以/不可以)通过类名访问静态内部类里的静态成员(变量和方法) 4)外部类(可以/不可以)通过类名访问非静态内部类里的成员(变量和方法) 5)非静态内部类可以访问外部类的成员,也能访问外部类的成员 6)静态内部类可以访问外部类的成员,不能访问外部类的成员 7)非静态内部类(可以/不可以)用static修饰她的成员(变量和方法) 2:纠错体 已知有下面类的说明: PublicclassFirst { Privateinta; Staticintb = 5; PublicclassContents{ Publicintc; Staticintd; Publicvoidf(){ System.out.println(a); System.out.println(b); } 24 } StaticclassTitles{ Publicinte; Staticintf; Publicvoidshow(){ System.out.println(a); System.out.println(b); } } PublicvoidgetInnerClassDate(){ System.out.println(c);// System.out.println(d);// System.out.println(e);// System.out.println(f);// } Publicstaticvoidmain(String[] args) { } } 1)这个类定义有问题吗?如果有请找出。 2)在main方法中如何获得两个内部类的实例对象?并且访问内部类的方法,请写出代码 3:有一个Car类,有属性temperature(温度),车内有Air(空调),有吹风的功能flow,Air会监视车内的温度,如果温度超过40度则吹冷气。如果温度低于0度则吹暖气,如果在这之间则关掉空调。实例化具有不同温度的Car对象,调用空调的flow方法,测试空调吹的风是否正确 4:编一个类A,在类中定义局部类B,B中有一个常量name,有一个方法show()打印常量name。进行测试 5:设计公司类(Lenovo),有一个接口类Works,里面有接口work(),下面有2个部门(开发部和销售部),使用内部类分别实现开发部和销售部的工作。 6:计算器具有work方法,功能是运算,时钟同样具有work方法,功能是计时,有一个手机类Cellphone,同时需要拥有运算和计时功能,通过内部类实现多继承效果。 7:有一个铃声接口类Bell,有一个接口sound,有一个手机类Cellphone,具有闹钟功能alarmclock,参数是Bell类型,测试手机类的闹钟功能,通过匿名内部类作为参数,打印:懒猪起床了。 25 JavaSE中级—第五单元:枚举类 1:创建月份枚举类,枚举值包含十二个月份,月份要求用英文单词 2:创建星期枚举类,有7个枚举值,包含计划属性plan,为此属性赋值(不要使用构造器)。 3:把第二题的赋值修改为通过构造器赋值。 4:创建一个Color枚举类, 1)有 RED,BLUE,BLACK,YELLOW,GREEN这个五个枚举值; 2)Color有三个属性redValue,greenValue,blueValue, 3)创建构造方法,参数包括这三个属性, 4)每个枚举值都要给这三个属性赋值,三个属性对应的值分别是red:255,0,0 blue:0,0,255 black:0,0,0 yellow:255,255,0 green:0,255,0 5)重写toString方法显示三属性的值 6)在Color中添加抽象方法meaning,不同的枚举类的meaning代表的意思各不相同 5:有一个接口类Works,有个反射颜色的接口ReflectColor,用第4题的Color枚举类实现这个接口类,每个枚举值反射自己颜色的光 JavaSE中级—第六单元:集合(一) 1:叙述集合的概念和作用 2:定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素,添加另一个集合,删除元素,判断集合中是否包含一个元素,判断是否为空,清除集合,返回集合里元素的个数等常用操作。 3:创建Set接口的实现类,添加10个以上的元素,通过Iterator遍历此集合元素。 4:创建Set接口的实现类,添加10个以上的元素,通过foreach遍历此集合元素。 5:创建Set接口的实现类,添加10个以上的元素,要求能够排序。 6:创建Car类,包含name,price属性,构造器等方法,创建测试类,在main方法中创建Set接口的实现类,添加5个以上的Car对象,遍历集合元素,验证重复元素是否过滤了;如果没有过滤,实现过滤功能;把每个小车的price降10000元,再遍历,查看price是否已改变 26 JavaSE中级—第七单元:集合(二) 1:定义一个Collection接口类型的变量,引用一个List集合的实现类,实现添加单个元素,添加另一个集合,删除元素,判断集合中是否包含一个元素,判断是否为空,清除集合,返回集合里元素的个数等常用操作。 2:创建ArrayList实例化对象,添加10个以上的元素,在2号位插入一个元素,获得5号位元素,删除6号位元素,修改7号位的元素; 3:通过四种方法遍历2题中的集合 4:叙述ArrayList和Vector实现类的异同 5:创建LinkedList实例化对象,练习具有队列特点的方法 6:按要求实现下列问题: 1)封装一个新闻类,包含标题和内容属性,提供get、set方法,重写toString方法,打印对象时只打印标题;(10分) 2)只提供一个带参数的构造器,实例化对象时,只初始化标题;并且实例化两个对象: 新闻一:中国多地遭雾霾笼罩空气质量再成热议话题 新闻二:春节临近北京“卖房热” 3)将新闻对象添加到ArrayList集合中,并且使用ListIterator倒序遍历; 4)在遍历集合过程中,对新闻标题进行处理,超过15字的只保留前14个,然后在后边加“?” 5)在控制台打印遍历出经过处理的新闻标题; JavaSE中级—第八单元:集合(三) 1:定义一个Map接口类型的变量,引用一个实现类,添加键值对,判断集合中是否包含某一key值,通过某一key值得到value值,通过某一key删除键值对,把另一个map集合添加到此map集合,判断是否为空,清除集合,返回集合里元素的个数等常用操作。 2:叙述HashMap和Hashtable的异同 3:通过两种方法遍历1题中的map集合 4:使用Map接口的实现类完成员工工资(姓名--工资)的摸拟: 1)添加几条信息 2)列出所有的员工姓名 3列出所有员工姓名及其工资 4)删除名叫“Tom”的员工信息 5)输出Jack的工资,并将其工资加1000元(通过取值实现) 6)将所有工资低于1000元的员工的工资上涨20%(通过取值实现) 27 5:创建有序的map集合的实例化对象,添加元素,查看排序结果 6:叙述HashSet和HashMap的性能选择 7:封装一个新闻类,包含标题、作者、新闻内容和发布时间,新闻标题如下: 新闻一:中国多地遭雾霾笼罩空气质量再成热议话题 新闻二:民进党台北举行“火大游行” 新闻三:春节临近北京“卖房热” 新闻四:春节临近北京“卖房热” 完成如下要求(共50分,每小题10分): 1)完成对新闻类的设计,要求在初始化新闻类对象时 ,通过构造传参的形式对新闻标题赋值,并要求实例化四个对象,标题内容如题。 2)要求打印新闻对象时,直接打印新闻标题; 3)要求使用equals方法比较新闻时,只要标题相同,就认为是同一新闻,请输出新闻一与新闻二的比较结果,新闻三与新闻四的比较结果。 4)将新闻对象存入HashSet集合中,并且遍历集合,打印新闻类对象; 5)打印集合中新闻数量。 按要求完成下列任务: 8:使用HashMap类实例化一个Map类型的对象m1,键(String类型)和值(int型)分别用于存储员工的姓名和工资,存入数据如下: 张三——800元;李四——1500元;王五——3000元; 1)将张三的工资更改为2600元 2)为所有员工工资加薪100元; 3)遍历集合中所有的员工 4)遍历集合中所有的工资 JavaSE中级—第九单元:集合(四) 1:创建一个List集合的对象,添加几个数字,反转对象中元素的顺序;根据元素的自然顺序排序; 2:创建一个List集合的对象,添加几个字符串,反转对象中元素的顺序;根据元素的自然顺序排序; 28 3:创建一个List集合的对象,添加几条数据,将1号位和2号位交换;获得最大值,最小值, 4:分别创建HashSet,ArrayList和HashMap的实例化对象,通过这些实例化对象,分别创建对应的同步对象 5:叙述主要集合实现类的遍历方法 6:按要求完成如下操作:每小题10分,共50分。(Collections) 1) 生成10个随机数,值在100到200之间; 2) 将这十个数存入HashSet集合中(有可能集合的长度小于10)。 3) 将这个HashSet集合转换成ArrayList集合 4) 重新为ArrayList集合排序,按照从小到大的顺序; 5) 使用foreach遍历集合; 7: 1 )封装一个汽车类,包含String name、int speed属性,在测试类中实例化三个对象:c1,c2,c3,分别设置name为:“奥拓”,“宝马”,“奔驰”,速度分别设置为:100,200,300 2 )使用Map集合对象m1将这三个汽车类对象保存成key,然后将int型的汽车价钱作为值保存在m1的value中,上述三款汽车分别对应的价钱是10000,500000,2000000 3 )遍历m1的键,打印name属性 4 )通过合适的方法,求出m1中“宝马”的价格,并打印结果; 5 )经过折旧,所有汽车都降价到原来的80%,请打印降价后“宝马”的价格 8: 1 ) 要求集合对象c1中,只能添加字符串形式的单个元素,元素可以重复,在测试类中为c1集合添加字符串“这是一个可以重复的集合”三遍,然后遍历打印结果。 2 )要求集合对象c2中只能添加整型数值,并且不可重复,按自然顺序排序。要求遍历集合对象,打印添加进1,2,3,4,5五个数字的c2集合 3 )要求创建一个合适的Map集合对象m1,它的键和值都只能是字符串,并且值可以是null,像map集合中添加三组字符串,其中一个只有键,值是空,遍历这个集合对象的键,并打印键。 4)想办法将m1中所有值为null都替换成一个字符串”这里是空值” 5)遍历m1的所有值。 29 JavaSE中级—第十单元:泛型 1:开发一个泛型Apple类,要求有一个重量属性weight在测试类中实例化不同的泛型对象,要求对象a1的这一属性是String类型,对象a2的这一属性是Integer型,a3的这一属性是Double型。分别为a1,a2,a3的重量属性赋值为:”500克”,500,500.0,在测试类中通过对象调用访问器得到属性值并输出。另外思考,为什么a2和a3的属性需要是Integer和Double而不是int和double? 2:封装一个新闻类News,包含新闻标题,新闻作者,新闻内容,新闻类型三个属性,提供必要的访问器和修改器方法,重写toString方法,要求打印对象时输出格式为“标题;类型;作者”,要求只要新闻标题相同就判断为同一条新闻。在测试类中创建一个只能容纳该类对象的ArrayList集合,添加三条新闻。 遍历集合,打印新闻标题,将新闻标题截取字符串到10个汉字的长度。 3、按要求完成下列任务: 1)使用HashMap类实例化一个Map类型的对象m1,键(String类型)和值(int型)分别用于存储员工的姓名和工资,存入数据如下: 张三——800元;李四——1500元;王五——3000元; 2) 将张三的工资更改为2600元 3) 为所有员工工资加薪100元; 4) 遍历集合中所有的员工 5) 遍历集合中所有的工资 JavaSE中级—第十一单元:异常处理(一) 1:请仔细阅读下列测试代码,请问如何处理才能使程序正常输出“这是个异常,不是错误”,并且不会报告任何错误或者异常信息? public class Test{ public static void main(String[] args) { int[] arr ={1,1,1,1}; for(int i = 0 ; i < 5;i++){ System.out.println(arr[i]); } System.out.println(\这是个异常,不是错误\ } } 30 2:请仔细阅读下列测试代码,请问如何处理才能使程序正常输出“请告诉我这个异常是什么?”,并且打印错误或者异常信息? public class Test { public static void main(String[] args) { ArrayList al = new ArrayList(); al.add(\ al.add(\ al.add(\ al.add(\ al.add(5); for(Object o:al){ String s =(String)o; System.out.println(s); } System.out.println(\请告诉我这个异常是什么?\ } } 3:请问下面程序的执行结果是什么? public class Test { public static void main(String[] args) { String s=\这是个美丽的错误!\ for(int i = 0 ; i < 10;i++){ System.out.println(s.charAt(i)); } System.out.println(\请问这个程序会打印什么信息\ } } 4:请编写程序举例抛出一个空指针异常 5:请编写程序举例抛出一个类型转换异常 6:请编写程序举例抛出一个数组索引越界异常 7:请编写程序举例抛出一个索引越界异常 8:请编写程序举例抛出一个字符串索引越界异常 31 JavaSE中级—第十二单元:异常处理(二) 1:请编写程序举例说明,在数组索引越界异常中,如果只适用try finally,捕获到的异常不会被处理,程序仍然中断。 2:请创建一个遍历集合的方法。 3:public int m(){ try { return 1; }finally{ return 0; } } 当调用上述方法m()时返回值是多少? 4:下面的代码合法吗? try { ... } finally { ... } 5:下面的代码可以捕获何种异常?使用这种异常处理器有什么问题? catch (Exception e) { ... } 6:下面的处理器可以捕获什么异常? } catch (Exception e) { ... } catch (ArithmeticException a) { ... } 这个异常处理器中有错误吗?此代码能否被编译? JavaSE中级—第十三单元:Swing和AWT编程 1:请编写程序使用AWT组件生成窗口,点击关闭按钮可以退出程序; 2:请编写程序窗口,大小为600*500,底色为橘黄色,设置布局为流式布局,添加三个按钮,分别设置为“红色”,“绿色”,“蓝色”,要求完成任务,点击按钮时,背景色分别显示为按钮文本描述的颜色。 3:请在同一截面显示Swing和AWT的按钮组件,尝试说明它们有什么不同。 4:使用AWT组件创建一个模拟qq登陆界面:需要使用两个文本框,一个登陆按钮,一个注册按钮; 5:创建一个界面,大小为:800*600; 32 分别有三个按钮,大小设置为两个200*80,一个200*200 要求:点击红色,测试区显示红色,点击蓝色,测试区显示蓝色; 效果如图: JavaSE中级—第十四单元:AWT常用组件 1:使用Swing组件创建一个界面,要求设置背景色为绿色,标题为“我的swing窗口” 2:使用swing组件模拟计算器界面; 3:使用Swing和AWT中的合适组件模拟简单的qq聊天窗口; 4:请测试说明JFrame的默认布局是什么 5:请测试说明JPanel的默认布局是什么 JavaSE中级—第十五单元:AWT事件处理 1:按照要求完成下面操作:(共50分) 33 1)创建一个JFrame界面:并进行如下设置:(10分) 大小为600*450, 打开时默认距离显示器窗口左上角坐标为(200,100) 设置默认布局为null 2)添加三个按钮;(10分) 设置大小:120*60; 设置文本:“按钮1”,“按钮2”,“按钮3” 设置位置为:相对于窗口位置左上角(0,0)(0,100)(0,200) 3)设置按钮1的ActionListener事件,要求点击按钮时,按钮文本变成“你点到我了!”(10分) 4)设置按钮二点击事件:点击后改变按钮背景色;(10分) 5)设置按钮三键盘事件,敲击“A”时,按钮向右平移100个像素。 2:设置界面应用,要求如下(共50分) 1)使用JFrame对象,设置界面大小为:800*600, 使用BorderLayout布局进行设置;(10分) 2)向窗口中添加五个按钮,分别标记文本:东、西、南、北、中;(10分) 3)添加ActionListener事件监听,当点击“东”时,按钮东的背景变成绿色(10分) 4)当点击西时,按钮“中”的文本变为:你点击的是“西”(10分) 5)设置鼠标滑过按钮“中”时,文字变为“鼠标路过”,当鼠标划出按钮区域时,文本变回“中”(10分) 3:按要求完成下列操作:每一步10分,一共50分 1)创建一个Frame界面,设置大小500*400,设置标题“我的窗口” 2)为界面设置背景色为绿色 3)添加一个按钮“确定”,设置位置为窗口的左上角,大小为200*80 4)设置鼠标事件,点击按钮时,背景色变为橘黄色 5)设置窗口关闭监听事件,在点击红色叉号时,窗口关闭,系统退出。 4:设置一个JFrame界面,完成如下要求: 1)使用GridLayout布局,组件水平间距为20像素,垂直间距为10像素; 2)设置窗口大小为600*400,设置背景色为橘黄色; 3)添加6个按钮,按钮文本为“1”到“6” 4)添加ActionListener监听,点击按钮时,在控制台输出数字 5)添加键盘事件,按“Q”(请注意是大写)时,窗口退出。 5:创建一个JFrame界面。完成如下功能 1)设置大小为600*400,设置布局为null(10分) 2)添加按钮,设置大小为50*50,初始位置为(10分) 3)添加监听事件,鼠标滑过按钮时,按钮移动位置;(10分) 4)设置随机数x,y,使按钮在窗口范围内随机移动(10分) 5)设置鼠标事件,如果随机位置正好在鼠标下放,则将按钮背景色变为绿色。(10分) JavaSE中级—第十六、十七单元:数据库复习和JDBC 1:编写超市库存查询系统 创建数据库:store;创建库存表:tblStorage,表创建完成后插入3条数据 34 表名 主键 sid sname sprice scount sdate tblStorage Int Varchar Float Int Date 50 4 作用 ID 否 否 是 是 否 库存表 主键,自增 商品名 单价 数量 生产日期 1)创建Storage类,属性对应tblStorage表的字段,并封装其属性 2)编写数据访问类:StorageDao,编写方法getCon()用来连接数据库 3)在StorageDao类中编写方法getStores()要求按生产日期的方法,查询完成后在控制台打印显示。 2:使用JDBC实现学生信息修改的功能 1) 创建数据库school 2) 在数据库school下创建表student(id,name,age),并插入3条数据。 3) 学生信息要求抽象出一个类Student,并封装其属性 4) 完成修改某个学生信息功能 3:使用JDBC实现学生信息查询的功能 1)在mysql里面创建数据库school; 2)在school库中创建数据表student,此表的字段有sid(学号)sname(姓名),sage(年龄)三个字段。 3)利用jdbc向student里面添加5条数据,然后在eclipse里面把此表的内容调出显示在控制台上。 4:根据提供的程序TestA,完善学生信息修改的功能。 1) 调试程序能连接到数据库 2) 完成修改功能 3) 完成查询功能 5:利用JDBC实现向数据库插入数据 1) 新建数据库TEST1,新建表score(id,coursename[课程名称],score[成绩]) 2) 创建Score类,属性根据数据表的属性定义,并封转其属性 3) 定义getCon()方法得到JDBC的连接对象 4) 利用JDBC插入10条数据(自定) 6:Mysql数据库操作 35 1) 创建数据库school库。 2) 创建student表,其中Id为主键并且自动增长 3) 创建Score表,Id为主键并且自动增长,Stu_id为外键,引用student表中的主 键(10分) 4) 分别向两个表中插入以上数据 5) 查看成绩单中所有学生每门课程的总分,平均分; 7:Mysql数据库 1) 创建数据库school库,创建student表,其中Id为主键并且自动增长 2) 创建Score表,Id为主键并且自动增长,Stu_id为外键,引用student表中的主 键 3) 分别向两个表中插入以上数据 4) 查找课程为“javase初级”的考生姓名、出生日期、及成绩; 8:数据库题 36 1) 创建数据库school库,创建student表,其中Id为主键并且自动增长 2) 创建Score表,Id为主键并且自动增长,Stu_id为外键,引用student表中的主 键 3) 分别向两个表中插入以上数据 4) 查找8月份没有参加考试的学生姓名。 9:利用JDBC实现ATM机 表account,主键id自增,账号accountno,用户姓名username,用户密码userpass,余额money 1)采用合适的数据类型保存字段信息 2)在表中插入5条记录 3)存钱:在第一个账号存入1000 4)取钱:从第三个账号中取1000,如果余额不足,则不能取 5)查询:输入第四个记录对应的卡号和密码,查询其中的余额 6)修改密码:修改第五个记录的密码 7)转账:从第二个账号中取2000,存入第三个账号 8)注意:要使用JDBC,操作时要先验证卡号和密码是否和数据库中的一致。 37 JavaSE高级—第一单元:Java I/O---文件的操作 1:列出d:\\ch9目录下Java源文件的名字及其大小,并删除其中的一个Java源文件? 2:用Runtime对象打开Windows平台上的绘图程序和记事本程序? 3:列出当前目录下全部java文件的名称 4:使用File类下的常用方法获取某些文件的信息。 5: 操作D盘下的my.txt文件 1) 判断my.txt文件是否存在 2) 若存在则删除;若不存在则创建 6:File类的作用是什么?它是一种流吗? 7:使用File类删除某个文件夹(例如D盘下的temp文件夹)下的所有文件和文件夹: 1) 判断temp文件夹下的文件类型,如果是文件则直接删除 2) 如果是文件夹则获取该文件夹下的子文件和文件夹 3) 使用递归的方式删除所有temp文件夹下的文件和文件夹 8:利用IO操作文件 1)利用代码在D盘下创建news文件夹。 2)利用代码在news文件夹下创建2个.docx文件,2个.java文件,2个.txt的文件(在控制台打印news文件夹下的.java文件 9:利用IO流操作文件 1)利用Java代码创建D:\\temp\\temp1\\temp2共3个文件夹 2)在temp文件夹下创建一个1.txt文件内容为hello,创建一个Hello.java文件3)内容为public static void main(String[] args){},在temp1文件夹下创建同样的两个文件 4)输出temp文件夹下包括其子文件夹下,所有的.java文件 10:利用IO流操作文件。 1) 利用java代码在D盘下创建一个mytemp文件夹 2) 显示D盘下所有的.Java文件,包括D盘的子文件夹下的.java文件 3) 把上述显示的文件都复制到mytemp文件夹中 11:列出D盘下的所有文件,子目录中的文件,子目录的子目录都要列出,依次类推,总之D盘下所有的文件都要输出(50分) 1) 在列出的时候判断是否子文件夹(10分) 2) 若不是子文件夹直接输出文件名(20分) 3) 若是子文件夹使用递归的形式继续输出子目录中的文件(20分) 38 JavaSE高级—第二单元:Java I/O 的分类以及使用(一) 1:先将“欢迎您来北京八维3G学院学习,高薪就业”写入到文件”hello.txt”中,再读取该文件中的内容。 2:如果准备读取一个文件的内容,应当使用FileInputStream流还是FileOutputStream流? 3:编写一个应用程序,将用户从键盘输入的10个整数存入文件,再顺序读出。 4:编写一个应用程序,要求将将一个LinkedList 5:BufferedReader流能直接指向一个文件对象吗? 6: 列出D盘下的所有文件,子目录中的文件,子目录的子目录都要列出,依次类推,总之D盘下所有的文件都要输出 JavaSE高级—第三单元:Java I/O 的分类以及使用(二) 1:编写程序向文本文件中写入自己的信息,格式为:姓名:XXX 性别:X 年龄:XX 班级:XXX,将该信息读出后显示的屏幕上后把文件删除。 2:用缓冲字节流实现文件复制的功能 1) 首先判断d盘是否存在a.txt文件。 2) 若不存在则创建a.txt文件 然后把a.txt文件复制成acopy.txt 3:通过Io流实现MP3文件创建和复印功能 1) 判断d:/歌曲.mp3文件是否存在 2) 若不存在则创建d:/歌曲.mp3文件 创建完成后复制到 e:/歌曲.mp3 4:用(字节流)读取一张图片,读进来之后再输出到另一个文件中。 5:(字符流)读取一个文本文件,每次都追加一个“好”,在文件结尾再追加“完毕”。 6:使用Java的输入、输出流将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并写入到另一个文件中。 JavaSE高级—第四单元:Java I/O 的分类以及使用(三) 39 1:使用RandomAccessFile流将一个文本文件倒置读出。 2:使用ObjectInputStream类和ObjectOutputStream类有哪些注意事项?。 3:用缓冲字符流读入一个文件中的内容,并把内容输出到一个新的文件中。 4:在数据库中建表student,字段(id,name,age)并插入几条数据,用jdbc读取所有数据后输出到D盘的一个文本文件当中 5:使用输入流读取试题文件,每次显示试题文件中的一道题目。读取到字符“*”时暂停读取,等待用户从键盘输入答案。用户做完全部题目后。程序给出用户的得分。 1) 试题内容如下: (1)北京奥运是什么时间开幕的? A.2008-08-08 B. 2008-08-01 C.2008-10-01 D. 2008-07-08 ******************** (2)下列哪个国家不属于亚洲? A.沙特 B.印度 C.巴西 D.越南 ******************** (3)下列哪个国家最爱足球? A.刚果 B.越南 C.老挝 D.巴西 ******************** (4)下列哪种动物属于猫科动物? A.鬣狗 B.犀牛 C.大象 D.狮子 ******************** 2)程序运行如下: (1)北京奥运是什么时间开幕的? A.2008-08-08 B. 2008-08-01 C.2008-10-01 D. 2008-07-08 输入选择的答案(A、B、C、D):A (2)下列哪个国家不属于亚洲? A.沙特 B.印度 C.巴西 D.越南 输入选择的答案(A、B、C、D): JavaSE高级—第五单元:多线程(一) 40 1:建立线程有几种方法? 2:定义两个线程(一个用继承Thread类,一个用实现Runnable接口),定义一个测试类包括一个主函数调用两个子线程(具体实现自定) 3:模拟一个人生产50个玩具,每200毫秒生产一个,当生产到第20个时加入每秒吃1个馒头,共吃完3个后在接着生产的多线程。 4:编写龟兔赛跑多线程程序,设赛跑长度为100米,每跑完10米输出一次结果。 5:改进上题的龟兔赛跑程序,通过改变优先级,并减掉休眠时间,使得乌龟以迅雷不及掩耳的速度跑完100米。 JavaSE高级—第六单元:多线程(二) 1:在多线程中,为什么要引入同步机制? 2:启动两个线程对一个数字i操作 1) 其中1个线程每次对i加1 2) 另1个线程每次对i减1 各运行20次,结果i的值等于初始值。 3:wait()、notify()、notifyAll()的作用分别是什么? 4:实现一个由A、B、C三个窗口同时销售100张票的系统,要求打印出每个窗口打印的售票情况,并且每个窗口不得连续售票。 5:模拟3个人排除买票,每人买1张票。售货员只有1张五元的钱,电影票5元一张,王大拿拿一张二十元的人民币排在谢大脚前面买票,谢大脚拿1张十元的人民币排在在赵四的前面买票,赵四拿1张五元的人民币排在最后。即最终的卖票次序是:谢大脚、赵四、王大拿 6:编写生产者消费者多线程程序,设有一个最大库存量为4的电视机仓库,生产10台电视机,一边生产一边销售(消费)。 7:多线程操作(50分) 1)启动两个线程对一个数字i操作(10分) 2)其中1个线程每次对i加1(10分) 3)另1个线程每次对i减一(10分) 4)各运行20次,结果i的值等于初始值。(20分) 41 JavaSE高级—第七单元:生产者消费者模式 1:编写三个线程,这三个线程都对一个整数操作 1)第一个和第二线程对这个整数进行自增操作 2)第三个线程对这个整数进行自减操作 2:利用线程实现ATM功能,一共三个线程 1)第一个和第二个线程取钱 2)第三个存钱 3)察看各个线程中输出的余额值是否正确 3:编写四个线程 1)第一个和第二个线程往ArrayList中保存新对象 2)第三个和第四个线程从上面的ArrayList中获取对象,并从ArrayList中删除此对象 3)察看各个线程输出的信息,是否存入了新对象,是否得到了对象 4:定义一个字符数组,利用四个线程操作这个字符数组 1)第一个和第二个线程往数组中添加字符 2)第三个和第四个线程从数组中读取字符 3)察看各个线程的输出 5:定义一个String数组,利用四个线程操作这个String数组 1)第一个和第二个线程往数组中添加String 2)第三个和第四个线程从数组中读取String 3)查看各个线程的输出 JavaSE高级—第八单元:网络编程(TCP) 1:编写一个服务器和一个客户端 1)服务器可以读取本地文件内容并能将内容发给请求的客户端 2)再编写一个可以发请求到服务器,并能从服务器段获取文件内容的客户端 2:编写一个简单的浏览器 1)将第一题的服务器做调整,如果客户端传输字符串: GET HTTP1.0 /index.jsp, 服务器会将指定目录(路径)下的index.jsp文件传输到客户端 2)客户端可以发请求和把上面的文件保存到本机的制定目录下 3:编写一个服务器和一个客户端 1)服务器上保存了几个用户名和对应的密码;且能验证客户端发送过来的用户名和密码,是否和保存的某个用户名和对应的密码一致. 2)客户端能连接到服务器,并把用户在键盘上输入的用户名和密码,发送到服务器上 42 4:编写一个ATM服务器和一个客户端,可以通过客户端输入帐号,密码,然后利用服务器端验证,且能实现ATM存钱,取钱和修改密码的功能 5:将上面的题目结合JDBC实现模拟银行的功能。 6:网络编程 1) 用网络编程编写一个服务端 2) 编写一个客户端,客户端向服务端发送一条信息 3) 服务端在这条信息前面加上“服务端:”后再返给客户端输出。 7:网络聊天功能(50分) 1) 用网络编程编写一个服务端(5分) 2) 用网络编写一个客户端(5分) 3) 客户端输入 client,服务端响应 I'SERVER!(40分) 8:实现服务器端和客户端的单线通话(50分) 1) 实例化一个服务器端(10分) 2) 实例化一个客户端(10分) 3) 服务器端和客户端相连接(10分) 4) 一旦服务器端接收到客户端的连接,服务器端就向客户端输出“welcom”(20分) 9:TCP/IP通信协议和IO 1) 实例化一个服务端(10分) 2) 实例化一个客户端,客户端可以向服务端发送一条信息(10分) 3) 用IO向D盘下面创建temp.txt文件(10分) 4) 服务端把接收到客户端的信息写到temp.txt文件中(20分) JavaSE高级—第九单元:网络编程(UDP) 1. 利用UDP编写一个程序,通过这个程序将一个字符串传给另外一台电脑中同样的程 序 2. 利用UDP编写一个程序,通过这个程序将一个字符串传给其他多台电脑中同样的程 序 3. 利用UDP编写一个程序,通过这个程序将键盘输入的一句话传给其他多台电脑中同 样的程序 4. 利用UDP实现一对多聊天,即在一台电脑上输入要说的话,可以在其它多台电脑上展 示出来 5. 利用UDP和TCP实现 a) 服务器利用UDP将自己的IP和端口号发送给客户端 b) 客户端依据服务器段返回的IP和端口号,利用TCP连接到服务器 43 JavaSE高级--第11单元 Annotation(注释) 1:自定义annotation,里面包括1个String类型的属性,一个有默认值类型的属性,使用自定义的annotation 2:定义一个Student类,要求重写toString()的方法,并且此方法要使用Annotation的三个基本的注释,创建Test类,输出Student类的toString方法的所有注释 3:自定义一个Annotation,定义Teacher类,定义say()方法,使用Annotation的三个基本的注释和自定义的Annotation,打印出Teacher类的say()的自定义的注释,并输出注释的属性值 4:自定义一个Annotation,要求只能在方法的声明上使用,定义完成后测试Annotation的功能 5:定义一个Annotation,要求在生成的文档中含有注释信息 JavaSE高级--第12单元 类加载和反射 1:利用反射和重载完成以下功能 1)创建Student类,类中有属性name和age并封装属性 2)重载Student的构造函数,一个是无参构造并,另一个是带两个参数的有参构造,要求在构造函数打印提示信息 3)创建带main函数的NewInstanceTest类,利用Class类得到Student对象 4)通过上述获取的Class对象分别调用Student有参函数和无参函数 2:利用反射的知识完成下面的操作 1)创建Mytxt类,创建myCreate()方法完成创建文件D:\\myhello.txt文件的功能。创建带main方法的NewInstanceTest类,通过Class类获取Mytxt对象,调用myCreat() 3:利用Annotation和反射知识完成操作 1)自定义一个有效的Annotation注释名为MyAnnotation,其中有属性myname创建Student类并重写toString(),toString()要求使用三个基本的Annotation和自定义的MyAnnotation注释 2)创建TestGetAnno类,打印出Student类的toString方法的所有注释 4:利用通过反射修改私有成员变量 1) 定义PrivateTest类,有私有name属性,并且属性值为hellokitty,只提供name 的getName的公有方法 2) 创建带有main方法ReflectTest的类,利用Class类得到私有的name属性 3) 修改私有的name属性值,并调用getName()的方法打印name属性值 5:利用反射和File完成以下功能(50分) 1) 利用Class类的forName方法得到File类(10分) 2) 在控制台打印File类的所有构造函数(20分) 3) 通过newInstance的方法创建File对象,并创建D:\\mynew.txt文件(20分) 44 JavaSE高级--第13单元 UML 1:根据以下描述,画出UML用例图 参与者:管理员、用户。 描述: 用角色信息维护(用例)和管理员维护(用例)都继承自用户资料维护(用例); 用角色信息维护(用例)包含用户资料修改(用例)和用户资料查询(用例)功能; 管理员维护(用例)包含用户资料注销(用例)、用户信息修改(用例)和数据查询(用例)功能; 导出资料(用例)是用户资料维护(用例)的扩展功能; 管理拥有用户资料维护(用例)权限;用户拥有角色信息维护(用例)权限; 答案: 2:简要说明软件建模语言UML进行软件系统分析设计过程。 答:UML是一种建模语言而不是方法,这是因为UML中没有过程的概念,而过程正是方法的一个重要组成部分。UML本身独立于过程,这意味着用户在使用UML进行建模时,可以选用任何适合的过程。一般采用的建模过程有:瀑布开发模型、迭代递增开发模型。 基于UML的系统开发采取增量迭代开发模型, 步骤如下: A、需求:最初需求规格说明应当由代表系统最终用户的人员提供,内容包括系统基本功能需求和对计算机系统的要求。 B、分析:分析的任务是找出系统的所有需求并加以描述,同时建立模型,以定义系统中的关键领域类,应由系统用户和开发人员合作完成。分析的第一步是定义用例,以描述所开发系统的外部功能需求。用例分析包括阅读和分析需求说明,此时需要与系统的潜在用户进行讨论。 C、设计:设计阶段的任务是通过综合考虑所有的技术限制,以扩展和细化分析阶段的模型。设计阶段可以分为两个部分:结构设计是高层设计,其任务是定义包(子系统),包括包间的依赖性和主要通信机制。我们希望得到尽可能简单和清晰的结构,各部分之间的依赖尽可能的少,并尽可能的减少双向的依赖关系。 第二部分是详细设计,细化包的内容,使编程人员得到所有类的一个足够清晰的描述。 D、实现:构造或实现阶段是对类进行编程的过程。可以选择某种面向对象的编程语言作为实现系统的软件环境。在实现阶段中,可以选取各种图的说明来辅助编程,比如:类图,状态图等。 45 E、测试和配置:完成系统编码后,需要对系统进行测试,它通常包括:单元测试、集成测试、系统测试和验收测试。在单元测试中使用类图和类的规格说明,对单独的类或一组类进行测试;在集成测试中,使用组件图和合作图,对各组件的合作情况进行测试;在系统测试中,使用用例图,以检验所开发的系统是否满足例图所描述的需求 3:在java项目开发过程中一般情况下: 模块业务执行Action类建议使用(Action)结尾来命名; 接口类建议使用(Service)结尾来命名,其接口的实现类使用(ServiceImpl) 结尾来命名; 4:用例就是外部可见的系统功能,对系统提供的服务进行描述。用(椭圆)来表示; 参与者表示与您的应用程序或系统进行交互的用户、组织或外部系统。用(小人)表示; 5:判断题: UML中一共有九种图:它们是用例图、类图、对象图、顺序图、协作图、状态图、活动图、构件图、部署图;(正确) 6: 1)图中的参与者有? (a) 1 (b) 2 (c) 3 (d) 4 2)右图中的用例有? (a) 1 (b) 2 (c) 3 (d) 4 3)2和3之间是什么关系?5和6呢? (a) 扩展,包含 (b) 包含,扩展 4)5缺少了3仍然是个完整的用例? (a) 是的 (b) 不是 5)4能够参与2吗?1能够参与5吗? (a) 可以,不可以 (b) 不可以,可以 习题答案: 1、(a)(d) 2、(b)(c) 3、(b) 4、(b) 5、(b)