《Java基础入门》课后习题及答案 下载本文

博学谷——让IT教学更简单,让IT学习更有效

一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码。

new Thread() {

public void run(){} }.start();

另一种就是实现java.lang.Runnable接口,同样是在run()方法中实现运行在线程上的代码。

new Thread(new Runnable(){ public void run(){} }).start()

2、 sleep() 和 wait() 有什么区别?

调用sleep()方法,正在执行的线程主动让出CPU去执行其他线程,在sleep()方法指定的时间过后,CPU才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep()方法并不会释放锁,即使当前线程使用sleep()方法让出了CPU,但其它被同步锁挡住了的线程也无法得到执行。wait()在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此锁的线程可以得到同步锁并运行。当其它线程调用了notify()方法后,调用wait()方法的线程就会解除wait状态,当再次获得同步锁后,程序可以继续向下执行。 六、编程题

请按照题目的要求编写程序并给出运行结果。

1、通过继承Thread类的方式创建两个线程,在Thread构造方法中指定线程的名字,并将这两个线程的名字打印出来。

2、通过实现Runnable接口的方式创建一个新线程,要求main线程打印100此次“main”,新线程打印50次“new”。

3、模拟传智播客的三个老师同时分发80份学习笔记,每个老师相当于一个线程。

4、编写10个线程,第一个线程从1加到10,第二个线程从11加到20...第十个线程从91加到100,最后再把十个线程结果相加。

博学谷——让IT教学更简单,让IT学习更有效

第6章 JavaAPI

一、填空题

1、在Java中定义了两个类来封装对字符串的操作,它们分别是String_和_StringBuffer____。 2、Java中的操作日期的类有_Date___、_Calendar___、DateFormat____等。

3、在程序中若想取得一个Runtime实例,则可以调用Runtime类的静态方法getRnutime()_____。 4、Math类中用于计算所传递参数平方根的方法是_sqrt()____。 5、Java中专门用于将日期格式化为字符串的类是_DateFormat____。 6、Math类中有两个静态常量PI和E,分别代表数学常量_π___和_e___。 7、Java中的用于产生随机数的类是_Random___,它位于java.util____包中。 8、String类中用于返回字符串字符个数的方法是_length()____。

9、System类中所提供的属性和方法都是_静态___的,想要引用这些属性和方法,直接使用System类调用即可。

10、已知 sb 为 StringBuffer 的一个实例,且 sb.toString() 的值为 \, 则执行sb. reverse()后,sb.toString()的值为_”edcba_”___。

二、判断题

1、String对象和StringBuffer对象都是字符串变量,创建后都可以修改。错 2、用运算符“==”比较字符串对象时,如果两个字符串的值相同,结果为true。错 3、System类中的currentTimeMillis()方法返回一个long类型的值。对

4、Date、Calendar以及DateFormat类都位于java.util包中。错 分别java.util.Date java.util.Calendar java.text.DateFormat

5、String类的方法 replace (CharSequence srt1, CharSequence srt2)返回一个新的字符串,它是通过用srt2替换此字符串中出现的所有 srt1得到的。对

博学谷——让IT教学更简单,让IT学习更有效 三、选择题。

1、先阅读下面的程序片段:C

String str = \ String[] arr = str.split(\ System.out.println(arr.length);

程序执行后,打印的结果是几?

A、2个 B、 3个 C、4个 D、 5个 2、以下都是Math类的常用方法,其中用于计算绝对值的方法是哪个?C

A、ceil() B、 floor() C、 abs() D、random() 3、Random对象能够生成以下哪种类型的随机数?D

A、int B、string C、double D、A和C

4、String s = \则s.substring(3,4)返回的字符串是以下选项中的哪个?C

A、cd B、de C、d D、e

5、假若indexOf()方法未能找到所指定的子字符串,则返回以下选项中的哪个?C

A、 false B、 0 C、-1 D、以上答案都不对 6、要产生[20,999]之间的随机整数可以使用以下哪个表达式?B

A.(int)(20+Math.random()*97) B. 20+(int)(Math.random()*980) C. (int)Math.random()*999 D. 20+(int)Math.random()*980

7、以下Math类的方法中,-4.4通过哪个方法运算后,结果为-5.0?D(C)

A. round()四舍五入 B. min() C. floor() 小于参数最大整数 D. ceil()大于参数最小整数 8、下面的程序段执行后,输出的结果是以下哪个选项?A

StringBuffer buf=new StringBuffer(\ buf.insert(7,\

System.out.println(buf.toString());

A、Beijing@2008 B、@Beijing2008 C、Beijing2008@ D、Beijing#2008

博学谷——让IT教学更简单,让IT学习更有效

9、阅读下面的程序:A

public class test {

public static void main(String args[]) { int i;

float f = 2.3f;

double d = 2.7;

i = ((int)Math.ceil(f)) * ((int)Math.round(d)); System.out.println(i); } }

程序执行后,运行结果为以下哪个选项?

A、 9 B、 5 C、6 D、 6.1 10、先阅读下面的程序片段:B

String str1=new String(\String str2=new String(\

StringBuffer str3=new StringBuffer(\

对于上述定义的变量,以下表达式的值为true的是哪个?

A、 str1==str2; B、str1.equals(str2); C、str1==str3; D、以上都不对 四、程序分析题。

阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通 过,请说明原因。

代码一:5 7.0 -8.0 -5 8.1 -6.1

public class A {

public static void main(String[] args) {

System.out.println(Math.abs(-5)); System.out.println(Math.ceil(6.6)); System.out.println(Math.floor(-7.8)); System.out.println(Math.round(-4.9)); System.out.println(Math.max(8.1, -8.1));