《Java程序设计案例教程课后习题答案汇总(龙浩)第1--8章java编程语言入门--JDBC.pdf》由会员分享,可在线阅读,更多相关《Java程序设计案例教程课后习题答案汇总(龙浩)第1--8章java编程语言入门--JDBC.pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、J a v a 程序设计案例教程 课后习题答案第 1 章 J a v a 开发入门一.填空题1.面向对象,SUN2.JavaSE,JavaEE,JavaME3.面向对象、跨平台性、支持多线程4.JDK5.bin目录二.选择l.C 2.ABCD 3.D 4.D 5.B三.简答1.path环境变量是系统环境变量中的一种,它用于保存一系列可执行文件的路径,每个路径之间以分号分隔。当在命令行窗口运行一个可执行文件时,操作系统首先会在当前目录下查找是否存在该文件,如果不存在会继续在path环境变量中定义的路径下去寻找这个文件,如果仍未找到,系统会报错。2.Java程序运行时,必须经过编译和运行两个步骤。
2、首先将后缀名为Java的源文件进行编译,生成后缀名为.class的字节码文件,然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。四.编程HelloWorld.javapublic class HelloWorld public static void main(String args)System.out.printIn(这是第一个 Java 程序!);)第 2 章 J a v a 编程基础一.填空题1.class2.单行注释、多行注释、文档注释3.基本数据、引用数据4.&、&、|,|5.容器、06.47.强制8.129.小写二.判断1.错2.错 3.对 4.对 5.对 6.对 7
3、.对三.选择1.D 2.B 3.C 4.A 5.C 6.D 7.A 8.B 9.A四.简答1.Java语言的八种基本数据类型有:byte字节型,占一个字节。short短整型,占两个字节。int整型,占4 个字节。long长整型,占8 个字节。float单精度浮点型,占4 个字节。double双精度浮点型,占8 个字节。char字符型,占两个字节。boolean型,表示逻辑值,有 true和 false两个值,分别占一个字节。2.在 switch条件语句和循环语句中都可以使用break语句。当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。当它出现在循环语句中,作
4、用是跳出循环语句,执行循环后面的代码;continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。3.&和&都可以用作逻辑与的运算符,表示逻辑与(a n d),当运算符两边的表达式的结果都为true时,整个运算结果才为tru e,否则,只要有一方为false,则结果为false。当运算符“&”和&”的右边为表达式时,使用“&”进行运算,不论左边为true或者false,右边的表达式都会进行运算。如果使用“&”进行运算,当左边为false时,右边的表达式则不会进行运算,因此“&”被称作短路与。五.编程1.参考答案public class getSum public static
5、void main(String args)int sum=0;for(int i=100;i=300;i+)if(i%2=0)sum+=i;)System.out.printin(sum);)2.参考答案public class Example28 public static void main(String args)int arr=22,24,76,12,21,33);int min=getMin(arr);System.out.printin(nmin=H+min);static int getMin(int arr)int min=arr0;for(int x=1;x arr.len
6、gth;x+)if(arrx c&b+ca&a+cb)if(a=b&a=c)System.out.printin(DB“);)else if(a=b|b=c|a=c)System.out.printin(DYn);)else if(a*a+b*b=c*c)I|(b*b+c*c=a*a)I I (a*a+c*c=b*b)System.out.printin(ZJn);)else System.out.printin(YB);)else System.out.printin(NO);4.参考答案public class Example04 public static void main(Strin
7、g args)int num,iz count=0;for(num=101;num=200;num+)for(i=2;inum;i+)if(num%i=0)break;)if(i=num)count+;System.out.print(num+n);if(count%10=0System.out.printin();)5.参考答案public class Example05 public static void main(String args)int wan,qian,shi,ge,count=0;for(int num=10000;num protected、public4.static5
8、.private二、判断题1 .错2.错3.对4.对5.对6.对7.错8.对9.对10.错三、选择题I.D2.A3.D4.A5.C6.B7.B四、简答题1.封装、继承、多态面向对象的特点主要可以概括为封装性、继承性和多态性。其中封装是面向对象核心思想”,”将对象的属性和行为封装起来“,”不需要让外界知道具体实现细节,这就是封装思想。继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,”对原有类的功能进行扩展。多态性指的是在程序中允许出现重名现象,”它指在一个类中定义的属性和方法被其它类继承后“,“它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在
9、不同的类中具有不同的语义。2.在Java中,定义在类中的变量被称为成员变量。定义在方法中的变量被称为局部变量。如果在某一个方法中定义的局部变量与成员变量同名,这种情况是允许的。此时,在方法中通过变量名访问到的是局部变量,而并非成员变量。五、编程题1.class Personpublic Person()System.ouJ printing无参的构造方法被调用了.”);)public class TestOl public static void main(String args)Person p=new Person();)2.Student.java1 public class Stude
10、nt private String sNo;2private String sName;3private String sSex;4private int sAge;5private int sJava;6/getter&setter 方 法7public String getsNo()8return sNo;9)10public void setsNo(String sNo)11this.sNo=sNo;12)13public String getsName()14return sName;15)16public void setsName(String sName)17this.sName
11、=sName;18)19public String getsSex()20return sSex;21)22public void setsSex(String sSex)23this.sSex=sSex;24)25public int getsAge()26return sAge;27)28public void setsAge(int sAge)29this.sAge=sAge;30)31public int getsJava()32return sJava;333435363738394041424344454647484950515253545556575859606162636465
12、6667686970public void sets Java(mt s Java)this.sJava=sJava;)public Student(String sNo,String sName,String sSex,sJava)this.sNo=sNo;this.sName=sName;this.sSex=sSex;this.sAge=sAge;this.sJava=sJava;int sAge,intTest.javapublic class Test public static void main(String args)Student students=new Student5;s
13、tudents0=newstudents1=newstudents2 =newstudents3=newStudent(220110,Student(,220111n.Student(220112,Student(2201130,“Tom”,“男“,18,“Tohm“,“男“,18Tomf,“女,18,WTom,“男“,18students4new Student(“220114”,seTom,“男”,85);,82);,79);,85);,90);int sum=0;int average=0;int max=students0.getsJava();int min=students0.ge
14、tsJava();for(Student student:students)int java=student.getsJava();sum+=java;if(max java)min=java;)average=sum/(students.length);System.out.print In(Java 语言的平均成绩是:n+average);System.out.print In(Java 语言成绩的最大值是:n+max);System,out.print In(Java 语言成绩的最小值是:n+min);71)第4章 面 向 对 象(下)一、填空题1.12.重写3.final4.insta
15、nceof5.Implements6.编译时异常7.RuntimeException8.逗号二、判断题1.对2.对3.错4.对5.错6.对7.对8.错9.对10.错三、选择题1.B2.D3.D4.D5.B6.D7.C8.B9.B10.D11.C四、简答题1.抽象类和接口有如下区别:1)抽象类可以有构造方法,接口中不能有构造方法。2)抽象类中可以有普通成员变量,接口中没有普通成员变量。3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4)抽象类中的抽象方法的访问类型可以是public,protected和(默认类型),但接口中的抽象方法只能是publi
16、c类型的,并且默认即为public abstract类型。5)抽象类中可以包含静态方法,接口中不能包含静态方法。6)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认为public static final类型。7)一个类可以实现多个接口,但只能继承一个抽象类。2.在类的继承中需要注意的问题:I).在 Java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类;2).多个类可以继承一个父类;3).在 Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类;4)
17、.在 Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。五、编程题1.(1)abstract public class Animalpublic String name;public int age;public double weight;public void showinfo()System,out.printin(动物名为+name+”,年龄为+age+”岁,重量为“+weight);)abstract public void move();abstract public void eat();)(2)public class Bird e
18、xtends Animal public Bird(String name,int age,double weight)this.name=name;this age=age;this.weight=weight;)public void showinfo()System.out.printin(“鸟名为“+name+”,年龄为“+age+”岁,重量为“+weight);Overridepublic void move()System.out.printin(name+”用翅膀在天空上匕”);)Overridepublic void eat()System,out.printin(name+”
19、喜欢吃虫子”);)(3)public class TestAnimal public static void main(String args)Animal bird=new Bird(麻雀”,1,0.3);bird.showinfo();bird.move();bird.eat();2.Employee.java72 abstract class Employee73 private String name;定义姓名name并私有化属性74 private int month;定义生日月份month并私有化属性75 public Employee()无参构造器76 public Employ
20、ee(String name,int month)/有参构造方法77 this.name=name;给属性name初始化赋值78 this.month=month;给属性 month 初始化赋值79 80/获取属性name的方法81 public String getName()82 return name;/返回 name 属性83)84/获取属性month的方法85 public int getMonth()86 return month;/返回 month 属性87 88/给属性name赋初始值89 public void setName(String name)90 this.name
21、=name;/本类中的属性 name91 92 给属性month赋初始值93 public void setMonth(int month)94 this.month=month;/本类中的属性 month95)96/创建getSalary()方法计算工资,参数month是月份,如果当月是员工生日,奖励100元97 public double getSalary(int month)98 double salary=0;/定义工资变量99/判断当前月份是否是员 工的生日月份,如果是奖励100元100 if(this.month=month)101salary=salary+100;102ret
22、urn salary;/返回工资 salary103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141)SalariedEmployee.javaclass SalariedEmployee extends Employeeprivate double monthsalary;/封装 monthsalary 属性public SalariedEmployee()无参构造方法/有参构造方法 参数 姓名生日月份 月薪pub
23、lic SalariedEmployee(String name,int month,double monthSalary)super(name,month);/调用父类有参构造方法this.monthSalary=monthSalary;为属性 monthSalary 初始化赋值获取monthSalary的值public double getMonthSalary()return monthSalary;给 monthSalary 赋值public void setMonthSalary(double monthSalary)this.monthSalary=monthSalary;/覆盖父
24、类中的方法public double getSalary(int month)定义工资变量double salary=monthSalary+super.getSalary(month);return salary;)HourlyEmployee.javaclass HouriyEmployee extends Employeeprivate double hourlySalary;/定义属性 hourlySalary 每小时的工资private int hours;/定义属性hours每月工作的小时数public HourlyEmployee()/无参构造方法/有参构造方法 参数姓名生日月份
25、 每小时的工资每月工作的小时数public HourlyEmployee(String name,int month,double hourlySalary,inthours)super(name,month);调用父类有参构造方法this.hourlySalary=hourlySalary;/为属性 hourlySalary 初始化赋值this.hours=hours;/为属性hours初始化赋值public double getHourlySalary()/获取 hourlySalary 的值return hourlySalary;142public int getHours()/获取ho
26、urs的值143return hours;144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183定义set方法设置hourlySalary hours的值public void setHourlySalary(double hourlySalary)this.hourlySalary=hourlySalary;public void setHourly(int hours)this.hours=hours;/覆
27、盖父类方法public double getSalary(int month)if(hours 0)/如果工作小时数小于0输出数据错误System.out.printin(数据错误”);return 0;小于160个小时的按照每个月的工作小时数乘以每小时的工资else if(hours=160)return hourlySalary*hours+super.getSalary(month);/超出160个小时的小时数按照1.5倍计算else return hourlySalary*160+hourlySalary*l.5*(hours-160)+super.getSalary(month);)
28、SalesEmployee.javaclass SalesEmployee extends Employeeprivate double sales;定义销售额 salesprivate double rate;/定义提成率 ratepublic SalesEmployee()public SalesEmployee(String name,int month,double sales,double rate)super(name,month);this.sales=sales;this.rate=rate;public double getSales()return sales;)publi
29、c double getRate()return rate;)public void setSales(double sales)this.sales=sales;)public void setRate(double rate)184this.rate=rate;185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218public double getSalary(mt month)return this.getSales()*(1+this.g
30、etRate()+super.getSalary(month);)BasePlusSalesEmployee.javaclass BasePlusSalesEmployee extends SalesEmployeeprivate double baseSalary;/定义基石出工资 baseSalary/无参构造方法public BasePlusSalesEmployee()/有参构造方法public BasePlusSalesEmployee(String name,int month,double sales,doublerate,double baseSalary)super(name
31、,month,sales,rate);this.baseSalary=baseSalary;/get/set方法对私有属性的调用和设置public double gatBaseSalary()(return baseSalary;)public void setBaseSalary()this.baseSalary=baseSalary;public double getSalary(int month)return baseSalary+super.getSalary(month);Test.java定义一个测试类public class Testpublic static void mai
32、n(String args)/声明一个Employee类型的数组,并创建不同子类型的对象Employee employee=new SalariedEmployee(“张三”,1,6000),newHourlyEmployee(“李 四”,2,50,180),new SalesEmployee(“王五”,3,6500,0.15),new BasePlusSalesEmployee(赵六”,4,5000,0.15,2000);/打印每个员工的工资for(int i=0;i employee.length;i+)System.out.printIn(Math.round(employeei.get
33、Salary(10);)219)第 5 章 J a v a A P I填空1.String StringBuffer2.length()3.Math.abs();4.随机产生数字5.String、StringBuffer 和 StringBuilder5.Long字段 标准Java计算时代(就是1970年 1月 1 日开始)纳秒数判断1.错 2.错 3.错 4.对三.选择l.B 2.C 3.A 4.A 5.A四.简答1.String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer表示字符容器,其内容和长度可以随时修改。在操作字符串时,如果该字符串仅用于表示
34、数据类型,则 使 用 String类即可,但是如果需要对字符串中的字符进行增删操作,则使用 StringBuffer 类。String 类覆盖了 Object 类的 equals。方法,而 StringBuffer 类没有覆盖Object类的equals。方法。String类对象可以用操作符+进行连接,而 StringBuffer类对象之间不能。2.包装类和基本数据类型在进行转换时,引入了装箱和拆箱的概念,其中装箱是指将基本数据类型的值转为引用数据类型,反之,拆箱是指将引用数据类型的对象转为基本数据类型。五.编程I.参考答案import java.util.Random;public clas
35、s TestOl public static void main(String args)Random r=new Random();/准备一个长度为5的一维数组int(arr=new int5;for(int i=0;Karr.length;i+)arri=-l;)int index=0;while(index5)int a=r.nextInt(100)+1;,if(!contains(arr,a)arrindex+=a;)for(int i:arr)System.out.printIn(i);)public static boolean contains(int arr,int key)f
36、or(int i=0;i=0;i)if(chi=A*&chi=&chi LinkedList,HashSet TreeSet,HashM叩、TreeMap4.Key、Value5.数组判断1.错2.对3.错4.对5.对三.选择l.BC2.B3.ABCD4.D5.B6.C四.简答1.List的特点是元素有序、可重复。List接口的主要实现类有ArrayList和LinkedListo Set的特点是元素无序、不可重复。Set接口的主要实现类有HashSet和TreeSeto M ap的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接口的主要实现类有HashM
37、ap和 TreeMap。2.由于ArrayList集合的底层是使用一个数组来保存元素,在增加或删除指定位置的元素时,会导致创建新的数组,效率比较低,因此不适合做大量的增删操作。但这种数组的结构允许程序通过索引的方式来访问元素,因此使用ArrayList集合查找元素很便捷。五.编程1.参考答案1 import java.util.*;2 class Teacher 3 private int age;4 private String name;5 public Teacher(int age,String name)6 this.age=age;7 this.name=name;89101112
38、1314151617181920212223public String toString()return age+H +name;public int hashCode()return name.hashCode()+age;)public boolean equals(Object obj)if(this=obj)return true;if(!(obj instanceof Teacher)return false;Teacher stu=(Teacher)obj;return this.name.equals(stu.name)&this.age=stu.age;24 public cl
39、ass Test 25 public static void main(String args)26 HashSet hs=new HashSet();27 hs.add(new Teacher(18,zhangsan);28 hs.add(new Teacher(20z lisa);29 hs.add(new Teacher(20,lisa”);30 System.out.printIn(hs);31)32)第 7 章多线程填空1.Thread Runnable2.新建状态(N ew)、就绪状态(Runnable)、运行 状 态(Running)3.start()run()方法4.sleep
40、()5.synchronized二.判断L错 2.错 3.对 4.对 5.对 6.错 7.错 8.对三.选择l.C 2,B 3.C 4.C 5.D 6.BC 7.C四.简答1.一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在 run()方法中实现运行在线程上的代码。1 new Thread()2 public void run()3.start();另一种就是实现java.lang.Runnable接口,同样是在run()方法中实现运行在线程上的代码。4 class MyThread implements Runnable5 public void ru
41、n()6 2.同步代码块的作用是控制线程,保证同步代码块中只能有一个线程在运行,保证了多线程操作数据的安全性。五.编程1.参考答案class MyRunner implements Runnableprivate String str=nabcdefghijklmnopqrstuvwxyz;char ch=str.toCharArray();Object obj=new Object();private int i=0;Overridepublic void run()while(true)synchronized(obj)if(i=26)break;System.out.printin(Th
42、read.currentThreadO.getName()+:n+chi);i+;)try Thread.sleep(100);catch(InterruptedException e)e.printStackTrace();)public class TestOl public static void main(String args)MyRunner r=new MyRunner();Thread tl=new Thread(r,”线程 1:n);Thread t2=new Thread(r,”线程 2:n);tl.start();t2.start();2.参考答案1 public cla
43、ss TestOl(2 public static void main(String args)3 Teacher t=new Teacher();4new Thread(t,“陈老师”).start();5new Thread(t,“高老师”).start();6new Thread(t,“李老师”).start();7 8)9 class Teacher implements Runnable 10 private int notes=50;11 public void run()12 while(true)13 dispatchNotes();14 if(notes 0)21 try(2
44、2 Thread,sleep(10);/经过的线程休眠10毫秒23 catch(InterruptedException e)24e.printStackTrace();25)26果“27System.out.printin(Thread.currentThread().getName()+发出的苹+notes-);2829)30)第 8章J D B C一、填空题1.java.sql.DriverManager2.classpath3.update4.预编译5.1二、判断题1.错2.错3,对4.错5.错三、选择题1.A2.D3.A4.B5.B6.C7.AC8.A9.ABCD四、简答题1.参考答
45、案:(1)加载并注册数据库驱动;(2)通过DriverManager获取数据库连接;(3)通过Connection对象获取Statement对象;(4)使用Statement执行SQL语句;(5)操作ResultSet结果集;(6)回收数据库资源。2.参考答案PreparedStatement接口继承自Statement接口,它具有Statement接口的所有方法,同时也添加了一些新方法。其区别主要有一下两点:1)PreparedStatement接口包含己编译的SQL语句,而 Statement接口没有。2)PreparedStatement接口中的SQL语句可包含若干个参数,也可用?”占位符,而Statement 没有。