Java程序设计实用教程第2版ans_第1页
Java程序设计实用教程第2版ans_第2页
Java程序设计实用教程第2版ans_第3页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、习题 11. James Gosling2. 需 3个步骤 :1) 用文本编辑器编写源文件。2) 使用 javac 编译源文件 ,得到字节码文件。3) 使用解释器运行程序。3. set path=D:jdkbin;set classpath=D:jdkjrelibrt 、jar; 、;4. B)javac、 exe5. java 与 class6. D) public static void main (String args )习题 21. B) int_long, D) $Boy262.【代码 1】 , 【代码 3】就是错误的3. float常量必须用F或f为后缀。double常量用D或d

2、为后缀,但允许省略后缀。4.public class E public static void main(String args) System、 out 、println(int)'思');System、 out 、println(int)'故');System、 out 、println(int)'乡');习题31.110if-else 语句书写的不够规范?2 、 不正正歪 !3.public class Xiti3 void giveMess(int number) if(number=9|number=131|number=12) Sys

3、tem、out 、println(number+" 就是三等奖 ");else if(number=209|number=596|number=27) System、 out、 println(number+" 就是二等奖 ");else if(number=875|number=316|number=59) System、 out、 println(number+" 就是一等奖 ");elseSystem、 out、 println(" 未中奖 ");4.public class Xiti4 public sta

4、tic void main (String args ) char cStart='a ',cEnd='刃'for(char c=cStart;c<=cEnd;c+)System、out 、printf("%2c",c); System、 out、 println();for(char c=cStart;c<=cEnd;c+)System、out 、printf("%2c",(c+32);5.public class Xiti5 public static void main(String args) doub

5、le sum = 0,item = 1;int i = 1,n = 20;while(i<=n) sum = sum+item; i = i+1; item = item*i;System、 out、 println("sum="+sum);6.public class Xiti6 public static void main(String args) int sum=0,i,j;for(i=1;i<=1000;i+) for(j=1,sum=0;j<i;j+) if(i%j=0) sum=sum+j;if(sum=i)System、out、printl

6、n(" 完数 :"+i);public class Xiti7 public static void main(String args) int n=1,i=1,jiecheng=1;long sum=0;while(true) jiecheng=1;for(i=1;i<=n;i+) jiecheng=jiecheng*i; sum=sum+jiecheng; if(sum>9999) break;n+;System、 out、 println(" 满足条件的最大整数 :"+(n-1);习题41. 用类创建对象时。2. 一个类中可以有多个方法

7、具有相同的名字 , 但这些方法的参数必须不同 , 即或者就是参数 的个数不同 , 或者就是参数的类型不同。可以。3. 可以 。 不可以。4. 不可以。5. 一个类通过使用 new 运算符可以创建多个不同的对象 ,不同的对象的实例变量将被分配不 同的内存空间。所有对象的类变量都分配给相同的一处内存,对象共享类变量。6. CD。7. 【代码 1】【代码 4】。8. sum=-100 。9、27。10. 100 与 20、 0。习 题 51. 如果子类与父类在同一个包中 ,那么 ,子类自然地继承了其父类中不就是 private 的成员变量 作为自己的成员变量 ,并且也自然地继承了父类中不就是priv

8、ate 的方法作为自己的方法 , 继承的成员或方法的访问权限保持不变。当子类与父类不在同一个包中时,父类中的 private 与友好访问权限的成员变量不会被子类继承 , 也就就是说 , 子类只继承父类中的protected 与public 访问权限的成员变量作为子类的成员变量; 同样 ,子类只继承父类中的protected 与public 访问权限的方法作为子类的方法。 如果所声明的成员的变量的名字与从父类继承来的 成员变量的名字相同 (声明的类型可以不同),在这种情况下 ,子类就会隐藏掉所继承的成员变量。2. 不可以。3. abstract 类。4. A类就是B类的父类,当用子类创建一个对象

9、b,并把这个对象b的引用放到父类的对象a 中时,称a就是b的上转型对象。5. AD 。6. 15、 08、 0 。7. 98、 012。习题61. 接口中能声明变量不?2. 接口中能定义非抽象方法不?3. 什么叫接口的回调?4. 请说出 E 类中 System、 out、 println 的输出结果。interface A double f(double x,double y);class B implements A public double f(double x,double y) return x *y;int g(int a,int b) return a+b;public clas

10、s E public static void main(String args) A a=new B();System、 out 、 println(a、 f(3,5);B b=(B)a;System、 out 、 println(b、 g(3,5);5. 请说出 E 类中 System、 out、 println 的输出结果。interface Com int add(int a,int b);abstract class A abstract int add(int a,int b);class B extends A implements Com public int add(int a

11、,int b) return a+b;public class E public static void main(String args) B b =new B();Com com = b;System、 out 、println(com、add(12,6);A a =b;System、 out 、println(a、 add(10,5);习题71. 一维数组名、 length2. 二维数组名、 length3. false,true,false,3,4 、4, 8、8。4. Bird,car习 题 81. 有效。2. 可以3. 不可以4. 大家好 ,祝工作顺利!5.96乘数超过 99习题9

12、1. (A)(B)(D)2. Love:Game 。3. 15abc 我们。4.13579。5.9javaHello 。6.public class E public static void main (String args ) String s1,s2,t1="ABCDabcd"s1=t1、 toUpperCase();s2=t1、 toLowerCase();System、 out、 println(s1);System、 out、 println(s2);String s3=s1、 concat(s2);System、 out、 println(s3);7、publ

13、ic class E public static void main (String args ) String s="ABCDabcd" char cStart=s、 charAt(0);char cEnd = s、 charAt(s 、 length()-1);System、 out、 println(cStart);System、 out、 println(cEnd);8、import java 、util 、*;public class E public static void main(String args) Scanner read=new Scanner(S

14、ystem、 in); CalendarBean cb=new CalendarBean(); int year=2000,month=1;System、 out、 println(" 输入年 :"); year=read、nextInt();System、 out、 println(" 输入月 :"); month=read、 nextInt();cb、 setYear(year);cb、 setMonth(month);String a= cb 、getCalendar();/ 返回号码的一维数组 char str=" 日一二三四五六 &q

15、uot; 、toCharArray(); for(char c:str) System、 out、 printf("%3c",c); for(int i=0;i<a 、 length;i+) /输出数组 aif(i%7=0)System、 out、 println(""); / 换行 System、 out、 printf("%4s",ai);class CalendarBean String day;int year=0,month=0;public void setYear(int year) this、 year=year

16、;public void setMonth(int month) this、 month=month;public String getCalendar() String a=new String42;Calendar rili=Calendar 、 getInstance();rili 、 set(year,month-1,1);int weekDay=rili 、 get(Calendar、 DAY_OF_WEEK)-1; / 计算出 1 号的星期 int day=0;if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)

17、 day=31;if(month=4|month=6|month=9|month=11)day=30; if(month=2) if(year%4=0)&&(year%100!=0)|(year%400=0)day=29;elseday=28;for(int i=0;i<weekDay;i+)ai=" "for(int i=weekDay,n=1;i<weekDay+day;i+) ai=String 、 valueOf(n) ;n+;for(int i=weekDay+day;i<a 、 length;i+)ai=" "

18、;return a;9、import java 、util 、*;public class E public static void main (String args ) Scanner read=new Scanner(System、 in);int year1,month1,day1,year2,month2,day2;System、 out、println(" 输入第一个日期的年、月、日(用空格或回车分隔 ):");year1=read、 nextInt();month1=read、nextInt();day1=read、 nextInt();System、 out

19、、println(" 输入第二个日期的年月日(用空格或回车分隔 ):");year2=read、 nextInt();month2=read、nextInt();day2=read、 nextInt();Calendar calendar=Calendar、 getInstance(); calendar、 set(year1,month1-1,day1); long timeYear1=calendar 、getTimeInMillis(); calendar、 set(year2,month2-1,day2); long timeYear2=calendar 、getT

20、imeInMillis(); long 相隔天数 =Math 、 abs(timeYear1-timeYear2)/(1000*60*60*24);System、out、println(""+year1+"年"+month1+"月"+day1+"日与"+year2+"年"+month2+"月"+day2+"日相隔"+ 相隔天数 +"天");10、import java 、 util 、 *;public class E public s

21、tatic void main (String args ) double a=0,b=0,c=0;a=12;b=24;c=Math 、 asin(0、 56);System、 out、 println(c);c=Math 、 cos(3、 14);System、 out、 println(c);c=Math 、exp(1);System、 out、 println(c);c=Math 、log(8);System、 out、 println(c);11. public class E public static void main (String args ) String str = &q

22、uot;ab123you 您就是谁? " String regex = "D+" str = str、 replaceAll(regex,""); System、 out、 println(str);12. import java 、util 、*;public class E public static void main(String args) String cost = "数学 87 分,物理 76 分,英语 96 分" Scanner scanner = new Scanner(cost);scanner、useD

23、elimiter("F0123456789、+"); double sum=0;int count =0;while(scanner、 hasNext()try double score = scanner、 nextDouble(); count+; sum = sum+score;System、 out、 println(score);catch(InputMismatchException exp) String t = scanner、 next();System out、println("总分:"+sum+"分");Syst

24、em、 out、 println(" 平均分 :"+sum/count+" 分");习 题 101. 使用。2. 按字节读取文件 ,按字符读取文件。3. 不可以。,那么用4. 使用对象流写入或读入对象时 ,要保证对象就是序列化的。5. 使用对象流很容易得获取一个序列化对象的克隆,只需将该对象写入到对象输出流对象输入流读回的对象一定就是原对象的一个克隆。6.import java 、io 、*;public class E public static void main(String args) File("E 、 java");try

25、 RandomAccess RandomAccessFile(f,"rw"); random、seek(0);long m=random、 length();while(m>=0) m=m-1; random、seek(m); int c=random 、 readByte(); if(c<=255&&c>=0)System、out、 print(char)c); else m=m-1;random、 seek(m); byte cc=new byte2; random、 readFully(cc); System、out、print(ne

26、w String(cc);catch(Exception exp)7、import java 、 io、 *;public class E public static void main(String args ) File("E 、 java");File("temp 、 txt");try inOne=new (file);BufferedReader inTwo= new BufferedReader(inOne); to (tempFile);BufferedWriter out= new BufferedWriter(tofile);Strin

27、g s=null;int i=0;s=inTwo、 readLine();while(s!=null) i+;out 、 write(i+" "+s);out、newLine(); s=inTwo、 readLine();inOne、 close(); inTwo 、close(); out、flush(); out、close(); to();catch(IOException e)8、属于上机操作题 ,解答略。9、import java 、 io、 *;import java 、util 、*; public class E public static void mai

28、n(String args) = new File("a 、 txt"); Scanner sc = null; double sum=0; int count = 0;try sc = new Scanner(file);sc、useDelimiter("F0123456789、+"); while(sc 、 hasNext()try double price = sc、 nextDouble(); count+; sum = sum+price;System、 out、 println(price);catch(InputMismatchExcept

29、ion exp) String t = sc、 next(); System、 out、 println(" 平均价格 :"+sum/count);catch(Exception exp) System、 out、 println(exp);习 题 111. derby、jar,derbynet、jar 以及 derbyclient、jar 复制到 Java运行环境的扩展中。2、import java 、 sql、 *;import java 、 util 、 *;public class E public static void main(String args) Que

30、ry query=new Query();query 、 setDatabaseName("D:/2000/shop");query 、 setSQL("SELECT * FROM goods");Scanner read=new Scanner(System、 in);System、 out、 print(" 输入数据库名或绝对路径 :");String dataSource = read、 nextLine();System、 out、 print(" 输入表名 :");String tableName = r

31、ead、 nextLine();query、 setDatabaseName (dataSource);query、 setSQL("SELECT * FROM "+tableName);query、inputQueryResult();class Query String databaseName="" / 数据库名String SQL; /SQL 语句public Query() try Class、forName("org 、 apache 、derby 、jdbc 、 EmbeddedDriver");catch(Except

32、ion e) System 、 out 、print(e);public void setDatabaseName(String s) databaseName=s、 trim();public void setSQL(String SQL) this、 SQL=SQL、 trim();public void outQueryResult() Connection con;Statement sql;ResultSet rs;try String uri="jdbc:derby:"+databaseName+"create=true"con=Driver

33、Manager 、 getConnection(uri);sql=con、 createStatement();rs=sql、 executeQuery(SQL);ResultSetMetaData metaData = rs、 getMetaData();/ 结果集的元数据对象int columnCount = metaData、 getColumnCount(); / 结果集的总列数for(int i=1;i<=columnCount;i+)System、out 、print(metaData、 getColumnName(i)+" |"); / 输出字段名Sys

34、tem、out 、 println();while(rs、 next() / 输出结果集中的记录 , 即行for(int i=1;i<=columnCount;i+)System 、 out 、 print(rs、 getString(i)+"|");System、 out 、 println();catch(SQLException e) System、out 、 println("请输入正确的表名 "+e);3、import java、 sql、*;import java 、util 、*;public class E public stati

35、c void main(String args) Query query = new Query();String databaseName = "shop"String tableName = "goods"query、 setDatabaseName(databaseName);String name = ""Scanner read=new Scanner(System、 in);System、 out、 print(" 商品名 :");name = read、 nextLine();String str=&

36、quot;'%"+name+"%'"String SQL = "SELECT * FROM goods WHERE name LIKE "+str; query、 setSQL(SQL);System、out、println(tableName+"表中商品名就是"+name+"的记录"); query、 inputQueryResult();class Query String databaseName=""/ 数据库名String SQL;/SQL 语句public

37、Query() try Class、 forName("org 、 apache、 derby、 jdbc、 EmbeddedDriver");catch(Exception e) System、 out、 print(e);public void setDatabaseName(String s) databaseName=s、 trim();public void setSQL(String SQL) this、 SQL=SQL 、 trim();public void outQueryResult() Connection con;Statement sql;Resu

38、ltSet rs;try String uri="jdbc:derby:"+databaseName+"create=true" con=DriverManager 、 getConnection(uri);sql=con、 createStatement();rs=sql、 executeQuery(SQL);ResultSetMetaData metaData = rs、 getMetaData() ;/结果集的元数据对象 int columnCount = metaData 、 getColumnCount(); / 结果集的总列数 for(int

39、 i=1;i<=columnCount;i+)System、out、print(metaData、getColumnName(i)+"|"); /输出字段名System、out 、println();while(rs 、 next() /输出结果集中的记录 ,即行for(int i=1;i<=columnCount;i+)System、 out、 print(rs 、getString(i)+"|");System、 out、 println();catch(SQLException e) System、out 、println("

40、 请输入正确的表名 "+e);4. 将例子 5 中的代码 :String SQL = "SELECT * FROM "+tableName+" ORDER BY name"更改为 :String SQL = "SELECT * FROM "+tableName+" ORDER BY madeTime"可达题目要求。5. 使用预处理语句不仅减轻了数据库的负担,而且也提高了访问数据库的速度。6. 事务由一组 SQL 语句组成 ,所谓事务处理就是指 :应用程序保证事务中的 SQL 语句要么全 部都执行 ,要么一

41、个都不执行。步骤 :(1) 使用 setAutoCommit(boolean autoCommit) 方法con 对象首先调用 setAutoCommit(boolean autoCommit) 方法 ,将参数 autoCommit 取值 false 来关闭默认设置 :con、 setAutoCommit(false);(2) 使用 commit() 方法。 con 调用 commit() 方法就就是让事务中的 SQL 语句全部生效。(3) 使用 rollback() 方法。 con 调用 rollback() 方法撤消事务中成功执行过的 SQL 语句对数据 库数据所做的更新、 插入或删除操作

42、 ,即撤消引起数据发生变化的 SQL 语句操作 ,将数据库中 的数据恢复到 commi() 方法执行之前的状态。7. 解答略。习 题 121. LinkedList 使用链式存储结构 ,ArrayList 使用顺序存储结构。2.83.ABCD4. 用 HashMap<K,V>5.import java 、util 、 *;class RectKey implements Comparable double key=0;RectKey(double d) key=d;public int compareTo(Object b) RectKey t=(RectKey)b;if(this

43、 、key-t 、key)=0) return -1;elsereturn (int)(this 、key-t 、key)*1000);class Rectdouble width,height;Rect(double width,double height) this、height=height; this、width=width;public double getArea() return width*height;public double getLength() return 2*(width+height);public class E public static void main

44、(String args ) TreeMap<RectKey,Rect> treemap= new TreeMap<RectKey,Rect>(); double w=1,2,4,8,16,20,120,30,90,102 、 9; double h=21,92,43,18,1 、6,2、 2,12,3,90,765;Rect rect=new Rect10;for(int k=0;k<rect 、 length;k+) rectk=new Rect(wk,hk);RectKey key=new RectKey10 ;for(int k=0;k<key 、

45、length;k+) keyk=new RectKey(rectk 、 getArea();for(int k=0;k<rect 、 length;k+) treemap、 put(keyk,rectk);int number=treemap、 size();Collection<Rect> collection=treemap 、 values();Iterator<Rect> iter=collection 、 iterator(); while(iter 、 hasNext() Rect r=iter 、 next();System、 out、 printl

46、n(" 面积 :"+r 、 getArea();treemap、clear();for(int k=0;k<key 、 length;k+) keyk=new RectKey(rectk 、 getLength();for(int k=0;k<rect 、 length;k+) treemap、 put(keyk,rectk);number=treemap、size();collection=treemap 、 values();iter=collection 、 iterator();while(iter 、 hasNext() Rect r=iter 、 n

47、ext();System、 out、 println(" 周长 :"+r 、getLength();习 题 131.4 种状态 :新建、运行、中断与死亡。2. 有 4种原因的中断 :(1)JVM 将 CPU 资源从当前线程切换给其她线程,使本线程让出 CPU 的使用权处于中断状态。 (2)线程使用 CPU 资源期间 ,执行了 sleep(int millsecond) 方法 ,使当前线 程进入休眠状态。(3)线程使用CPU资源期间,执行了 wait()方法,使得当前线程进入等待状态。(4) 线程使用 CPU 资源期间 ,执行某个操作进入阻塞状态,比如执行读 /写操作引起阻塞

48、。3死亡状态,不能再调用start()方法。4. 新建与死亡状态。5两种方法:用Thread类或其子类。6. 使用 setPrority(int grade)方法。7. Java使我们可以创建多个线程,在处理多线程问题时,我们必须注意这样一个问题:当两个或 多个线程同时访问同一个变量 ,并且一个线程需要修改这个变量。我们应对这样的问题作出处理 ,否则可能发生混乱。8. 当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合本线程的需要 ,那么可以在同步方法中使用 wait() 方法。使用 wait 方法可以中断方法的执行 ,使 本线程等待 ,暂时让出 CPU 的使用权 ,

49、并允许其它线程使用这个同步方法。其它线程如果在使用这个同步方法时不需要等待 ,那么它使用完这个同步方法的同时,应当用 notifyAll() 方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。9. 不合理。10“. 吵醒”休眠的线程。 一个占有 CPU 资源的线程可以让休眠的线程调用 interrupt 方法“吵 醒”自己 ,即导致休眠的线程发生 InterruptedException 异常,从而结束休眠 ,重新排队等待 CPU 资源。11、 public class E public static void main(String args) Cinema a=new Cinem

50、a();a、 zhang、start();a、 sun、start();a、 zhao、 start();class TicketSeller / 负责卖票的类。 int fiveNumber=3,tenNumber=0,twentyNumber=0;public synchronized void sellTicket(int receiveMoney) if(receiveMoney=5) fiveNumber=fiveNumber+1;System、 out、 println(Thread 、 currentThread() 、 getName()+"给我 5 元钱 ,这就是您

51、的 1 张入场卷 ");else if(receiveMoney=10) while(fiveNumber<1) try System、out、println(Thread 、currentThread()、getName()+" 靠边等 ");wait();System、out、println(Thread、currentThread()、getName()+"结束等待"); catch(InterruptedException e) fiveNumber=fiveNumber-1;tenNumber=tenNumber+1;Syste

52、m、 out、 println(Thread 、 currentThread()、 getName()+" 给我 10 元钱 ,找您 5 元, 这就是您的 1 张入场卷 ");else if(receiveMoney=20) while(fiveNumber<1|tenNumber<1) try System> out、println(Thread、currentThread()、getName()+"靠边等");wait();System、out、println(Thread、currentThread()、getName()+&qu

53、ot;结束等待"); catch(InterruptedException e) fiveNumber=fiveNumber-1;tenNumber=tenNumber-1;twentyNumber=twentyNumber+1;System、 out、 println(Thread 、 currentThread()、 getName()+"给 20元钱,找您一张 5元与一张 10元,这就是您的 1张入场卷 ");notifyAll();class Cinema implements Runnable Thread zhang,sun,zhao;TicketSe

54、ller seller;Cinema() zhang=new Thread(this); sun=new Thread(this); zhao=new Thread(this);zhang、setName(”张小有"); sun、setName("孙大名"); zhao setName("赵中堂");seller=new TicketSeller();public void run() if(Thread 、 currentThread()=zhang)seller、 sellTicket(20);else if(Thread 、 curren

55、tThread()=sun)seller、 sellTicket(10);else if(Thread 、 currentThread()=zhao) seller 、 sellTicket(5);12、public class E public static void main(String args) ClassRoom room6501 = new ClassRoom(); ro o m6501 、 student1、 start(); ro o m6501 、 student2、 start();try Thread 、 sleep(1000); catch(Exception exp

56、) ro o m6501 、 teacher、 start();class ClassRoom implements Runnable Thread student1,student2,teacher;ClassRoom() teacher = new Thread(this); student1 = new Thread(this); student2 = new Thread(this);teacher、setName(”王教授");studentl、setName("张三");student2、setName("李四");public v

57、oid run() if(Thread、 currentThread()=student1) try System out、println(student1、getName()+"正在睡觉,不听课"); Thread、 sleep(1000*60*10);catch(InterruptedException e) System out、println(student1、getName()+"被老师叫醒了 ”);System、out、println(student1、getName()+"开始听课");student2、 interrupt();/吵醒 student2else if(Thread、 cu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论