博学谷——让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));