《Java程序设计教程(第2版)课后习题及答案09课后习题.docx》由会员分享,可在线阅读,更多相关《Java程序设计教程(第2版)课后习题及答案09课后习题.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第9章课后习题参考答案1 .什么是自动装箱?什么是自动拆箱?答:(1) .自动装箱:自动将基本数据类型转换为包装器类型2 2).自动拆箱:自动将包装器类型转换为基本数据类型2. 使用正则表达式对输入的电话号码进行匹配(匹配要求:匹配成功的电话号码位数为11位的纯数字,且以1开头,第二位必须是:3、5、7、8中的一位)。答:public class regexTest public static void main(String args) /测试:String tl =1245678901”;String t2 = 12745678901”;String t3 = ”123413 212”;S
2、tring t4 = M2888888888H;boolean bl = isQQ(tl);boolean b2 = isQQ(t2);boolean b3 = isQQ(t3);boolean b4 = isQQ(t4);System.out.println(t 1 +n是电话号码吗? n+b 1);System.out.println(t2+”是电话号码吗? n+b2);System.out.println(t3+”是电话号码吗? +b3);System.out.println(t4+”是电话号码吗? n+b4);练习2:匹配电话号吗(以1开头第二位必须是3Z5/7/8的11位纯数字组成)
3、public static boolean isQQ(String qq) 定义匹配规则:String regex = nl35780-99n;判断是否符合规则boolean b = qq.matches(regex);return b;3. java.sql.Date 和 java. util .Date 有何不同?答:(1) java.sql.Date 是 java.util.Date 的子类(2) java.sql.Date类没有时分秒,只有年月日(3) java.util.Date 类转 java.sql.Date 类,向下转型需要调用 java.util.Date 类的 getTim
4、e。方法, 取得long类型返回值,作为参数转换。148(4) java.sql.Date类转java.util.Date类,向上转型会自动转换,但是数值我们可以很明显的看 到,也没有了时分秒。4. Print。、println( ) printR)的用法有何不同?答:一、功能不同1)、print:将信息显示在命令窗口中,输出光标定位在最后一个字符之后。2)、printf:将信息进行格式化显示在命令窗口中,输出光标定位在最后一个字符之后。3)、printin:将信息显示在命令窗口中,输出光标换行定位在下一行开头。二、语法不同1)、print: Print(Hn H) = Println(H ”
5、)。2)、printf: System.out.println(H bH);3)、printin: System.out.pHnt( ASDnn); = System.out.println(n ASD)。三、特点不同1) print:是需求输出的一系列参数,其个数务必与式样化字符串所阐明的输出参数个数一 样多,各参数之间用分开。2)、printf:式样化规定字符,以开端,后跟一个或几个规定字符,用来确定输出内容式 样。3)、printin:从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从 栈顶开始的。5 .用不同方法创建String对象。答:方式一:通过字符串常量的方式这
6、种方式是在常量池中获取对象(hello属于字符串常量,因此编译时期会在常量池中创建 一个字符串对象),因为直接使用双引号声明出来的String对象会直接存储在常量池中。使用这种形式创建字符串时,JVM会在字符串常量池中先检查是否存在该对象,如果存在, 返回该对象的引用地址,如果不存在,则在字符串常量池中创建该字符串对象并且返回引用。 使用这种方式创建的好处是:避免了相同值的字符串重复创建,节约了内存。方式二:通过new 一个对象方式创建这种方式一共会创建两个字符串对象,一个在堆中,一个在常量池中(当然前提是常量池中 还没有“hello字符串对象)。使用这种方式创建字符串对象过程就比较复杂,分成
7、两个阶 段,首先在编译时,字符串hello会被加入到常量结构中,类加载时候就会在常量池中创 建该字符串。然后就是在调用new()时,JVM将会调用String的构造函数,同时引用常量池 中的“hello字符串,在堆内存中创建一个String对象并且返回堆中的引用地址。6 .写一个程序,进行两个大整数的乘法运算。假设大整数范围大于等于64位二进制范围。 答:import java.util.Scanner;public class BigNum public String Cheng(String str 1,String str2) int numl =new intstrl .length(
8、);int num2=new intstr2.1ength();int result=new intstr 1.Iength()+str2.length();两数相乘的位数小于两数位数相加之和fbr(int i=O;istr 1 .length();i+) numl i=lnteger.parselnt(strl .substring(i,i+l);/截取字符串,并转化为整型数组下标越小,数字对应的位数越高fbr(int i=0;istr2.1ength();i+) num2i=lnteger.parselnt(str2.substring(i9i+1);截取字符串,并转化为整型数组下标越小,
9、数字对应的位数越高!两数相乘for (int i = 0; i strl.length(); i+) for (int j = 0; j 0;i) temp=resulti/10;数组下标大的向数组下标小的进位resulti-l+=temp;resulti=resulti% 10;转化为字符串并返回String resultString=nn;fbr(int i=0;iresult.length-1 ;i+) resultString+=nn+resulti;return resultstring;)public static void main(Stringn args) / TODO Au
10、to-generated method stubScanner sc=new Scanner(System.in);System.out.printin(请输入第一个数:”);String strl = sc.next();System.out.printin(请输入第二个数:H);String str2 = sc.nextQ;String out=new BigNum().Cheng(strl, str2);匿名对象调用 Cheng 方法 System.out.println(str 1 +n 与 ”+str2+” 的积为“+out);)7 .设某校图书馆规定的单次借书阅读时限为60天,一名
11、学生的借书日期为dl,还书日期 为d2,请编程计算是否超期。答:public boolean dateCheck()private static int differentDays(Date date 1 ,Date date2) Calendar call = Calendar.getlnstance();call.setTime(date 1);Calendar cal2 = Calendar.getlnstance();cal2.setTime(date2);int dayl= cal 1 .get(Calendar.DAY_OF_YEAR);int day2 = cal2.get(Ca
12、lendar.DAY_OF_YEAR);int yearl = cal 1 .get(Calendar. YEAR);int year2 = cal2.get(Calendar.YEAR);ififyearl != year2) 同一年int timeDistance = 0 ;fdr(int i = yearl ; i 60) return true;elsereturn false; else /不同年System.out.printin(判断 day2 - dayl : ” + (day2-dayl); if(day2-dayl)60)return true;else return fa
13、lse;8 .利用Math类获取10个随整数范围在(18,80),不能重复,放在数组中,排序后遍历输出。答:import j ava.util.Arrays;public class MathTest public static void main(String args) int arr = new intl 0;for (int i = 0; i v arr.length; i+) int num = (int) (Math.random() * (80 - 18) + 18);System.out.println(num);if (contains(arr, num) i; else a
14、rri = num;maoPao(arr);System.out.println(Arrays.toString(arr);public static void maoPao(int arr) for (int i = 0; i arrj + l)int temp = arrj; arrj = arrj + 1; arrj + 1 = temp;public static boolean contains(int arr, int num) fbr (int i = 0; i arr.length; i+) if (arri = num) return true;return folse;)9 .项目练习:在字符串中找到第一个不重复的字符,编程实现。答:class FirstUniqueChar 方法1:若某个元素在字符串中首次出现和最后一次出现的位置相等,说明它是唯一的 public int firstUniqChar2(String s) int index = -1;for (int i = 0; i v s.length(); i+)if (s.indexOf(s.charAt(i) = s.lastIndexOf(s.charAt(i) index = i;break;)return index;