java字符串特性练习--答案
Java常用API知识测试带答案

常用API部分测试题1.String类中的getBytes()方法的作用是( C )A)将整数变成字符串B)将字符串变成字符数组C)将字符串变成字节数组D)获取字符串中字符的个数2.下列程序的输出结果是( A )class Demo {publicstaticvoid main(String[] args) {System.out.println("abcd".substring(1,3));}}A)bc 包头不包尾B) bC)bcdD)abcd3.对字符串”ababcdabcdefg”使用index Of(‘a’)和lastIndexOf(‘a’),的运行结果是( B )A)1,1B)0,6C)0,0精选文库D)1,6indexOf 从前开始获取,第一位是0lastIndexOf 从后开始获取,但索引还是从前面的第一位0开始4.下面程序的运行结果是什么( A )public static void main(String[] args){String s1 = “abc”;String s2 = “xyz”;show(s1,s2);System.out.println(s1+”-----”+s2);}static void show(String s1,String s2){s1 = s2+s1+”Q”;show方法中的s1= “xyzabcQ”但是main函数中s1没有变化.s2 = “W”+s1;}String字符串的特性,String应该算是一个特殊的引用类型吧,特殊在它的值不被改变A)abc-----xyzB)xyzabcQ-----xyzWabcC)xyzabcQ---- xyzabcQWabcD)xyzQ----Wabc5.以下哪个方法可以向StringBuffer对象的指定位置添加数据( B )A)add()B)insert() 注意是指定位置添加C)appendD)into()6.下面说法不正确的是( B )A)byte的包装类是Byte精选文库B)int的包装类是IntC)short的包装类是ShortD)long的包装类是Long7.关于null和“”说法正确的是( ABD )A)null是常量B)“”是字符串对象C)null可以调用方法D)“”可以调用方法8. 预定义字符 \w 代表什么( C )A) [A-Z]B) [a-z]C) [a-zA-Z_0-9]D) [0-9]9.关于String类的indexOf说法不正确的是( CD )A)返回指定字符在字符串中第一次出现的索引B)返回指定子字符串在字符串第一次出现的索引C)返回指定字符在字符串中最后一次出现的索引D)返回指定子字符串在此字符串最后一次出现的索引10.String类charAt()方法作用是 ( A )A)返回指定索引处的字符B)返回指定索引出的字符串C)返回指定字符的索引D)返回指定字符串的索引11.下面程序的运行结果是( B )Integer i5 = 100;Integer i6 = 100;System.out.println(i5 == i6);System.out.println( (i5 *2) == (i6 *2));System.out.println(i5.equals(i6));A)true,true,trueB)true,false,trueC)true,false,falseD)false,false,false-128到127是byte的取值范围,,如果在这一范围自动装箱不会创建新的对象,而是从常量池中获取,如果超过就创建对象12.下面程序的运行结果是( B )S tring s1 = new String(“abc”);String s2 = new String(“abc”);System.out.println(s1==s2);比较的是地址.因为是2个对象.所以false String s3 = “你好吗”;String s4 =”你”;String s5 =”好吗”;System.out.println(“你好吗”==(”你”+”好吗”))这个是true,因为java有优化机制A)true trueB)false trueC)true flaseD)false false13.下列程序的输出结果是( D )class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int i = sc.nextInt();System.out.println(i);}}从键盘输录入:a 10回车A) aB)10C) a 10D)抛出异常输入的有a字符,只能接收整数14.String类中split()方法描述正确的是( AC )A)切割字符串B)返回一个新的字符串C)返回一个新的字符串数组D)此方法没有返回值15.将十进制数100转成二进制数用哪个方法( A )A)toBinaryString()Integer对象的方法, 二进制那就得Binary了.但最后的返回值是String形式的.B)toHexString()C)intValue()D)toOctalString()16.StringBuffer字符串缓冲区的初始容量是多少个字符( D )A)10个B)12个C)14个D)16个这个是默认值17.向字符串缓冲区中追加字符串,使用的方法是( C )A)length()B)delete()C)append()看意思:附加,追加。
Java常用API知识测试带答案

常用API部分测试题1. String 类中的getBytes() 方法的作用是(C )A)将整数变成字符串B)将字符串变成字符数组C)将字符串变成字节数组D)获取字符串中字符的个数2.下列程序的输出结果是(A )class Demo {publicstaticvoid main(String口args) {System.out.println("abcd".substring(1,3)); } } A) bc 包头不包尾B) b C) bcd D) abcd3.对字符串" ababcdabcdefg” 使用index Of( 'a’)和lastIndexOf( 'a’),的运行结果是(B )A)1,1B)0,6C) 0,0D) 1,6indexOf 从前开始获取,第一位是0lastIndexOf 从后开始获取,但索引还是从前面的第一位0 开始4.下面程序的运行结果是什么( A )public static void main(String[] args){String s1 = “ abc ”;String s2 = “ xyz ”;show(s1,s2);System.out.println(s1+ ” -- ” +s2);}static void show(String s1,String s2){s1 = s2+s1+ ” Q” ;show 方法中的s1= “xyzabcQ” 但是main 函数中s1 没有变化. s2 = “ W” +s1;}String 字符串的特性,String 应该算是一个特殊的引用类型吧,特殊在它的值不被改变A)abc ---- x yzB)xyzabcQ ---- x yzWabcC)xyzabcQ xyzabcQWabcD)xyzQ --- W abc5.以下哪个方法可以向StringBuffer 对象的指定位置添加数据( B )A)add()B)insert() 注意是指定位置添加C)appendD)into()6.下面说法不正确的是( B )A)byte 的包装类是ByteB)int 的包装类是IntC)short 的包装类是ShortD)long 的包装类是Long7.关于null 和“” 说法正确的是( ABD )A)null 是常量B)“” 是字符串对象C)null 可以调用方法D)“” 可以调用方法8.预定义字符\w 代表什么( C )A)[A-Z]B)[a-z]C)[a-zA-Z_0-9]D)[0-9]9.关于String 类的indexOf 说法不正确的是( CD )A)返回指定字符在字符串中第一次出现的索引B)返回指定子字符串在字符串第一次出现的索引C)返回指定字符在字符串中最后一次出现的索引D)返回指定子字符串在此字符串最后一次出现的索引10.S tring 类charAt() 方法作用是( A )A)返回指定索引处的字符B) 返回指定索引出的字符串C)返回指定字符的索引D)返回指定字符串的索引11.下面程序的运行结果是( B )Integer i5 = 100;Integer i6 = 100;System.out.println(i5 == i6);System.out.println( (i5 *2) == (i6 *2));System.out.println(i5.equals(i6));A)true,true,trueB)true,false,trueC)true,false,falseD)false,false,false-128 到127 是byte 的取值范围,,如果在这一范围自动装箱不会创建新的对象,而是从常量池中获取,如果超过就创建对象12.下面程序的运行结果是( B )S tring s1 = new String( “ abc” );String s2 = new String( “ abc” );System.out.println(s1==s2); 是String s3 = “ 你好吗”;String s4 = ”你”;String s5 = ”好吗”;System.out.println( “ 你好吗” ==( ”你” +”好吗” ))这个是true ,因为java 有优化机制A)true trueB)false trueC)true flaseD)false false13. F列程序的输出结果是(D )class Demo {public static void main(String口args) {Scanner sc = new Scanner(System.in);int i = sc.nextInt();System.out.println(i);}}从键盘输录入:a 10回车A) aB)10C) a 10D)抛出异常输入的有a字符,只能接收整数14.String 类中split() 方法描述正确的是(AC )A) 切割字符串B)返回一个新的字符串C)返回一个新的字符串数组D)此方法没有返回值15.将十进制数100转成二进制数用哪个方法(A )A)toBinaryString()Integer 对象的方法,二进制那就得Binary 了.但最后的返回值是String 形式的.B)toHexString()C)intValue()D) toOctalString()16.StringBuffer 字符串缓冲区的初始容量是多少个字符( D )A)10 个B)12 个C)14 个D)16 个这个是默认值17.向字符串缓冲区中追加字符串,使用的方法是( C )A)length()B)delete()C)append()看意思:附加,追加。
java字符串处理选择题附加答案解析

Java 字符串选择题附加答案解析1. 下列关于Java字符串的描述中,错误的是:A. 字符串是不可变的。
B. 字符串可以通过字符数组来初始化。
C. 字符串可以用’+’操作符连接。
D. 字符串可以被修改。
答案: D。
解析:Java字符串是不可变的,一旦创建就不能修改。
2. 给定以下Java代码片段:javaString str = "Hello, World!";变量’str’的值是:A. nullB. "Hello, World!"C. "Hello"D. "World!"答案: B。
解析:’str’被初始化为字符串字面量"Hello, World!"。
3. 给定以下Java代码片段:javaString str = "Hello";表达式’str.length()’的值是:A. 4B. 5C. 6D. 7答案: B。
解析:’str.length()’返回字符串’str’的长度,这里是5。
4. 给定以下Java代码片段:javaString str1 = "Hello";String str2 = "World";String result = str1 + ", " + str2 + "!";变量’result’的值是:A. "Hello World"B. "Hello, World"C. "Hello, World!"D. "HelloWorld!"答案: C。
解析:字符串’result’连接了’str1’、", "、’str2’和"!",其值为"Hello, World!"。
java程序设计第1-4章练习题参考答案(1)

java程序设计第1-4章练习题参考答案(1)一、选择题1.下面供选字符序列中,不属于...Java语言关键字的是( A ) A.goto B.null C.false D.native2.以下是关于Java语言关键字的叙述,其中正确的是( C )A.关键字可以用来描述类的成员类型,但是不能描述普通变量B.关键字由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成C.关键字不可以用作变量、方法、类或标号的标识符D.break和main都是Java语言的关键字3.下述字符组合不能作为Java程序标识符的是(D)A.Aa12 B.XC.y D.5x4.在下述字符串中,不属于...Java语言关键字的是( C )A.float B.newC.java D.return5.下列字符组合不能作为Java整型常量的是( A )A.078B.0x3ACBC.5000D.0x3ABC6.设有如下程序:public class Test {public static void main(String[] args) {String foo=args[1];String bar=args[2];String baz=args[3];System.out.println("baz= "+baz);}}下述哪一行命令可以使得执行该程序的输出为baz= 2 ( C )A) java Test 2222 B) java Test 1 2 3 4C) java Test 4 2 4 2 D) java Test 4 3 2 17.在Java语言中,int类型数据的长度是( C )A.1个字节B.2个字节C.4个字节D.8个字节8. 用Java虚拟机执行类名为Hello的应用程序的正确命令是( D )。
A) java Hello.class B) Hello.class C) java Hello.java D) java Hello9.执行以下代码,输出结果是( B )int x=5,y=7,u=9,v=6;System.out.println(x>y ? x+2:u>v ? u-3:v+2);A.8B.6C.7D.true10.下列修饰符中与访问控制无关的是(C)。
Java常用API知识测试带答案

常用API部分测试题1.String类中的getBytes()方法的作用就是( C )A)将整数变成字符串B)将字符串变成字符数组C)将字符串变成字节数组D)获取字符串中字符的个数2.下列程序的输出结果就是( A )class Demo {publicstaticvoid main(String[] args) {System、out、println("abcd"、substring(1,3));}}A)bc 包头不包尾B) bC)bcdD)abcd3.对字符串”ababcdabcdefg”使用index Of(‘a’)与lastIndexOf(‘a’),的运行结果就是( B )A)1,1B)0,6C)0,0D)1,6indexOf 从前开始获取,第一位就是0lastIndexOf 从后开始获取,但索引还就是从前面的第一位0开始4.下面程序的运行结果就是什么( A )public static void main(String[] args){String s1 = “abc”;String s2 = “xyz”;show(s1,s2);System、out、println(s1+”-----”+s2);}static void show(String s1,String s2){s1 = s2+s1+”Q”;show方法中的s1= “xyzabcQ”但就是main函数中s1没有变化、s2 = “W”+s1;}String字符串的特性,String应该算就是一个特殊的引用类型吧,特殊在它的值不被改变A)abc-----xyzB)xyzabcQ-----xyzWabcC)xyzabcQ---- xyzabcQWabcD)xyzQ----Wabc5.以下哪个方法可以向StringBuffer对象的指定位置添加数据( B )A)add()B)insert() 注意就是指定位置添加C)appendD)into()6.下面说法不正确的就是( B )A)byte的包装类就是ByteB)int的包装类就是IntC)short的包装类就是ShortD)long的包装类就是Long7.关于null与“”说法正确的就是( ABD )A)null就是常量B)“”就是字符串对象C)null可以调用方法D)“”可以调用方法8. 预定义字符 \w 代表什么( C )A) [A-Z]B) [a-z]C) [a-zA-Z_0-9]D) [0-9]9.关于String类的indexOf说法不正确的就是( CD )A)返回指定字符在字符串中第一次出现的索引B)返回指定子字符串在字符串第一次出现的索引C)返回指定字符在字符串中最后一次出现的索引D)返回指定子字符串在此字符串最后一次出现的索引10.String类charAt()方法作用就是 ( A )A)返回指定索引处的字符B)返回指定索引出的字符串C)返回指定字符的索引D)返回指定字符串的索引11.下面程序的运行结果就是( B )Integer i5 = 100;Integer i6 = 100;System、out、println(i5 == i6);System、out、println( (i5 *2) == (i6 *2));System、out、println(i5、equals(i6));A)true,true,trueB)true,false,trueC)true,false,falseD)false,false,false-128到127就是byte的取值范围,,如果在这一范围自动装箱不会创建新的对象,而就是从常量池中获取,如果超过就创建对象12.下面程序的运行结果就是( B )String s1 = new String(“abc”);String s2 = new String(“abc”);System、out、println(s1==s2);比较的就是地址、因为就是2个对象、所以falseString s3 = “您好不”;String s4 =”您”;String s5 =”好不”;System、out、println(“您好不”==(”您”+”好不”))这个就是true,因为java有优化机制A)true trueB)false trueC)true flaseD)false false13.下列程序的输出结果就是( D )class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System、in);int i = sc、nextInt();System、out、println(i);}}从键盘输录入:a 10回车A) aB)10C) a 10D)抛出异常输入的有a字符,只能接收整数14.String类中split()方法描述正确的就是( AC )A)切割字符串B)返回一个新的字符串C)返回一个新的字符串数组D)此方法没有返回值15.将十进制数100转成二进制数用哪个方法( A )A)toBinaryString()Integer对象的方法, 二进制那就得Binary了、但最后的返回值就是String形式的、B)toHexString()C)intValue()D)toOctalString()16.StringBuffer字符串缓冲区的初始容量就是多少个字符( D )A)10个B)12个C)14个D)16个这个就是默认值17.向字符串缓冲区中追加字符串,使用的方法就是( C )A)length()B)delete()C)append()瞧意思:附加,追加。
java练习题含答案

1.编写程序,用数组实现乘法小九九的存储和输出。
【提示:采用多个一维数组。
】public class Multipation {public static void main(String[] args) {// TODO Auto-generated method stubint x[][]=new int[9][9];for(int i=0;i<9;i++){for(int j=0;j<9;j++){if(i>=j){int m=i+1;int n=j+1;x[i][j]=m*n;System.out.print(m+"*"+n+"="+x[i][j]);}}System.out.println();}}}2. 定义一个类Student,属性为学号、姓名和成绩;方法为增加记录SetRecord和得到记录GetRecord。
SetRecord给出学号、姓名和成绩的赋值,GetRecord通过学号得到考生的成绩。
public class Student {/***@param args*/private int ID;private String name;private float score;public void SetRecord(int ID,String name,float score){this.ID=ID;=name;this.score=score;}public float getRecord(int ID){if(ID==this.ID)return this.score;elsereturn -1;}public static void main(String[] args) {// TODO Auto-generated method stubStudent s=new Student();s.SetRecord(0,"alex",100);float Sco=s.getRecord(0);System.out.print(Sco);}}3.给出上题中设计类的构造函数,要求初始化一条记录(学号、姓名、成绩)。
java第二章练习题答案

java第二章练习题答案Java第二章练习题答案Java作为一种广泛应用的编程语言,具有着强大的功能和丰富的库。
学习Java 的过程中,练习题是巩固知识和提高编程能力的重要一环。
在第二章的练习题中,我们将探索一些基本的Java概念和语法。
下面是第二章练习题的答案,希望对大家的学习有所帮助。
1. 问题:什么是Java的标识符?标识符的命名规则是什么?答案:Java的标识符是用来标识变量、方法、类等的名称。
标识符的命名规则如下:- 必须以字母、下划线或美元符号开头;- 可以包含字母、数字、下划线或美元符号;- 大小写敏感;- 不能使用Java的关键字。
2. 问题:Java的八种基本数据类型是什么?答案:Java的八种基本数据类型分别是:- byte:字节型;- short:短整型;- int:整型;- long:长整型;- float:单精度浮点型;- double:双精度浮点型;- char:字符型;- boolean:布尔型。
3. 问题:如何声明一个整型变量并赋初值为10?答案:可以使用以下语句声明一个整型变量并赋初值为10:int num = 10;4. 问题:如何将一个字符串转换为整型?答案:可以使用Integer类的parseInt()方法将一个字符串转换为整型。
示例代码如下:String str = "123";int num = Integer.parseInt(str);5. 问题:如何声明一个常量?答案:可以使用关键字final来声明一个常量。
示例代码如下:final int MAX_NUM = 100;6. 问题:如何使用if-else语句实现条件判断?答案:可以使用if-else语句实现条件判断。
示例代码如下:int num = 10;if (num > 0) {System.out.println("num是正数");} else {System.out.println("num是负数或零");}7. 问题:如何使用for循环实现重复执行某段代码?答案:可以使用for循环实现重复执行某段代码。
java字符串特性练习--答案

选择题:1。
下面程序段执行完毕后,cont的值是()String strins[ ]={"string","starting","strong","street","soft"};int cont=0;for(int i=0;i<strings.length;i++)if(strings[i].endsWith("ng"))cont++;A. 1B. 2C.3D.42.定义字符串:String str=“abcdefg”;则str.index(‘d’)的结果是()A)'d' B) true C) 3 D) 43。
定义变量b:boolean b=true;则String.valueOf(b)的类型是()A)boolean B) String C) false D) int4。
下面程序段输出的结果是()StringBuffer buf1;String str=”北京2008”;buf1=new StringBuffer(str);System.out.println(buf1.charAt(2));A. 2B. 京C0 D.null5. 下面程序段输出的结果是()String s=”ABCD”;s.concat(“E”);s.replace(…C‟,‟F‟);System.out.println(s);A) ABCDEF B) ABFDE C) ABCDE D) ABCD6.下面的语句序列执行完后,n的值是()int n=0;StringTokenizer st=new StringTokenizer(“I wonder should I go,or should I stay?”); while(st.hasMoreToken()){ n++; }A) 9 B) 10 C) 11 D) 127. 下面的语句序列执行完后,n的值是()int n=0;String str=”I wonder,what?”;StringTokenizer str2=new StringTokenizer(str,“,?”,true);while(str2.hasMoreToken()){ str2.nextToken(); }System.out.println(“n=”+n);A)7 B) 3 C) 4 D) 5二填空题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选择题:1。
下面程序段执行完毕后,cont的值是(C )String strings[ ]={"string","starting","strong","street","soft"};int cont=0;for(int i=0;i<strings.length;i++)if(strings[i].endsWith("ng"))cont++;A. 1B. 2C.3D.42.定义字符串:String str=“abcdefg”;则str.indexOf(‘d’)的结果是(C )A)'d' B) true C) 3 D) 43。
定义变量b:boolean b=true;则String.valueOf(b)的类型是( B )A)boolean B) String C) false D) int4。
下面程序段输出的结果是(A )StringBuffer buf1;String str=”北京2008”;buf1=new StringBuffer(str);System.out.println(buf1.charAt(2));A. 2B. 京C0 D.null5. 下面程序段输出的结果是(D )String s=”ABCD”;s.concat(“E”);s.replace(‘C’,’F’);System.out.println(s);A) ABCDEF B) ABFDE C) ABCDE D) ABCD6.下面的语句序列执行完后,n的值是(D )int n=0;StringTokenizer st=new StringTokenizer("I wonder should I go,or should I stay?");while(st.hasMoreTokens()){ n++; String ss=st.nextToken(); }A) 9 B) 10 C) 11 D) 87. 下面的语句序列执行完后,n的值是(A )int n=0;String str=”I wonder,what?”;StringTokenizer str2=new StringTokenizer(str,“,?”);while(str2.hasMoreTokens()){ str2.nextToken(); }System.out.println(“n=”+n);A)2 B) 3 C) 4 D) 5二填空题。
1定义数组:char charArray[]={‘a’,’b’,’c’,’d’,’e’,’f’};则String.valueOf(charArray,2,3)的结果是cde 。
2.下面语句序列输出结果是pro 。
String s=new String(“java program!”);System.out.println(s.substring(5,8));3.下面语句输出结果是1234abcdef5 。
char charArray[]={‘a’,’b’,’c’,’d’,’e’,’f’};StringBuffer buf1;String str=”12345”;buf1=new StringBuffer(str);buf1.insert(4,charArray);System.out.println(buf1.toString());4.如有以下赋值语句:x=new StringBuffer().append(“a”).append(4). append(“c”).toString; x的类型是StringBuffer ;它的值是a4c 。
5.下面程序的功能是统计以“st”开头的字符串有多少个,完成下面程序填空。
public class Class1{public static void main(String args[]){String strings[]={“string”,”starting”,”strong”,”street”,”soft”};int cont=0;for(int i=0; i< strings.length ;i++)if(strings[i].startsWith(“str”))cont++;System.out.println(cont);}}第九章多线程机制一、判断题1.如果线程死亡,它便不能运行。
(T )2.在Java 中,高优先级的可运行线程会抢占低优先级线程。
(T)3.一个线程在调用它的start 方法之前,该线程将一直处于出生期。
(T )4.当调用一个正在进行线程的stop( )方法时,该线程便会进入休眠状态。
(F )5.一个线程可以调用yield 方法使其他线程有机会运行。
(T )6. 线程可以调用yield方法使低优先级的线程运行。
(F)二、选择题1.Java 语言中提供了一个▁D▁线程,自动回收动态分配的内存。
A 异步B 消费者C 守护D 垃圾收集2.Java语言避免了大多数的▁▁C▁▁错误。
A 数组下标越界B 算术溢出C 内存泄漏D 非法的方法参数3.有三种原因可以导致线程不能运行,它们是▁ACD▁▁▁。
A 等待B 阻塞C 休眠D 挂起及由于I/O 操作而阻塞4.当▁A▁方法终止时,能使线程进入死亡状态。
A runB setProrityC yieldD sleep5.用▁B▁方法可以改变线程的优先级。
A runB setProrityC yieldD sleep6.线程通过▁C▁方法可以使具有相同优先级线程获得处理器。
A runB setProrityC yieldD sleep7.线程通过▁D▁方法可以休眠一段时间,然后恢复运行。
A runB setProrityC yieldD sleep8.▁B▁方法使对象等待队列的第一个线程进入就绪状态。
A runB notifyC yieldD sleep9.方法resume( )负责重新开始▁D▁线程的执行。
A 被stop( )方法停止B 被sleep( )方法停止C 被wait( )方法停止D 被suspend( )方法停止10.▁BCD▁方法可以用来暂时停止当前线程的运行。
A stop( )B sleep( )C wait( )D suspend( )三、简述题1.简述程序、进程和线程之间的关系?什么是多线程程序?答:程序是一段静态的代码,它是应用软件执行的蓝本。
进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程。
每一个进程都有自己独立的一块内存空间、一组系统资源。
线程是比进程更小的执行单位。
一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每个线程都有其产生、发展和消亡的过程。
2.线程有那5 个基本状态?它们之间如何转化?简述线程的生命周期。
答案:线程有“新建”、“就绪”、“阻塞”、“运行”、“死亡”5 个基本状态。
线程对象被创建时进入“新建”状态;程序执行语句启动这个线程后,它进入线程队列排列等待CPU 时间片,称为“就绪”状态;等CPU 时间和其他资源齐备时就进入“运行”状态;线程运行完毕或者被强制终止则进入“死亡”状态。
上述线程各状态之间的转换就构成了线程的基本生命周期。
3.什么是线程调度?Java 的线程调度采用什么策略?答案:安排线程队列中CPU 时间的线程被称为线程调度。
Java 的线程调度采用优先级基础上的“先到先服务”策略。
4.如何在Java 程序中实现多线程?答案:在Java 程序中实现多线程最关键是要定义子线程的操作,即定义子线程的run( )方法。
具体可以通过派生Thread 类的子类或实现Runnable 接口两种方式来实现。
5.试简述Thread类的子类或实现Runnable 接口两种方法的异同?答案:派生Thread 子类时通过重载父类的方法run( )来定义子线程的具体操作,然后在主线程中创建并启动该子类的对象为子线程。
实现了Runnable 接口的类必须要实现接口中的run( )方法,其中同样定义了子线程的操作。
但是这个方法中的子线程不是Thread 子类的对象,而是Thread 类的对象;在创建Thread 类对象时把实现了Runnable 接口和run( )方法的类作为参数传递给该对象,从而规定它的具体操作。
四、编程题1.利用多线程技术编写Applet 程序,其中包含一个滚动的字符串。
字符串从左向右运动,当所有的字符都从屏幕的右边消失后,字符串重新从左边出现并继续向右移动。
[Xianch.java]import java.awt.*;import java.applet.*;public class Xianch extends Applet implements Runnable{final String rollingMessage = "SAILING, SAILING, I AM SAILING...";Thread m_Draw = null;int beginX;public void init(){m_Draw = new Thread(this);}public void paint(Graphics g){g.drawString(rollingMessage, beginX, 40);}public void start(){m_Draw.start();try{Thread.sleep(50);}catch(InterruptedException e){}}public void stop(){if(m_Draw.isAlive())m_Draw.stop();}public void run(){try{while(true){beginX = ++beginX % getWidth();repaint();Thread.sleep(100);}}catch(InterruptedException e){}}}第七章图形用户界面一、判断题1.BorderLayout 是面板的缺省布局管理器。
(F )2.当鼠标指针位于一个GUI构件的边上时,发生一个MouseOver 事件。
(F )3.一个面板(Panel)不能被加入到另一个面板(Panel)中。
(F )4.在BorderLayout 中,添加到NORTH 区的两个按钮将并排显示。
(F )5.在使用BorderLayout 时,最多可以使用5 个构件。
(F )6.Swing 构件经常被称为轻量构件。
(T )7.在GUI 上输出文本或提示信息的方法是使用标签。