怎么发给他人包含数据库的javase 练习项目项目

1JavaSE 技能手册 3G 软件学院 2序 本技能手册为三个月的 javaSE 学习所用。里面的题目 以本学院教学大纲为基础,分为初、中、高三个教学周期。 每个教学周期分为 20 个单元,每天一个单元。每天老师讲 完本单元内容后,学生都要把手册里面对应的技能练习题完 成,老师都要对学生的完成情况进行检查。 为促进老师在教学过程中重视本手册,促使学生在学习 过程中使用本手册,每个月的技能考试的题目原型都来源于 本手册。通过此措施,达到“以考促教,以考促学”的教学 目的。 本手册为提高学生技能而写,希望各位同学能积极利用, 发挥其价值。王昕哲
3JavaSE 初级—第一单元:JAVA 语言概述,简单的 JAVA 程序解析 1:java 语言的特点是什么?2:举例写出在 java 发展史上对 java 有深刻影响的公司名称?3:使用 java 实现输出 hello world! !4:问题:System.out.println()和 System.out.print()有什么区别呢? 以下代码的运行效果是什么? System.out.println(&我的爱好:&); System.out.println(&打网球&); System.out.print(&我的爱好:&); System.out.print(&打网球&);JavaSE 初级—第二单元:Java 开发工具介绍 eclipse 平台使用 1:列举你所知道的开发 java 程序的工具?2:实现两个整数的加减乘除以及取余算法3:写出常用的 10 个 eclipse 快捷键。4:简述使用 eclipse 创建一个类的过程,以及一个工程里面的基本结构。JavaSE 初级—第三单元:变量、常量和基本数据类型 41:列举 java 里面的 8 中基本数据类型?2:每种基本数据类型都定义一个常量。 (八种)3:每种基本数据类型都定义一个变量。4:写出基本数据类型自动转化的流程图。5:实现两个字符型数据的加减乘除运算。6:计算下列表达式的结果: 10/3 ; 10/5 ; 10%2 ; 10.5%3;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(&a=&+a); System.out.println(&b=&+b); System.out.println(&c=&+c); System.out.println(&d=&+d); System.out.println(&e=&+e); 5System.out.println(&f=&+f); System.out.println(&g=&+g); System.out.println(&h=&+h); System.out.println(&i=&+i); System.out.println(&j=&+j); System.out.println(&k=&+k); } 7:写出程序的输出结果:public static void main(String[] args){ int n=3, m=4; System.out.println(); System.out.println(&n&m is &+(n&m)); System.out.println(&n=m is &+((++n)==m)); System.out.println(&n&m is &+((++n)&m)); System.out.println(&n is &+n);} 8:写出程序的输出结果:public static void main(String[] args){ int x=1,y=12; x+=2; y-=3; System.out.println(); System.out.println(&x= &+x+& y= &+y); y/=x; System.out.println(&x= &+x+& y= &+y); y++; y%=x; System.out.println(&x= &+x+& y= &+y); } JavaSE 初级—第五单元:程序结构设计顺序结构,选择结构 1:写一个方法,此方法实现判断一个整数,属于哪个范围:大于 0;小于 0;等于 0 2:写一个方法,此方法实现判断一个整数是偶数还是奇数。 3:写一个方法,此方法实现对三个整数进行排序,输出时按照从小到大的顺序输出。 4:写一个方法,此方法实现判断这个数是否是水仙花数。 3 3 3 水仙花数的条件:三位数为 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 就提示输入错误。 610: 有 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 分别为函数的参数, 2 2 2 如果:b -4ac&0,则有两个解;b -4ac=0,则有一个解;b -4ac&0,则无解; 2 已知:x1=(-b+sqrt(b -4ac))/2a 2 X2=(-b-sqrt(b -4ac))/2aJavaSE 初级—第六单元:循环结构 1:求 10 以内的偶数的和。 2:求 100 以内的所有素数 3:随机产生一个 1-100 之间的整数,看能几次猜中。要求:猜的次数不能超过 7 次,每次 猜完之后都要提示“大了”或者“小了”。 4:写一个方法,此方法实现判断某年某月某日是这一年的第几天?(年月日通过方法的参 数提供) 5:写一个方法,此方法实现输出 100-999 之间的水仙花数。 6:输出小写的 a-z 以及大写的在 Z—A 7:求出 1-3+5-7+9-?..101 的和 78:求出 1-1/2+1/3-1/4?..1/100 的和 9:输出 20-80 之间能被 3 整除的整数,每 5 个一行 10:打印出
年中所有的闰年,并以每行四个数的形式输出 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 实现输出如下图形。JavaSE 初级—第七单元:循环结构 1:实现双色球的彩票功能。规则:从 36 个红球中随机选择不重复的 6 个数,从 15 个篮 球中随机选择 1 个组成一注彩票。可以选择买多注。 2:输出 1-100 之间的不能被 5 整除的数,每 5 个一行。 3:输出斐波那契额数列数列的前 20 项 4:输出一个整数的二进制数、八进制数、十六进制数。 5:随机产生一个字母,如果是大写字母则输出“yes” ,否则输出“no” 6:随机产生一个字符,判断:如果为大写字母则输出“大写字母” ;如果为小写字母则 输出“小写字母” ;否则怎输出“其他字符” ; 7:判断一个月份属于一年中的那个季节。 (春夏秋冬) 88:年月日分别为自定义函数的参数,判断是否为正确的日期,并求出该日期的下一天的 年份月份和日期。 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 循环结构编程实现) 提示:采用逆向思维分析问题。JavaSE 初级—第八单元:数组 1:对 10 个整数进行按照从小到大的顺序排序2:求一个 3*3 矩阵对角线元素之和 &提示&程序分析:利用双重 for 循环控制输入二维数组,再将 a[i][i]累加后输出。3:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 &提示&程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况, 插入后此元素之后的数, 依次后移一个位置。4:将一个数组逆序输出。 9&提示&程序分析:用第一个与最后一个交换。5:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。6:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数7:定义一个 4 行 4 列的二维数组,逐个从键盘输入值,然后将第 1 行和第 4 行的数据进行 交换,将第 2 行和第 3 行的数据进行交换8:定义一个 3 行 4 列的二维数组,逐个从键盘输入值,编写程序将四周的数据清 09:定义一个 3 行 4 列的二维数组,逐个从键盘输入值,将左下三角的值清 010:定义一个 4 行 4 列的二维数组,逐个从键盘输入值,将对角线的值清 011: 定义一个 N*N 二维数组, 从键盘上输入值, 找出每行中最大值组成一个一维数组并输出;12:有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中 JavaSE 初级—第九单元: 方法的结构以及调用 1:开发一个标题为“FlipFlop”的游戏应用程序。它从 1 计数到 100,遇到 3 的倍数就替 换为单词“Flip” ,5 的倍数就替换为单词“Flop” ,既为 3 的倍数又为 5 的倍数则替换为单 词“FlipFlop” 。 2:生成 13 位条形码 Ean-13 码规则:第十三位数字是前十二位数字经过计算得到的校验码。 例如: 计算其校验码的过程为: @前十二位的奇数位和 6+0+2+4+6+8=26 @前十二位的偶数位和 9+1+3+5+7+9=34 @将奇数和与偶数和的三倍相加 26+34*3=128 @取结果的个位数:128 的个位数为 8 @用 10 减去这个个位数 10-8=2 10所以校验码为 2 (注:如果取结果的个位数为 0,那么校验码不是为 10(10-0=10) ,而是 0) 实现方法 ean13()计算验证码,输入 12 位条码,返回带验证码的条码。 例:输入: 输出:2 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 方法中调用该方法判断输入的一个年份是否是闰年。 JavaSE 初级—第十单元: 案例分析-ATM 取款机功能分析菜单设计 JavaSE 初级—第十一单元面向对象的基本概念 1:写一个人的类 属性:名字,性别,年龄 方法: (1)自我介绍的方法(2)吃饭的方法 创建一个对象“张三” 2:写一个汽车类: 属性:品牌;车长;颜色;价格; 方法:跑的方法 创建五个对象: “捷达” , “宝马” , “劳斯莱斯” , “科鲁兹” , “迈锐宝” 3:写一个课程类: 属性:课程名;学时;任课老师; 创建五个对象: “c 语言” , “java 编程” , “php 网络编程” , “c++” , “数据结构” 4:0——————&X | | | P(X,Y) 11| | Y 定义一个类,用于描述坐标点 (1) 具有计算当前点到原点距离的功能 (2) 求到任意一点(m,n)的距离 (3) 具有坐标点显示功能,显示格式(x,y) 5:定义一个圆类型 提供显示圆周长功能的方法 提供显示圆面积的方法 6:编程创建一个 Box 类,在其中定义三个变量表示一个立方体的长、宽和高,定义一个方 法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。 7:设计一个 Dog 类,有名字、颜色和年龄属性,定义构造方法初始化这些属性,定义输出 方法 show()显示其信息。 8:定义一个计算机类: 属性:品牌;价格;颜色; 方法: (1)编程的功能(2)上网的功能 实例化两个对象: “lenovo” ; “hasee” 9:编写一个类 Student,代表学员,要求: (1)具有属性:学号、姓名、年龄、性别、专业。 (2)具有方法:自我介绍,负责输出该学员的姓名、年龄、性别以及专业。JavaSE 初级—第十二单元构造方法 1:写一个人的类 属性:名字,性别,年龄;提供无参的构造方法和一个有参的构造方法 方法: (1)自我介绍的方法(2)吃饭的方法 创建一个对象“张三” 2:写一个汽车类: 属性:品牌;车长;颜色;价格; 创建五个对象: “捷达” , “宝马” , “劳斯莱斯” , “科鲁兹” , “迈锐宝” 提供无参的构造方法和一个有参的构造方法 3:写一个课程类: 属性:课程名;学时;任课老师; 创建五个对象: “c 语言” , “java 编程” , “php 网络编程” , “c++” , “数据结构” 提供无参的构造方法和一个有参的构造方法 4:0——————&X 12| | | P(X,Y) | | Y 定义一个类,用于描述坐标点 (1) 具有计算当前点到原点距离的功能 (2) 求到任意一点(m,n)的距离 (4)具有坐标点显示功能,显示格式(x,y) (5)提供无参的构造方法和一个有定义一个圆类型 提供显示圆周长功能的方法 提供显示圆面积的方法 提供无参的构造方法和一个有参的构造方法参的构造方法 5:定义一个圆类型,提供显示圆周长功能的方法, 提供显示圆面积的方法,提供无参的构造方法和一个有参的构造方法 6:编程创建一个 Box 类,在其中定义三个变量表示一个立方体的长、宽和高,定义一个方 法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。 提供无参的构造方法和一个有参的构造方法 7:设计一个 Dog 类,有名字、颜色和年龄属性,定义构造方法初始化这些属性,定义输出 方法 show()显示其信息。 提供无参的构造方法和一个有参的构造方法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 页,否则输 13出错误信息,并赋予默认值 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,用来在控制台输出每本教材的名称、页数、类型 具有两个带参构造方法:第一个构造方法中,设置教材类型为“计算机” (固定) ,其余 属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定 编写测试类 Book3Test 进行测试: 分别以两种方式完成对两个 Book3 对象的初始化工作, 并分别调用它们的 detail 方法, 看看输出是否正确 7:根据上图写出“司机”类。 (主要体现方法的重载) 148:编写一个类 Student,代表学员,要求: (1)具有属性:姓名、年龄、性别、专业。 (2)具有方法:自我介绍,负责输出该学员的姓名、年龄、性别以及专业。 (3)具有两个带参构造方法:第一个构造方法中,设置学员的性别为男、专业为 3g,其余 属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定 编写测试类 StudentTest 进行测试, 分别以两种方式完成对两个 Student 对象的初始化工作, 并分别调用它们的自我介绍方法,看看输出是否正确。JavaSE 初级—第十五单元 JAVA 的特性之继承 (一) 1:宠物类叫 Pet(父类); 属性有 name 和 age; 行为有吃 eat(); 喝 drink(); 叫声 shout(); 子类 Cat 和 Dog Cat 继承 Pet 类所有并且增加一个自己的特有方法 climbTree() 爬树并且叫声是喵喵 15Dog 继承 Pet 类所有并且增加一个自己的特有方法 police() 警戒并且叫声是汪汪 2:父类:家用电器,属性有电流、电压;行为有开 open(),关 close() 子类:电视除以上还有方法:display(); 洗衣机还有方法:wash(); 电灯的特有方法如 light(); 3:已有 Bird 类的定义如下: public class Bird { protected static int referenceCount=0; public Bird(){referenceCount++;} protected void fly(){ } static int getReCount(){return referenceC} } 有类 Nightingale 的定义如下,请写出它的输出结果。 class Nightingale extends Bird { Nightingale( ) { referenceCount++;} public static void main( String args[ ]){ System.out.println(&Before:&+referenceCount); Nightingale florence=new Nightingale( ); System.out.println(&After:&+referenceCount); florence.fly( ); } } 分析以上程序的输出结果是什么?为什么? 4:定义一个图形类和(子类)圆形类、矩形类 图像类:有求周长和求面积和显示图形信息的功能。 圆形类:包含圆心和半径,重写求周长和求面积的方法 矩形类:包含长和宽,重写求周长和求面积的方法 5:写出 this 和 super 的用法。6:写出 static 和 final 的用法 167:编写老师类 (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 分)JavaSE 初级—第十六单元 JAVA 的特性之继承 (二)--Object 类 1:为什么要重写 toString()方法?2:为什么要重写 equals()方法? 173:定义平面内点的类 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 分) 9:编写一个 Java 应用程序,设计一个汽车类 Vehicle,包含的属性有车轮个数 wheels 和 车重 weight。 小车类 Car 是 Vehicle 的子类, 其中包含的属性有载人数 loader。 卡车类 Truck 是 Car 类的子类,其中包含的属性有载重量 payload。 (20 分) (1) 每个类都有构造方法进行属性初识化(10 分) (2) 每个类都输出相关数据的 toString 方法(10 分) (3) 使用 Test 类中的 main 方法定义各类初始化数据后台打印相关数据(10 分) 1810: (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(&&,&&) ),求输入的字符串
之间相隔的天数 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:输出字符串&ddejidsEFALDFfnef2357 3ed&里的大写字母数,小写英文字母数,非英文 字母数 11:输入一句 5 个字的话,然后将它逆序输出。例如: 原数组:我爱你中国 逆序输出:国中你爱我 提示:先声明一个字符串数组,每个汉字作为字符串数组的一个元素,然后再从数组末尾开 始循环输出。 12:利用随机数生成一个整数数组,数组中有 10 个元素,每个元素的值都在 0-9 之间,打 印该数组。 提示:使用 Math.random()方法可以生成一个随机小数 x(O&x&1) ,然后将生成的数扩大 10 倍后再求整,循环多次就可以生成一个整数数组。 19JavaSE 初级—第十八单元 JAVA 内存存储方式 1:java 对内存的划分分为几类?2:堆和栈的区别?3:写出 8 中基本数据类型的包装类。 20JavaSE 中级—第一单元:抽象类 1:抽象类和抽象方法之间的关系 定义抽象类和抽象方法的关键字是() 。抽象类中() (可以/不可以)有抽象方法, () (可以/不可以)有普通方法() (可以/不可以)有属性;一个类中定义了抽象方法,那这 个类() (必须/不必须)用 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 方法JavaSE 中级—第四单元:内部类 1:填空题 1)内部类(可以/不可以)了解外部类 2)静态内部类用修饰。 233)外部类(可以/不可以)通过类名访问静态内部类里的静态成员(变量和方法) 4)外部类(可以/不可以)通过类名访问非静态内部类里的成员(变量和方法) 5)非静态内部类可以访问外部类的成员,也能访问外部类的成员 6)静态内部类可以访问外部类的成员,不能访问外部类的成员 7)非静态内部类(可以/不可以)用 static 修饰她的成员(变量和方法) 2:纠错体 已知有下面类的说明: Public class First { P Static int b = 5; Public class Contents{ P S Public void f(){ System.out.println(a); System.out.println(b); } } Static class Titles{ P S Public void show(){ System.out.println(a); System.out.println(b); } } Public void getInnerClassDate(){ System.out.println(c);// System.out.println(d);// System.out.println(e);// System.out.println(f);// } Public static void main(String[] args) { } } 1)这个类定义有问题吗?如果有请找出。 2)在 main 方法中如何获得两个内部类的实例对象?并且访问内部类的方法,请写出代码 3:有一个 Car 类,有属性 temperature(温度),车内有 Air(空调),有吹风的功能 flow, Air 会监视车内的温度,如果温度超过 40 度则吹冷气。如果温度低于 0 度则吹暖气,如果 在这之间则关掉空调。实例化具有不同温度的 Car 对象,调用空调的 flow 方法,测试空调 吹的风是否正确 244:编一个类 A,在类中定义局部类 B,B 中有一个常量 name,有一个方法 show()打印常量 name。进行测试 5:设计公司类(Lenovo),有一个接口类 Works,里面有接口 work(),下面有 2 个部门(开 发部和销售部),使用内部类分别实现开发部和销售部的工作。 6:计算器具有 work 方法,功能是运算,时钟同样具有 work 方法,功能是计时,有一个手 机类 Cellphone,同时需要拥有运算和计时功能,通过内部类实现多继承效果。 7:有一个铃声接口类 Bell,有一个接口 sound,有一个手机类 Cellphone,具有闹钟功能 alarmclock,参数是 Bell 类型,测试手机类的闹钟功能,通过匿名内部类作为参数,打印: 懒猪起床了。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 是否 已改变JavaSE 中级—第七单元:集合(二) 1:定义一个 Collection 接口类型的变量, 引用一个 List 集合的实现类, 实现添加单个元素, 添加另一个集合,删除元素,判断集合中是否包含一个元素,判断是否为空,清除集合,返 回集合里元素的个数等常用操作。 2:创建 ArrayList 实例化对象,添加 10 个以上的元素,在 2 号位插入一个元素,获得 5 号 位元素,删除 6 号位元素,修改 7 号位的元素; 3:通过四种方法遍历 2 题中的集合 254:叙述 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%(通过取值实现) 5:创建有序的 map 集合的实例化对象,添加元素,查看排序结果 6:叙述 HashSet 和 HashMap 的性能选择7:封装一个新闻类,包含标题、作者、新闻内容和发布时间,新闻标题如下: 新闻一:中国多地遭雾霾笼罩空气质量再成热议话题 新闻二:民进党台北举行“火大游行” 新闻三:春节临近北京“卖房热” 新闻四:春节临近北京“卖房热” 完成如下要求(共 50 分,每小题 10 分) : 1)完成对新闻类的设计,要求在初始化新闻类对象时,通过构造传参的形式对新闻标 26题赋值,并要求实例化四个对象,标题内容如题。 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 集合的对象,添加几个字符串,反转对象中元素的顺序;根据元素的 自然顺序排序; 3:创建一个 List 集合的对象,添加几条数据,将 1 号位和 2 号位交换;获得最大值, 最小值, 4:分别创建 HashSet,ArrayList 和 HashMap 的实例化对象,通过这些实例化对象,分 别创建对应的同步对象 5:叙述主要集合实现类的遍历方法 6:按要求完成如下操作:每小题 10 分,共 50 分。 1) 生成 10 个随机数,值在 100 到 200 之间; 2) 将这十个数存入 HashSet 集合中(有可能集合的长度小于 10)。 3) 将这个 HashSet 集合转换成 ArrayList 集合 274) 重新为 ArrayList 集合排序,按照从小到大的顺序; 5) 使用 foreach 遍历集合; 7: 1 )封装一个汽车类,包含 String name、int speed 属性,在测试类中实例化三个 对象: c1, c2, c3, 分别设置 name 为: “奥拓” , “宝马” , “奔驰” , 速度分别设置为: 100,200,300 2 )使用 Map 集合对象 m1 将这三个汽车类对象保存成 key,然后将 int 型的汽车价钱 作为值保存在 m1 的 value 中,上述三款汽车分别对应的价钱是 , )遍历 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 的所有值。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 个汉字的长度。 283、按要求完成下列任务: 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(&这是个异常,不是错误&); } } 2:请仔细阅读下列测试代码,请问如何处理才能使程序正常输出“请告诉我这个异常是 什么?” ,并且打印错误或者异常信息? public class Test { public static void main(String[] args) { ArrayList al = new ArrayList(); al.add(&aaa&); al.add(&bbb&); al.add(&ccc&); al.add(&ddd&); al.add(5); for(Object o:al){ 29String 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:请编写程序举例抛出一个字符串索引越界异常JavaSE 中级—第十二单元:异常处理(二) 1:请编写程序举例说明,在数组索引越界异常中,如果只适用 try finally,捕获到的异常 不会被处理,程序仍然中断。 2:请创建一个遍历集合的方法, 3:public int m(){ try { return 1; }finally{ return 0; } } 当调用上述方法 m()时返回值是多少? 4:下面的代码合法吗? try { 30... } finally { ... } 5:下面的代码可以捕获何种异常?使用这种异常处理器有什么问题? catch (Exception e) { ... } 6:下面的处理器可以捕获什么异常? } catch (Exception e) { ... } catch (ArithmeticException a) { ... } 这个异常处理器中有错误吗?此代码能否被编译?JavaSE 中级—第十六、十七单元:数据库复习和 JDBC 1:编写超市库存查询系统 创建数据库:创建库存表:tblStorage,表创建完成后插入 3 条数据 表名 主键 sid sname sprice scount sdate Int Varchar Float Int Date 50 4 否 否 是 是 否 tblStorage 作用 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 (年龄)三个字段。 313)利用 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 数据库操作1) 创建数据库 school 库。 2) 创建 student 表,其中 Id 为主键并且自动增长 3) 创建 Score 表,Id 为主键并且自动增长,Stu_id 为外键,引用 student 表中的主 键(10 分) 4) 分别向两个表中插入以上数据 5) 查看成绩单中所有学生每门课程的总分,平均分; 7:Mysql 数据库 321) 创建数据库 school 库,创建 student 表,其中 Id 为主键并且自动增长 2) 创建 Score 表,Id 为主键并且自动增长,Stu_id 为外键,引用 student 表中的主 键 3) 分别向两个表中插入以上数据 4) 查找课程为“javase 初级”的考生姓名、出生日期、及成绩;8:数据库题1) 创建数据库 school 库,创建 student 表,其中 Id 为主键并且自动增长 2) 创建 Score 表,Id 为主键并且自动增长,Stu_id 为外键,引用 student 表中的主 键 3) 分别向两个表中插入以上数据 4) 查找 8 月份没有参加考试的学生姓名。 9:利用 JDBC 实现 ATM 机 表 account,主键 id 自增,账号 accountno,用户姓名 username,用户密码 userpass, 余额 money 1)采用合适的数据类型保存字段信息 332)在表中插入 5 条记录 3)存钱:在第一个账号存入 1000 4)取钱:从第三个账号中取 1000,如果余额不足,则不能取 5)查询:输入第四个记录对应的卡号和密码,查询其中的余额 6)修改密码:修改第五个记录的密码 7)转账:从第二个账号中取 2000,存入第三个账号 8)注意:要使用 JDBC,操作时要先验证卡号和密码是否和数据库中的一致。 34JavaSE 高级—第一单元: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 分) 35JavaSE 高级—第二单元:Java I/O 的分类以及使用(一) 1:先将“欢迎您来北京八维 3G 学院学习,高薪就业”写入到文件”hello.txt”中,再 读取该文件中的内容。2: 如果准备读取一个文件的内容, 应当使用 FileInputStream 流还是 FileOutputStream 流?3:编写一个应用程序,将用户从键盘输入的 10 个整数存入文件,再顺序读出。4:编写一个应用程序,要求将将一个 LinkedList&E&创建的对象写入到文件,再读出一 个 LinkedList&E&对象,并遍历 LinkedList&E&节点中的数据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.txt3:通过 Io 流实现 MP3 文件创建和复印功能 1) 判断 d:/歌曲.mp3 文件是否存在 2) 若不存在则创建 d:/歌曲.mp3 文件 创建完成后复制到 e:/歌曲.mp3 4:用(字节流)读取一张图片,读进来之后再输出到另一个文件中。 5: (字符流)读取一个文本文件,每次都追加一个“好” ,在文件结尾再追加“完毕” 。 6:使用 Java 的输入、 输出流将一个文本文件的内容按行读出, 每读出一行就顺序添加行 号,并写入到另一个文件中。 36JavaSE 高级—第四单元:Java I/O 的分类以及使用(三) 1:使用 RandomAccessFile 流将一个文本文件倒置读出。 2:使用 ObjectInputStream 类和 ObjectOutputStream 类有哪些注意事项?。 3:用缓冲字符流读入一个文件中的内容,并把内容输出到一个新的文件中。 4:在数据库中建表 student,字段(id,name,age)并插入几条数据,用 jdbc 读取所有 数据后输出到 D 盘的一个文本文件当中 5:使用输入流读取试题文件,每次显示试题文件中的一道题目。读取到字符“*”时暂 停读取,等待用户从键盘输入答案。用户做完全部题目后。程序给出用户的得分。 1) 试题内容如下: (1) 北京奥运是什么时间开幕的? A. B.
******************** (2) 下列哪个国家不属于亚洲? A.沙特 B.印度 C.巴西 D.越南 ******************** (3) 下列哪个国家最爱足球? A.刚果 B.越南 C.老挝 D.巴西 ******************** (4) 下列哪种动物属于猫科动物? A.鬣狗 B.犀牛 C.大象 D.狮子 ******************** 2)程序运行如下: (1) 北京奥运是什么时间开幕的? A. B.
输入选择的答案(A、B、C、D) :A (2) 下列哪个国家不属于亚洲? A.沙特 B.印度 C.巴西 D.越南 输入选择的答案(A、B、C、D) : 37JavaSE 高级—第五单元:多线程(一) 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 分) 38JavaSE 高级—第七单元:生产者消费者模式 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)服务器上保存了几个用户名和对应的密码;且能验证客户端发送过来的用户名和密码, 是否和保存的某个用户名和对应的密码一致. 392)客户端能连接到服务器,并把用户在键盘上输入的用户名和密码,发送到服务器上 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 和端口号发送给客户端 40b) 客户端依据服务器段返回的 IP 和端口号,利用 TCP 连接到服务器 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 分) 413) 通过 newInstance 的方法创建 File 对象,并创建 D:\mynew.txt 文件(20 分)JavaSE 常见面试题 3G 软件学院 42概念1. 作用域 public,private,protected,以及不写时的区别 AnonymousInnerClass(匿名内部类)是否可以 extends(继承)其它类,是否可以 implements(实现)interface(接口) 匿名的内部类是没有名字的内部类。不能 extends(继承)其它类,但一个内部类可以作为一 个接口,由另一个内部类实现。 2. StaticNestedClass 和 InnerClass 的不同 &NestedClass(一般是 C++的说法),InnerClass(一般是 JAVA 的说法)。Java 内部类与 C++ 嵌套类最大的不同就在于是否有指向外部的引用上。静态内部类(InnerClass)意味着 1 创建一个 static 内部类的对象,不需要一个外部类对象,2 不能从一个 static 内部类的一个对象访问一个外部类对象3. &和&&的区别&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。 &&还具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式,例如,对于 if(str!=null&&!str.equals(“”))表达式,当 str 为 null 时,后面的表达式不会执行,所以 不会出现 NullPointerException 如果将&&改为&,则会抛出 NullPointerException 异常。 If(x==33&++y&0)y 会增长,If(x==33&&++y&0)不会增长 &还可以用作位运算符,当&操作符两边的表达式不是 boolean 类型时,&表示按位与操作,我们 通常使用 0x0f 来与一个整数进行&运算,来获取该整数的最低 4 个 bit 位,例如,0x31&0x0f 的 结果为 0x014. Collection 和 Collections 的区别Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类, 他提供一系列静态方法实现对各种集合的搜索、 排序、 线程安全化等操作。5. 什么时候用 assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在 实现中,assertion 就是在程序中的一条语句,它对一个 boolean 表达式进行检查,一个正确 程序必须保证这个 boolean 表达式的值为 true;如果该值为 false,说明程序已经处于不正确 的状态下,assert 将给出警告或退出。一般来说,assertion 用于保证程序最基本、关键的正 确性。assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion 检 查通常是关闭的。 package com.huawei. public class AssertTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int i = 0; for(i=0;i&5;i++) 43{ System.out.println(i); } //假设程序不小心多了一句--i; --i; assert i==5; } } 6. Strings=newString(&xyz&);创建了几个 StringObject是 2 个不假。一个是编译时决定的,最后放在常量池中。一个是运行时放在堆里面的。两个都是 &xyz&。还有的,s 确实只是一个引用,本身不是对象。java 不是纯粹的面向对象,也就是说并 不是所有的都是对象,如基本类型等7. Math.round(11.5)等於多少?Math.round(-11.5)等於多少Math.round(11.5)==12 Math.round(-11.5)==-11 round 方法返回与参数最接近的长整数,8. shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错当然有错误, short 占 2 个字节, int 占 4 个字节, short 型变量+上 int 型值计算结果是 int 型, 占 4 个字节,然后付给一个 short 型变量 s1,就要丢失 2 个字节的精度,这是不容许的。你非 要这么做的话,我给你提供一个办法: s1=s1+1;改成 s1+=1;虽然是一个意思,但是在 jvm 里面是不同的方法做的,是运算符重载, 所以是不一样的。9. Java 有没有 goto保留关键字10. 数组有没有 length()这个方法?String 有没有 length()这个方法数组没有 length()这个方法,有 length 的属性。String 有 length()这个方法11. 给我一个你最常见到的 runtimeexception常见的运行时异常有如下这些 ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowExce ption,CannotRedoException,CannotUndoException,ClassCastException,CMMException,Concu rrentModificationException,DOMException,EmptyStackException,IllegalArgumentExceptio n,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,Imag ingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySize Exception,NoSuchElementException,NullPointerException,ProfileDataException,Provider Exception,RasterFormatException,SecurityException,SystemException,UndeclaredThrowab leException,UnmodifiableSetException,UnsupportedOperationException12. error 和 exception 有什么区别error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程 序能处理这样的情况。exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正 常,从不会发生的情况13. abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 synchronized都不可以,因为 abstract 申明的方法是要求子类去实现的,abstract 只是告诉你有这样一个接 口,你要去实现,至于你的具体实现可以是 native 和 synchronized,也可以不是,抽象方法是 44不关心这些事的, 所以写这两个是没有意义的。 然后, static 方法是不会被覆盖的, 而 abstract 方法正是要子类去覆盖它,所以也是没有意义的。所以,总的来说,就是 java 语法不允许你这 样做,事实上,也没有意义这样做。14. 接口是否可继承接口 ?抽象类是否可实现(implements)接口?抽象类是否可继承实体类 (concreteclass)1)接口可以继承接口..但是要使用 extends~而不是用 implements 如:interfacea{}interfacebextendsa{} 2)抽象类可以实现接口..比如 java.util 中的 AbstractCollection 类就是实现的 Collection 接口 3)抽象类可以继承实体类下面这段执行无误的代码说明的所有的问题15. 一个类实现接口,里面都变量 S 接口中 a=xxxx 子类中是 a=yyyy 在子类中输出 a=多少 16. 构造器 Constructor 是否可被 override构造器 Constructor 不能被继承,因此不能重写 Override,但可以被重载 Overload17. 是否可以继承 String 类String 类是 final 类故不可以继承。18. try{}里有一个 return 语句 try{}里有一个 return 语句, 那么紧跟在这个 try 后的 finally{}里的 code 会不会被执行, 什么时候被执行,在 return 前还是后根据 java 规范: 在 try-catch-finally 中, 如果 try-finally 或者 catch-finally 中都有 return, 则两个 return 语句都执行并且最终 返回到调用者那里的是 finally 中 return 的值;而如果 finally 中没有 return,则理所当然的 返回的是 try 或者 catch 中 return 的值,但是 finally 中的代码是必须要执行的,而且是在 return 前执行,除非碰到 exit()。19. 用最有效率的方法算出 2 乘以 8 等於几用移位运算 inta=2&&3; a 就是 2 乘以 8 最后结果是 16 这是最省内存最有效率的方法 这个方法确实高效率的。我来解释一下: 2 的二进制是 10 在 32 位存储器里面是 0010 左移三位后变成 0000 也就是 1620. 当一个对象被当作参数传递到一个方法后 当一个对象被当作参数传递到一个方法后, 此方法可改变这个对象的属性, 并可返回变化后 的结果,那么这里到底是值传递还是引用传递是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时, 参数的值就是对该对象的引用。 对象的内容可以在被调用的方法中改变, 但对象的引用是永远不 会改变的。21. swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上 传递给 switch 和 case 语句的参数应该是 int、short、char 或者 byte。long,string 都不能作 用于 swtich22. List,Set,Map 是否继承自 Collection 接口List 和 Set 是继承自 Collection 接口的接口, Set 不允许重复的项目, List 允许重复项目, Set 接口派生的类有 TreeSet,HashSet,LinkedHashSet。List 接口派生的类有 ArrayList,Vector 45等。Map 是独立的接口,不继承 Collection 接口23. ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别答:就 ArrayList 与 Vector 主要从二方面来说. 1)同步性:Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程序不安全的,不是 同步的 2)数据增长:当需要增长时,Vector 默认增长为原来一培,而 ArrayList 却是原来的一半 就 HashMap 与 HashTable 主要从三方面来说。 3) 历史原因:Hashtable 是基于陈旧的 Dictionary 类的, HashMap 是 Java1.2 引进的 Map 接口的 一个实现 1)同步性:Hashtable 是线程安全的,也就是说是同步的,而 HashMap 是线程序不安全的,不是 同步的 2)值:只有 HashMap 可以让你将空值作为一个表的条目的 key 或 value24. 说出 ArrayList,Vector, LinkedList 的存储性能和特性 ArrayList 和 Vector 都是使用数组方式存储数据, 此数组元素数大于实际存储的数据以便增加 和插入元素, 它们都允许直接按序号索引元素, 但是插入元素要涉及数组元素移动等内存操作, 所以索引 数据快而插入数据慢, Vector 由于使用了 synchronized 方法(线程安全) ,通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储, 按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可, 所以插入速度较快。 25. char 型变量中能不能存贮一个中文汉字?为什么char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char 型变量中当然可以存储汉字啦。 不过, 如果某个特殊的汉字没有被包含在 unicode 编码字符集中, 那么,这个 char 型变量中就不能存储这个特殊汉字。补充说明:unicode 编码占用两个字节, 所以,char 类型的变量也是占用两个字节。26. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗 有什么办法主动通知虚拟机进行垃圾回收对于 GC 来说,当程序员创建对象时,GC 就开始监控这个对象的地址、大小以及使用情况。通常, GC 采用有向图的方式记录和管理堆(heap)中的所有对象。 通过这种方式确定哪些对象是&可达的 &,哪些对象是&不可达的&。当 GC 确定一些对象为&不可达&时,GC 就有责任回收这些内存空间。 可以。程序员可以手动执行 System.gc(),通知 GC 运行,但是 Java 语言规范并不保证 GC 一定 会执行。27. 垃圾回收的优点和原理。并考虑 2 种回收机制。Java 语言中一个显著的特点就是引入了垃圾回收机制, 使 c++程序员最头疼的内存管理的问题迎 刃而解, 它使得 Java 程序员在编写程序的时候不再需要考虑内存管理。 由于有个垃圾回收机制, Java 中的对象不再有&作用域&的概念,只有对象的引用才有&作用域&。垃圾回收可以有效的防 止内存泄露, 有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行, 不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收, 程序员不 能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和 标记垃圾回收,增量垃圾回收。28. float 型 floatf=3.4 是否正确不正确。精度不准确,应该用强制类型转换,如下所示:floatf=(float)3.4 或 floatf=3.4f 在 java 里面,没小数点的默认是 int,有小数点的默认是 4629. 介绍 JAVA 中的 CollectionFrameWork(包括如何写自己的数据结构)Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素 (Elements) Map 提供 key 到 value 的映射 事务属性 ACID 答:原子性——一个事务要么完全执行,要么根本不执行。 一致性——一个事务在它完成后不能留下系统的不一致性。 隔离性——所有的事务不许允许在执行的时候不受其他进程或者事务的干涉。 持久性——在事务期间, 所有提交的变更数据必须写入持久的数据存储器, 并且应该能在硬件和 软件失效中保存下来。30. 实体 Bean 的三个状态:答:no-state——Bean 实例还没有创建。 pooled——Bean 实例被创建,但还没有和一个 EJBObject 关联。 ready——与 EJBObject 相关联。若断开关联则回到 pooled。31. JDBC 连接数据库 6 步LoadtheJDBCDriver EstablishtheDatabaseConnection CreateaStatementObject ExecuteaQuery ProcesstheResults ClosetheConnection32. 事务的 4 大特性答:原子性 A,一致性 C,隔离性 I,永久性 D33. 查询语句之间的区别selectcount(*)fromstudent 和 selectcount(id)fromstudent 之间的区别。 答案: selectcount(*)统计所有学生的记录个数,包括空记录。 Selectcount(Id)统计所有学生的记录个数,不包括 null 记录。34. 假设现在有表 system.table1 假设现在有表 system.table1,表中有三个字段:id(数值型)、name(字符型)、age(数 值型)写出 SQL 语句完成如下功能:在表中查出年龄大于 20,且名字以“王”开头的记录, 并且按照年龄的倒叙排列出来(年龄大的在前面)。答案: 47Select*fromsystem.table1whereage&20andnamelike‘王%’orderbyageDESC;35. 创建 CUSTOMERS 表 创建 CUSTOMERS 表,字段为:ID:(非空,主键)bigint,NAME:(非空)varchar,AGE: int 类型;创建 ORDERS 表,字段为:ID:(非空,主键,)bigint,ORDER_NUMBER:(非 空)varchar,PRICE:double,CUSTOMER_ID:(外键)bigint,设置级连删除;答案:createtableCUSTOMBERS( IDbigintnotnull, NAMEvarchar(15), AGEint, primarykey(ID) ); createtableORDERS( IDbigintnotnull, ORDER_NUMBERvarchar(15)notnulll, PRICEdoubleprecision, CUSTOMER_IDbigint, primarykey(ID), ); altertableORDERSaddconstraintFK_CUSTOMERforeignkey(CUSTOMER_ID)referencesCUSTOMERS( ID)36. 使用左外连接查询,ORDERS 和 CUSTOMERS 表,答案: selectc.ID,o.CUSTOMER_ID,c.NAME,o.IDORDER_ID,ORDER_NUMBERfromCUSTOMERScleftouterjoi nORDERSonoc.ID=o.CUSTOMER_ID;37. 简述数据库事务的生命周期?(可画流程图)答案:38. deletefromtablea&truncatetabletablea 的区别truncate 语句执行速度快,占资源少,并且只记录页删除的日志; delete 对每条记录的删除均需要记录日志39. 什么是 WebService?WebService 就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接 口。 WebService 所使用的是 Internet 上统一、开放的标准,如 HTTP、XML、SOAP(简单对象访问协 议) 、WSDL 等,所以 WebService 可以在任何支持这些标准的环境(Windows,Linux)中使用。 注:SOAP 协议(SimpleObjectAccessProtocal, 简单对象访问协议),它是一个用于分散和 分布式环境下网络信息交换的基于 XML 的通讯协议。 在此协议下, 软件组件或应用程序能够通过 标准的 HTTP 协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台 之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。 优势: (1).跨平台。 (2).SOAP 协议是基于 XML 和 HTTP 这些业界的标准的,得到了所有的重要公司的支持。 (3).由于使用了 SOAP,数据是以 ASCII 文本的方式而非二进制传输,调试很方便;并且由 于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个“漏洞” 。 (4).此外,WebService 实现的技术难度要比 CORBA 和 DCOM 小得多。 48(5).要实现 B2B 集成,EDI 比较完善与比较复杂;而用 WebService 则可以低成本的实现, 小公司也可以用上。 (6).在 C/S 的程序中,WebService 可以实现网页无整体刷新的与服务器打交道并取数。 缺点: (1).WebService 使用了 XML 对数据封装,会造成大量的数据要在网络中传输。 (2).WebService 规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点, 它不如 CORBA。40. 运行时异常与一般异常有何异同?异常表示程序运行过程中可能出现的非正常状态, 运行时异常表示虚拟机的通常操作中可能遇到 的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常, 但是并不要求必须声明抛出未被捕获的运行时异常。41. 说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别。Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的 时候调用其 destroy 方法。 与 cgi 的区别在于 servlet 处于服务器进程中, 它通过多线程方式运行其 service 方法, 一个实 例可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完 成后就销毁,所以效率上低于 servlet。42. 同步和异步有何异同,在什么情况下分别使用他们?举例说明。如果数据将在线程间共享。 例如正在写的数据以后可能被另一个线程读到, 或者正在读的数据可 能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法, 并且不希望让程序等待方法的 返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。43. heap 和 stack 有什么区别栈是一种线形集合, 其添加和删除元素的操作应在同一段完成。 栈按照后进先出的方式进行处理。 堆是栈的一个组成元素44. forward 和 redirect 的区别forward 是服务器请求资源, 服务器直接访问目标地址的 URL, 把那个 URL 的响应内容读取过来, 然后把这些内容再发给浏览器, 浏览器根本不知道服务器发送的内容是从哪儿来的, 所以它的地 址栏中还是原来的地址。 redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏 览器会用刚才请求的所有参数重新请求,所以 session,request 参数都可以获取。45. 说出数据连接池的工作机制是什么J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序 需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接, 池驱动程序就新建一定数量的连接, 新建连接的数量有配置参数决定。 当使用的池连接调用完成 后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。46. Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢 是用==还是 equals()?它们有何区别1)什么是 Set?(what) Set 是 Collection 容器的一个子接口, 它不允许出现重复元素, 当然也只允许有一个 null 对象。 2)如何来区分重复与否呢?(how) “用 iterator()方法来区分重复与否”,这是在网上流传的答案,个人认为这是个错误的答案。 JPI 中写的很明白:“set 不包含满足 49e1.equals(e2)的元素对 e1 和 e2”,由此可见回答使用 equals()区分更合适。 3)为什么用 equals()而不用==来区分?(why) 应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而 equals 是用来判 断是否引用同一个对象。再看一下 Set 里面存的是 对象,还是对象的引用。根据 java 的存储机制可知,set 里面存放的是对象的引用,所以当两 个元素只要满足了 equals()时就已经指向同一个对象, 也就出现了重复元素。所以应该用 equals()来判断。47. 两个对象值相同(x.equals(y) == true) ,但却可有不同的 hash code,这句话对不对 对。 如果对象要保存在 HashSet 或 HashMap 中,它们的 equals 相等,那么,它们的 hashcode 值 就必须相等。 如果不是要保存在 HashSet 或 HashMap,则与 hashcode 没有什么关系了,这时候 hashcode 不等是可以的,例如 arrayList 存储的对象就不用实现 hashcode,当然,我们没有理由不实 现,通常都会去实现的。 48. 重写 equals()方法的时候,我们还需要重写哪个方法?为什么 每个覆盖了 equals 方法的类中,也必须覆盖 hashCode 方法。 如果不这样的话,就会违反 Object.hashCode 的通用约定,从而导致该类无法结合所有基于 散列的集合一起正常运作,这样的集合包括 HashMap、HashSet 和 Hashtable。 49. 当一个对象被当作参数传递到一个方法后此方法可改变这个对象的属

我要回帖

更多关于 javase项目聊天室 的文章

 

随机推荐