JAVA 基础和JDBC应用
www.eachtimes.com
第 1 页 共 20 页
南京杰易
第一章 开发简单JAVA应用程序
1. 自己动手安装JDK开发环境,按照书上示例配置环境变量。 (预估:20分钟)
2. 下载课上的例子,观察结构并动手运行。 (预估:10分钟)
3. 编写一个Application,在屏幕上显示如下的信息: ************************************ Welcome To JYSOFT
************************************ (预估:30分钟)
第二章 Eclipse简单应用
1. 自己动手安装Eclipse开发环境。 (预估:20分)
2. 如图 2.16,在Eclipse中新建书上的例子,并且运行得到正确的结果。 (预估:20分)
3. 在Eclipse上调试书上的例2.1,并且运行得到正确的结果。 (预估:20分)
4. 在Eclipse安装JUnit,并且编写书上的例2.3JUnit代码,得到结果。 (预估:20分) 5. 熟记Eclipse常用快捷键。
第三章 Java 语言基础
编程题 1. 浮点运算
1.1 定义两个浮点型常量 1.12f 和 2.34 求这两个常量的和,差,积,除,并且打印。 (预估完成时长60分钟 考察:数据类型,运算符)
1.2 将第一题的结果四舍五入(在原来的结果上加0.5 然后强制类型转换为整数型),并且打印。 (预估:30分钟 考察:数据类型,运算符)
2. 定义一个整数型变量i,赋值为 17 用if…else语句判断i是否为偶数(i除2 ==0),如果为偶数,打印”I 是个偶数”,如果不是,打印”I 不是偶数”。 (预估:30分钟 考察:if else条件判断语句)
3. 使用第二题定义的变量i,用switch 判断i,分别判断i是否为1, 2, 17 然后分别打印”I 是 1”, “I 是 2” , “I 是 17”,如果都不是,打印”不是以上”。
www.eachtimes.com
第 2 页 共 20 页
南京杰易
(预估:30分钟 考察:switch条件判断语句)
4. 使用第二题定义的变量I ,循环10次,每次对i 加一,然后打印出最后循环结束时i的值。
4.1采用for 循环。
(预估:45分钟 考察:循环语句) 4.2 do while 循环。
(预估:30分钟 考察:循环语句) 4.3 while循环。
(预估:30分钟 考察:循环语句)
5. 定义一个字符串 “2008/13/31”。判断上面的字符串是不是一个正确的日期型。 5.1 首先 使用substring 截取出年份2008月份 13 日期 31 (预估:30分钟 考察:字符串处理) 5.2 首先判断年份是否为闰年。 提示闰年的条件是符合下面二者之一: (1)能被4整除,但不能被100整除。 (2)能被4整除,又能被100整除。
(预估:45分钟 考察:字符串处理)
5.3 如果是闰年,判断月份,如果月份是2月,并且2月份天数不是29,打印”错误日期”,如果是,打印”正确日期”。如果月份不是2月,判断月份是否在1~12之间 如果不是打印”错误日期”,否则如果月份是大月,判断日期是不是31天,如果不是打印”错误日期”,如果是,打印”正确日期”。如果月份是小月,判断日期是不是30天,如果不是打印”错误日期”,如果是,打印”正确日期”。 (预估:75分钟 考察:字符串处理)
5.4 如果不是闰年,判断月份,如果月份是2月,并且2月份天数不是28,打印”错误日期”,如果是,打印”正确日期”。如果月份不是2月,判断月份是否在1~12之间 如果不是打印”错误日期”,否则如果月份是大月,判断日期是不是31天,如果不是打印”错误日期”,如果是,打印”正确日期”。如果月份是小月,判断日期是不是30天,如果不是打印”错误日期”,如果是,打印”正确日期” (预估:60分钟 考察:字符串处理)
6. 有两个整数型一维数组,分别是{3,5,1,7,8,11,22} {2,8,6,4,88,66,44}。 6.1 首先循环打印出以上两个数组的所有值。 (预估:30分钟 考察:数组处理)
6.2 将以上两个数组复制到一个新的数组中(参见书3.6.3 数组复制),然后打印出这个新数组的所有值。
(预估:30分钟 考察:数组处理)
6.3 对这个新数组排序(参见书3.6.5 数组类的使用),打印排序结束的数组中所有值。(预估:30分钟 考察:数组处理)
7. 有两个字符串,”Welcome to ” 和“JYSOFT!”
www.eachtimes.com
第 3 页 共 20 页
南京杰易
7.1 我们首先把这个字.符串连接成为"Welcome to JYSOFT!"(使用StingBuffer) ,并且打印出该字符串。
(预估:30分钟 考察:StingBuffer处理)
7.2 然后将该字符串第2个到末尾的字符串子串取出,并且打印出该字符串。 (预估:30分钟 考察:StingBuffer处理)
7.3 然后将其中的大写E和小写e全部替换成I,然后输出该字符串。 (预估:30分钟 考察:StingBuffer处理) 8. 编写一个名为ArrayCheck的函数。
要求将一个整数数组作为变量传递到函数中。 (预估:60分钟 考察:数组) 打印出该数组的最大值。
(预估:60分钟 考察:数组) 打印出该数组的最小值。
(预估:60分钟 考察:数组) 打印出该数组的平均值。
(预估:60分钟 考察:数组)
9. (思考题)利用二维数组打印五行的杨辉三角。 杨辉三角:(TIPS:数据要求自己计算) 1 1 2 1 1 3 3 1 1 4 6 4 1 (预估:240分钟 考察:StringBuffer处理) 问答题: 1 2 3
设 x = 2 ,则表达式 ( x + + )/3 的值是 (预估:15分钟 考察:运算符)
若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 和 (预估:15分钟 考察:表达式)
执行以下几个语句后的输出结果是 。 String s = “This one” , s1=”This two”; int i=5 if (i>10)
System.out.print(s) ; else
System.out.print(s1) ; (预估:15分钟 考察:判断语句) 4
数组x定义如下
www.eachtimes.com
第 4 页 共 20 页
。
int x[ ][ ]=new int[3][2]
南京杰易
则 x.length 的值为____________, x[0].length 的值为____________。 (预估:15分钟 考察:数组) 5
程序段
int m=0,n=0;
for (int i=0, j=1; i<10&&j<10;i++,j++) {if i>5 m++; else n--; j++;
}
运行后,m的内容为______ ,n的内容为______。 (预估:15分钟 考察:运算符) 6
程序
public class test_1{
public static void main(String[ ] args) {int x ;
int a[ ]={0,0,0,0,0,0}; calculate(a,a[5]);
System.out.println(“value is ”+a[0]); }
static int calculate(int x[ ],y) { for(int i=1 ;i<6; i++) if y<6 x[i]=x[i-1]+1; return x[0]; }
}
运行后,a[5]的内容为______ ,程序的输出(显示)结果为______ (预估:15分钟 考察:数组) 7
Java application中的主类需包含main方法,main方法的返回类型是什么?( ) (预估:15分钟 考察:Java基本功) 8
有一段java 应用程序,它的主类名是a1,那么保存它的源文件名可以是( ) (预估:15分钟 考察:Java基本功) 9
整型数据类型中,需要内存空间最少的是( ) (预估:15分钟 考察:基本数据类型)
www.eachtimes.com
第 5 页 共 20 页
A、int B、float C、double D、void
A a1.java B a1.class C a1 D都对
A short B long C int D byte
南京杰易
10 下面对Java相关的技术叙述正确的是:( ) A.Java仅仅是一种编程语言
B.Java只是一种虚拟的平台 C.Java即是开发环境又是开发平台 D.Java就是JavaScript
(预估:15分钟 考察:Java基本功)
11 下面对数组的定义及初始化不正确的方法是:( ) A.int array[]; B.int array[8]; C.int[] array=new int[8]; D.int array[]=new int[8]; (预估:15分钟 考察:数组)
12 下面这个程序能不能运行,如果不能运行,请指出错误在哪里
public class HelloDate { String s=\"intital value\";
public static void main(String[] args){ System.out.println(s); } }
(预估:15分钟 考察:字符串) 13 关于以下程序段,正确的说法是( )。
1. String s1=\"abc\"+\"def\";
2. String s2=new String(s1); 3. if(s1.equals(s2))
4. System.out.println(\".equals() succeeded\"); 5. if(s1= =s2)
6. System.out.println(\"= = succeeded\");
A. 行4与行6都将执行 B.行4执行,行6不执行 C. 行6执行,行4不执行 D.行4、行6都不执行 (预估:30分钟 考察:字符串) 14 关于以下程序段,,实现的功能是什么
public class Sum {
public static void main(String args[]) {
double sum=0.0;
for(int i=1;i<=100; i++) sum +=1.0/(double) i;
System.out.println(\"sum=\"+sum); }
}(预估:15分钟 考察:运算符) 15 关于以下程序段,,实现的功能是什么
public class Function {
public static void main(String args[]) {
int i 、j;
www.eachtimes.com
第 6 页 共 20 页
南京杰易
int a[]= {32、54、7、60、31、78、3、77、39、98}; for (i=o ; i {
int k=i; for (j=i; j if (a[j]
int temp =a[i]; a[i]= a;
a[k]=temp; }
for (i=0 ; i
System.out.print(a[i]+\" \") System.out.println(); } }
(预估:15分钟 考察:数组)
16 关于以下程序段,,输出结果为___________________________________________________。
public class Short {
public static void main(String args[]) {
StringBuffer s=new StringBuffer(\"Hello\"); if((s.length()>5)&&(s.append(\"there\") . equals(\"False\"))) ;
System.out.println(\"value is \"+s); }
}
(预估:15分钟 考察:字符串)
第四章 面向对象编程
程序题:
1 建立包 com.jysoft.XXX 其中XXX为自己姓名的拼音。 1.1 在上面的包下面,生成书上例 4.9的程序。 (预估:60分钟 考察:类,包的概念)
1.2 再在上面的包下,生成书上例 4.10和4.11的程序,观察同一包下面不同的类之间的访问权限。
(预估:60分钟 考察:类,包的概念) 2 在上面的包中,建立名为TaiSyo的类
2.1 要求,在该类中实现两个无参数方法,一个静态方法,要求打印出”这是一个静态方法”
一个非静态方法,要求打印出”这是一个非静态方法” (预估:60分钟 考察:类,包的概念)
2.2 在同一包中,建立名为TestTaiSyo的类,并且实现main函数 要求在main函数中引用这个类的静态函数和非静态函数
www.eachtimes.com
第 7 页 共 20 页
南京杰易
(预估:60分钟 考察:对象的引用,静态函数) 3 编写程序模仿使用银行帐目
在上面的包中,创建一个类,Account.java。
它定义银行帐目。包括帐户金额,帐户密码,帐户号码等属性。
并且提供,初始化帐户,返回帐户号码,存款业务,取款业务(如果余额不足将出现警告信息)等方法。
(预估:60分钟 考察:类的生成) 4 编写程序模仿ATM机
4.1 创建一个名为Personal的接口,提供返回当前余额和提取金额两种方法。 (预估:60分钟 考察:类的生成)
4.2 创建一个名为PersonalAccount个人存款类型的帐户,继承自银行帐目并且实现了Personal的接口,并且要求个人取款可以赊五千块钱(提示用父类取款业务方法的覆盖来实现)
(预估:60分钟 考察:类的生成)
4.3 创建一个有main函数的类,ATM.java,让其通过接口访问上面的存款类型的帐户,
能够实现查询余额和取款功能
(预估:60分钟 考察:类的继承 接口)
5 分析下面的程序代码,完成程序注释,指出其中都使用了什么面向对象技术。
要求首先能读懂下面的程序,能够读懂别人的程序也是程序员必备的技术。在下列程序中增加注释,然后能够勾画出下面程序的对象继承关系和使用到的面向对象技术。最后要能够指出,为什么使用这些技术,使用这些技术的优点。 // Boss.java
public final class Boss extends Employee { private double weeklySalary; public Boss(String first, String last, double s) {
super(first, last); // call superclass constructor setWeeklySalary(s); }
public void setWeeklySalary(double s) { weeklySalary = (s > 0 ? s : 0); }
public double earnings() { return weeklySalary; }
public String toString() {
return \"经理: \" + super.toString(); }
}
// CommissionWorker.java
public final class CommissionWorker extends Employee {
www.eachtimes.com
第 8 页 共 20 页
南京杰易
private double salary; // 每周的底薪 private double commission; // 每周奖金 private int quantity; // 销售额
public CommissionWorker(String first, String last, double s, double super(first, last); setSalary(s);
c, int q) {
setCommission(c);
setQuantity(q); }
public void setSalary(double s) { salary = (s > 0 ? s : 0); }
public void setCommission(double c) { commission = (c > 0 ? c : 0); }
public void setQuantity(int q) {
quantity = (q > 0 ? q : 0); }
public double earnings() { return salary + commission * quantity; }
public String toString() {
return \"普通员工: \" + super.toString();
}
}
// Employee.java
public abstract class Employee { private String firstName; private String lastName; public Employee(String first, String last) firstName = first; lastName = last; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public String toString() { return firstName + ' ' + lastName; } // Employee抽象方法earnings();
public abstract double earnings();
}
www.eachtimes.com
第 9 页 共 20 页
{ 南京杰易
// HourlyWorker.java
// Definition of class HourlyWorker
public final class HourlyWorker extends Employee { private double wage; // 每小时工资 {
private double hours; // 每周工作时间 // Constructor for class HourlyWorker
public HourlyWorker(String first, String last, double w, double h)
super(first, last); setWage(w);
setHours(h); }
public void setWage(double w) { wage = (w > 0 ? w : 0); }
public void setHours(double h) {
hours = (h >= 0 && h < 168 ? h : 0); }
public double earnings() { return wage * hours; }
public String toString() {
return \"计时工人: \" + super.toString(); }
}
// PieceWorker.java
public final class PieceWorker extends Employee { private double wagePerPiece; // 生产量
private int quantity; // 工作周数
// Constructor for class PieceWorker
public PieceWorker(String first, String last, double w, int q) {
super(first, last);
setWage(w);
setQuantity(q); }
public void setWage(double w) { wagePerPiece = (w > 0 ? w : 0); }
public void setQuantity(int q) { quantity = (q > 0 ? q : 0); }
public double earnings() { return quantity * wagePerPiece; }
public String toString() {
www.eachtimes.com
第 10 页 共 20 页
南京杰易
return \"计件工人: \" + super.toString(); }
}
// Test.java
import javax.swing.JOptionPane; import java.text.DecimalFormat;
public class Test {
public static void main( String args[] ) {
Employee ref; // ref为Employee引用 String output = \"\";
Boss b = new Boss( \"史\", \"季华\", 800.00 ); CommissionWorker c =
new CommissionWorker( \"张\", \"雪\",
400.0, 3.0, 150); PieceWorker p =
new PieceWorker( \"包\", \"利\", 2.5, 200 ); HourlyWorker h =
new HourlyWorker( \"科\", \"鹏\", 13.75, 40 );
DecimalFormat precision2 = new DecimalFormat( \"0.00\" ); ref = b; // 把父类的引用ref赋值为子类Boss对b的引用 output += ref.toString() + \" 工资 ¥\" +
precision2.format( ref.earnings() ) + \"\\n\" + b.toString() + \" 工资 ¥\" +
precision2.format( b.earnings() ) + \"\\n\"; ref = c; // 把父类的引用ref赋值为子类普通员工对c的引用 output += ref.toString() + \" 工资 ¥\" +
precision2.format( ref.earnings() ) + \"\\n\" + c.toString() + \" 工资 ¥\" +
precision2.format( c.earnings() ) + \"\\n\"; ref = p; // 把父类的引用ref赋值为子类计件工人对p的引用 output += ref.toString() + \" 工资 ¥\" +
precision2.format( ref.earnings() ) + \"\\n\" + p.toString() + \" 工资 ¥\" +
precision2.format( p.earnings() ) + \"\\n\"; ref = h; // 把父类的引用ref赋值为子类计时工人对h的引用 output += ref.toString() + \" 工资 ¥\" +
precision2.format( ref.earnings() ) + \"\\n\" + h.toString() + \" 工资 ¥\" +
precision2.format( h.earnings() ) + \"\\n\"; System.out.println(output);
www.eachtimes.com
第 11 页 共 20 页
南京杰易
System.exit( 0 ); } }
}
(预估:180分钟 考察:所有面向对象技术) 4 尝试用面向对象技术开发一个古代战争游戏
4.1 首先编写朝代这个类,包括朝代名字,朝代的人口,军队总数,军队的士气,文明的程度(比如有青铜时代,白银时代,黄金时代之类)。
实例化朝代这个类,定义两个对象,比如宋,金。 (预估:60分钟 考察:所有面向对象技术)
4.2 建立一个战争类,在其中定义,战争名称,战争的地点,战争的时间,战争的双方,战争的宣布,战争的决胜判断,战争的结束等方法。 (预估:60分钟 考察:所有面向对象技术)
4.3 尝试自己创立一个算法来实现战争的决胜判断,比如根据人口,军队总数,军队的士气,文明的程度四个变量综合判断,如果有三个超越对方既为赢,如果两个一样,则可以根据随机数判断是否赢。
(预估:60分钟 考察:所有面向对象技术)
4.3 实例化战争类对象,定义一个变量比如宋金战争。宋,金两个变量引入,进行战争开始,判断和终结。
(预估:60分钟 考察:所有面向对象技术)
具体的实现技术由大家自己考虑,游戏里面具体类的设计也可以自由发挥。
4.4 完成之后请大家谈论,还可以增加什么功能增强游戏的可玩性,怎么用面向对象设
计思路才能更好的设计该游戏,让其推向市场。
(预估:60分钟 考察:所有面向对象技术)
5 (思考题,有兴趣者可以选作,如果课时不够,不推荐做)现在最流行的游戏魔兽争霸大家都玩过,魔兽争霸其实就是面向对象设计的经典之作。
大家可以尝试,自己根据自己的理解,设计一个魔兽争霸的原形。
魔兽里面有四个种类:人类,暗夜精灵,兽族,死族。我们首先定义一个抽象类,包括四个种族的共性,然后四个种族从其继承。每个种族都有自己的专有属性。 定义一个英雄接口,包括英雄的一些基本属性,比如可以重生。 然后每个族定义一个英雄,继承自每个种族,并且实现了英雄的接口。
定义一个实战类,包括实战的地图,地图对于每种英雄实力发挥的影响,地图中可以包括的英雄的个数,地图决胜的条件。
然后实例化实战类的一个对象,让英雄自己PK,得到PK结果。
这个题目比较复杂,有兴趣的学生可以多考虑一点细节的问题,并不一定要把程序代码写出来。可以把自己的设计思路整理出来即可。 (预估:320分钟 考察:所有面向对象技术)
选择题:
1. 下面的程序运行之后会发生什么
www.eachtimes.com
第 12 页 共 20 页
南京杰易
public class mymain{
public static void main(String argv){
System.out.println(\"hello cruel world\"); } }
A. 类名中包括main关键字,编译器报错,无法运行 B. 编译成功,运行结果为\"hello cruel world\" C. 构造函数没有定义,无法通过编译
D. main主函数定义格式不正确,无法通过编译 (预估:15分钟 考察:Java基本功) 2. 下面的程序运行之后会发生什么 //file p1.java
package mypackage; class p1{
void afancymethod(){
system.out.println(\"what a fancy method\"); } }
//file p2.java
public class p2 extends p1{
public static void main(String argv[]){ p2 p2 = new p2();
p2.afancymethod(); } }
A. 两个Java程序都通过编译,然后打印出“what a fancy method”B. 永远不会通过编译
C. 两个Java程序都通过编译,但是p2在运行的时候会出错 D. p1可以通过编译但是p2不可以 (预估:15分钟 考察:Java基本功) 3. 下面的程序运行之后会发生什么 public class myar{
public static void main(String argv[]){ int[] i = new int[5];
System.out.println(i[5]); } }
A. 编译时出错 B. 运行时出错 C. 输出”0” D. 输出”null”
(预估:15分钟 考察:Java基本功) 4. 下面的程序运行之后会发生什么
www.eachtimes.com
第 13 页 共 20 页
南京杰易
public class hope{
public static void main(String argv[]){ hope h = new hope(); }
protected hope(){ for(int i =0; i <10; i ++){
System.out.println(i); } } }
A. 编译时出错,构造函数不能定义为protected B. 运行时出错,构造函数不能定义为protected C. 输出0到10 D. 输出0到9
(预估:15分钟 考察:面向对象访问字) 5. 下面的程序运行之后会发生什么 public class as{ int i = 10; int j;
char z= 1; boolean b;
public static void main(String argv[]){ as a = new as();
a.amethod(); }
public void amethod(){ System.out.println(j);
System.out.println(b); } }
A. 编译成功,并且运行输出0和false B. 编译成功,并且运行输出0和true C. 编译错误,b没有初期化 D. 编译错误,z必须被赋值char型 (预估:15分钟 考察:Java基本功)
6. 下面的程序运行之后会发生什么 public class arg{ string[] myarg;
public static void main(string argv[]){ myarg=argv; }
public void amethod(){
www.eachtimes.com
第 14 页 共 20 页
南京杰易
System.out.println(argv[1]); } }
A. 编译错误
B. 编译成功,并且运行输出\"hello\" C. 编译错误,并且运行输出\"there\" D. 以上都不是
(预估:15分钟 考察:Java基本功) 7. 下面的程序运行之后会发生什么
class valhold{
public int i = 10; }
public class obparm{
public static void main(string argv[]){ obparm o = new obparm(); o.amethod(); }
public void amethod(){ int i = 99;
valhold v = new valhold(); v.i=30; another(v,i);
system.out.print( v.i ); }//end of amethod
public void another(valhold v, int i){ i=0; v.i = 20;
valhold vh = new valhold(); v = vh;
system.out.print(v.i); system.out.print(i); }//end of another }
A. 10030 B. 20030 C. 209930 D. 10020
8. 下面的程序中,应该添加那行程序
class base{
www.eachtimes.com
第 15 页 共 20 页
南京杰易
public base(int i){} }
public class myover extends base{ public static void main(string arg[]){
myover m = new myover(10); } myover(int i){ super(i); }
myover(string s, int i){ this(i); } }
A. myover m = new myover(); B. super(); C. this(\"hello\); D. base b = new base(10); 9. 下面的程序中,应该添加那行程序
class inout{
string s= new string(\"between\"); public void amethod(final int iargs){ int iam;
class bicycle{
public void sayhello(){ }
}//end of bicycle class }//end of amethod
public void another(){ int iother; } }
A. system.out.println(s); B. system.out.println(iother); C. system.out.println(iam); D. system.out.println(iargs);
第五章 异常处理
要求:所有的编程题都要设计测试用例及测试结果 1. 问答题:(考察:运行时异常处理 预估:30分钟)www.eachtimes.com
第 16 页 共 20 页
南京杰易
看下面的代码,分析可能发生的异常,指出如何修改。
1. public static void main(String[] args) {
String s = null; String s2 = \"a\"; compare(s, s2); }
public static int compare(String a, String b) {
return a.compareTo(b);
}
2. public static void main(String[] args) { String s = \"welcome to JYSOFT\"; System.out.println(s.substring(0, 15));
}
3. public static void main(String[] args) { String s = \"1.2-\"; int i = Integer.parseInt(s); }
4. public static void main(String[] args) { Object s = \"100\"; Integer i = (Integer) s;
}
2. 在第四章练习中,建立了帐户类。现要求check帐户的有效性,帐户的金额:必须
是数字(可以是小数,小数点后2位),帐户密码:多于3位少于6位,帐户号码:固定5位的数字,帐户人名字:不得超过5位,性别:男或女。如果check出错,抛出一个自定义异常,并打印出异常信息。
(考察:异常抛出、处理 预估:120分钟)
步骤提示:
1) 建立帐户对象,利用构造函数为账户的每个属性附值 2) 取得帐户的金额,并做金额check 3) 取得帐户的密码,并做密码check 4) 取得帐户的号码,并做号码check
5) 取得帐户的帐户人名字,并做帐户人名字check 6) 取得帐户的性别,并做性别check
要求:check有2种方式。第一,以上check中任何一个check出错,打印错误信息后函数终止;第二,打印出所有的错误信息(可以把所有的错误信息拼成字符串最终打印)。2种方式都分别实现,并且设计测试用例及测试结果。
3. 利用捕捉异常的方法,检查一个字符串是否是数字。无论检查结果如何都要打印出
检查结果。要求:设计测试用例及测试结果(考察:异常处理方式;预估:20分钟)。
第六章 输入输出流及文件操作
要求:所有编程题必须设计测试用例和测试结果
www.eachtimes.com
第 17 页 共 20 页
因篇幅问题不能全部显示,请点此查看更多更全内容