Java常用类习题(附部分答案) 下载本文

Java常用类习题

一、选择题

1. 下列String类的( )方法返回指定字符串的一部分(选择一项)

A. extractstring() B. substring() C. Substring() D. Middlestring()

2.下列哪一个是正确的( )

A) HashTable的关键字和值都允许为null B) HashTable的关键字和值都不允许为null

C) HashTable的关键字允许为null,值不允许为null D) HashTable的关键字不允许为null,值允许为null 3.对于下列代码:

String str1=\String str2=\

String str3=new String(\

StringBuffer str4=new StringBuffer(\以下表达式的值为true的是( ) A) str1= =str2; C) str2= =str3; public class Test {

public static void main(String args[]){ String str=\ str.substring(3); str.concat(\ System.out.print(str); } }

A) DE B) DEXYZ C) ABCDE D) CDEXYZ 5.对于下列代码:

B) str1= =str4; D) str3= =str4;

4.以下程序段输出结果的是( )

public class Example{

String str=new String(\char ch[]={'d','b','c'};

public static void main(String args[]){ }

public void change(String str,char ch[]){

str=\}

1

Example ex=new Example(); ex.change(ex.str,ex.ch);

System.out.println(ex.str+\

}

B) hello and a

输出结果是: ( ) A) hello and d C) world and d

D) world and a

6.以下代码的运行结果是哪一项。( )

public class StringTest { } A)A.A C)A.B

B)B.A D)B.B

public static void mb_operate(String x,String y) { }

public static void main (String args[]) { }

String a=\String b=\mb_operate(a,b);

System.out.println(a+\x.concat(y); y=x;

7.以下代码的运行结果是哪一项。( )

public class StringArray Test { } A)20 C)22

B)21 D)23

public static void mb_swap(String [] s) { }

public static void main (String args[]) { }

String [] s={\mb_swap(s);

System.out.print(s[0]+s[1]); if(s.length<2) return; String t=s[0]; s[0]=s[1]; s[1]=t;

8.以下代码的运行结果是哪一项。( )

2

public class TestGetChars{

public static void main(String[] args){ }

A)Hello World! C)Hello World! World

B)Hello World! D)World World

Hello Hello!

String myString = new String(\char [] yourString = new char[16];

myString.getChars(6,11,yourString,0);

System.out.println(myString); System.out.println(yourString);

}

9.以下代码的运行结果是哪一项。( )

public class TestStringContructor{

public static void main(String[] args){ } A)45555 C)90123

B)12345 D)4950515253

byte [] b = {49,50,51,52,53}; String myString = new String(b); System.out.println(myString);

}

10.以下代码的运行结果是哪一项。

public class J_Intern {

public static void main(String args[ ]) {

String s1 = \ String s2 = \ String s3 = \ String a0 = \ String s4 = a0 + \

String s5 = new String(\ String s6 = s5.intern( );

System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\ }

3

}

A)s2==s1 s3==s1 s4!=s1 s5!=s1 s6==s1 C)s2==s1 s3==s1 s4!=s1 s5!=s1 s6!=s1

B)s2==s1

s3==s1 s4==s1 s5!=s1 s6==s1 s3==s1 s4!=s1 s5!=s1 s6==s1

D)s2!=s1

11.下面程序段的输出结果是( )

StringBuffer buf1=new StringBuffer(20);

System.out.println(buf1.length()+ ‘,’+buf1,capacity()); A) 0,20

B) 0,null

C) 20,20

D) 0,0

12.下面的语句序列的输出结果为( )

String s= “ABCD”; s.concat(“E”); s.replace(‘C’,‘F’); A)ABCDEF B)ABFDE

C)ABCDE

D)ABCD

13.下面的哪些程序片断可能导致错误? ( )

A) String s = \String t = \String k = s + t;

B) String s = \ String t;

D) String s = \ String t = s - \

t = s[3] + \

C) String s = \String standard = s.toUpperCase(); 14.给出下面的代码片断

1) public void create() { 2} Vector myVect;

3} myVect = new Vector(); 4} }

下面的哪些陈述为true(真)? ( )

A) 第二行的声明不会为变量myVect分配内存空间。 B) 第二行的声明分配一个到Vector对象的引用的内存空间。 C) 第二行语句创建一个Vector类对象。 D) 第三行语句创建一个Vector类对象。

E) 第三行语句为一个Vector类对象分配内存空间。

15.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的( )

A ) ArrayList myList=new Object(); B) List myList=new ArrayList(); C) ArrayList myList=new List(); A) s[10] 为 \ C) s[0] 为 未定义

D) List myList=new List();

16.执行下列代码后,哪个结论是正确的 String[] s=new String[10]; ( )

B) s[9] 为 null; D) s.length 为10

4

17.下面的表达式哪个是正确的? ( )

A) String s=\你好\

B) String s=\你好\C) String s=\你好\D) String s=\你好\

E) String s=null; int i=(s!=null)&&(s.length>0)?s.length():0; 18.给定下列程序:

public class Test {

public static void main(String args[]){

String str=new String(\ change(str,ch);

System.out.println(str+\ char ch[]={'C','e','l','l','o'};

}

public static void change(String str,char ch[]){ str=\ } };

B) World and Hello

D) Changed and Cello B) \

D) \

B) String s=\

String t; t=s[3]+\

String t=s-\

上述程序的运行结果应该是?( ) A) World and Cello C) Changed and Hello A) \ C) \

19.在java语言中,下列表达式返回true的是哪些项目。( )

20.下面的哪些程序片断可能导致错误?( )

A) String s=\ String t=\ String k=s+t;

C) String s=\

D) String s=\

String standard = s.toUpperCase(); A) String temp[]=new String{\B) String temp[]={\C) String temp={\D) String temp[]={\22.下面的哪些叙述为真? ( )

21.在java语言中,下列语句中正确的是哪个?( )

A) equals()方法判定引用值是否指向同一对象。

B) == 操作符判定两个分立的对象的内容和类型是否一致。 C) equals()方法只有在两个对象的内容一致时返回true。

D) 类File重写方法equals()在两个分立的对象的内容和类型一致时返回true。 23.关于以下程序段,正确的说法是

1. String s1=\

5

2. String s2=\3. if(s1= =s2)

4. System.out.println(\5. if (s1.equals(s2))

6. System.out.println(\A. 行4与行6都将执行 B. 行4执行,行6不执行 C. 行6执行,行4不执行 D. 行4、行6都不执行

24.要产生[20,999]之间的随机整数使用哪个表达式? A.(int)(20+Math.random()*97) B. 20+(int)(Math.random()*980) C. (int)Math.random()*999 D. 20+(int)Math.random()*980 25.下列程序运行的结果为: public class Example{

String str=new String(\ char[] ch={'a','b','c'};

public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch);

System.out.print(ex.str+\ Sytem.out.print(ex.ch); }

public void change(String str,char ch[]){ str=\ ch[0]='g'; } }

A. good and abc B. good and gbc C. test ok and abc D. test ok and gbc 26.设有如下程序

public class test {

public static void main(String args[]) {

Integer intObj=Integer.valueOf(args[args.length-1]); int i = intObj.intValue(); if(args.length > 1) System.out.println(i); if(args.length > 0)

System.out.println(i - 1); else

6

System.out.println(i - 2); } }

运行程序,输入如下命令: java test 2 则输出为:

A. test B. test -1 C. 0 D. 1 E. 2 27.下列程序运行的结果为:

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. 4 B. 5 C. 6 D. 6.1 E. 9 28.如果以下条件成立,则用到java.lang.Math 类中哪个方法? method( -4.4 ) == -4;

A. round() B. min() C. trunc() D. abs() E. floor() F. ceil() 29.set集合如何处理重复元素

A.如果加入一个重复元素将抛出异常

B.如果加入一个重复元素add方法将返回false

C. 集合通过调用equals方法可以返回包含重复值的元素。 D. 重复值将导致编译出错。

30.以下哪个方法是Vector类中增加一个新元素的方法。

A.addElement B. insert C. append D. addItem 31. 以下哪些方法是Collection 接口的方法?

A. iterator B. isEmpty C. toArray D. setText 32.对于以下声明:

String s1=\

String s2=\ String s3;

下面的操作合法的是( )

A)s3=s1+s2; B)s3=s1-s2; C)s3=s1&s2; D)s3=s1&&s2; 33.下面的程序段执行后输出的结果是( )。

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

System.out.println(buf.toString()); A、 Beijing@2008 B、 @Beijing2008

7

C、 Beijing2008@ D、 Beijing#2008 二、程序阅读题 1、阅读下面的程序:

① public class Test{

② public static void main(String[] a){ ③ int i = Integer.parseInt(a[0]); ④ switch (i) {

⑤ case 1:System.out.println(\⑥ case 2:System.out.println(\⑦ case 3:System.out.println(\⑧ case 4:System.out.println(\⑨ } ⑩ } ? }

上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,用java Test 2 运行得到的输出结果是什么? 2、阅读下面的程序:

1) public class Test{

2) public static void main(String[ ] args) { 3) int x,y=2,i=0,j=0;

4) if(args.length<2) System.exit(-1); 5) x = Integer.parseInt(args[1]); 6) switch(x){

7) case 2:switch(y){

8) case 1:i++;break; 9) case 2:j++;break; 10) default:i++;j++; 11) }

12) case 3:i++;j++;break; 13) default:i++;j++; 14) }

15) System.out.println(\16) System.out.println(\17) } 18) }

上面的程序编译是否成功?如果编译出错,指出哪行出错,并说明理由;如果编译正确,用java Test 1 2 3 运行得到的运行结果是什么? 3、阅读下面的程序TestMonth.java: public class TestMonth{

public static void main(String []args){

try{

int month=Integer.parseInt(args[0]); if(month<0||month>12){

8

}

}

throw new ArithmeticException(\没有\月份!\}

System.out.println(\您输入的月份为\月份\System.out.println(\请输入月份!\

System.out.println(\捕获ArithmeticException异常\System.out.println(e.toString());

}catch(ArrayIndexOutOfBoundsException e){ }catch(ArithmeticException e){

}

已知ArrayIndexOutOfBoundsException和ArithmeticException都是java.lang.*下的异常类,编译TestMonth.java后,用java TestMonth 13的运行结果是什么? 4、仔细阅读下面的程序代码,若经编译和运行后,请写出打印结果。

1) class TestString{

2) public void stringReplace (String text) { 3) text = text.replace('j' , 'i'); 4) text=text+\5) }

6) public void bufferReplace (StringBuffer text) { 7) text.setCharAt(0,'i'); 8) text = text.append(\9) }

10) public void change(char ch[]){ 11) ch[0]= 'Y'; 12) }

13) public static void main(String args[]){ 14) String str1=\

15) StringBuffer str2=new StringBuffer(\16) char ch[]={'j','a','v','a'}; 17) TestString t=new TestString(); 18) t.change(ch);

19) t.stringReplace (str1); 20) t.bufferReplace (str2); 21) System.out.println(str1);

22) System.out.println(str2.toString()); 23) System.out.println (new String(ch)); 24) } 25) }

5、阅读下面的程序代码,判断18~27行(带划线部分)各语句编译是否通过,如果编译通过,直接写出该行的打印结果。

1. class TestString{

2. public static String stringReplace (String text) {

9

3. text = text.replace('j' , 'i'); 4. text=text+\5. return text; 6. }

7. public static StringBuffer bufferReplace (StringBuffer text) { 8. text.setCharAt(0,'i'); 9. text = text.append(\10. return text; 11. }

12. public static void main(String args[]){ 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.

String str1=\String str2=\

String str3=\String str4=new String(\

StringBuffer str5=new StringBuffer(\

System.out.println(str1= =str2); System.out.println(str2= =str3); System.out.println(str2= =str4); System.out.println(str4= =str5);

System.out.println(str3.equals(str4)); System.out.println(str4.equals(str5)); System.out.println (stringReplace (str1)); System.out.println(bufferReplace (str5));

26. System.out.println (str1); 27. System.out.println(str5); 28. } 29. }

6、阅读下面的程序,修改程序中编译错误的地方(提示:共五处错误)

interface Shape{ double PI;

public double area( ); public double perimeter( ); }

class Cycle extends Shape{ private double r; public Cycle(double r){ this.r=r; }

double area( ){

System.out.println(PI*r*r); } }

10

public class Test{

public static void main(String args[]){ Cycle c=new Cycle(1.5);

System.out.println(\面积为:\ } }

三、简答题

1、对于String对象,可以使用“=”赋值,也可以使用new关键字赋值,两种方式有什么区别?

解析:String类型是实际工作中经常使用到的类型,从数据类型上划分,String是一个引用类型,是API中定义的一个类。所以String类型的对象可以使用new创建,例如String name=new String(“ETC”);为变量name进行赋值,值为“ETC”。然而,String类比起其他类有些特殊,可以使用“=”直接赋值,如String name=“ETC”,也是为变量name进行赋值,值为“ETC”。这两种赋值方式是有差别的,使用new赋值,永远都是创建一个新对象,在新的内存空间初始化了字符串的值;而使用“=”赋值,不会每次都初始化新的字符串,而是从一个“字符串实例池”中去查找有没有要赋值的字符串,如有则直接引用;如不存在,则初始化一个字符串,并放入“字符串实例池”。在实际编程中,往往使用“=”好对String类型变量进行赋值。

参考答案:使用“=”赋值不一定每次都创建一个新的字符串,而是从“字符串实例池”中查找字符串。使用new进行赋值,则每次都创建一个新的字符串。 2、什么叫引用类型,引用类型和基本数据类型有什么区别?

解析:初级程序员常常对float和Float或者double和Double感到混淆。在Java语言中,有八中基本数据类型,即byte、int、long、float、double、char、boolean。对应这八种基本数据类型,API中定义了八个类,能把这些基本类型转换成引用类型,分别是Byte、Short、Int、Long、Double、Character、Boolean。这八个类被统称为包装器类。JDK5之后,包装器类和基本数据类型之间可以直接转换,称为自动的装箱拆箱(boxing/unboxing)。例如integer it=3;it++;虽然写法上可以像使用基本数据类型一样使用包装器类型,但是本质上依**行了类似 it= new Integer(3)的转换,因此,不要轻易使用包装器类的自动装箱拆箱,以优化的性能。能够使用基本类型就使用基本类型。

参考答案:包装类器包括Byte、Short、Integer、Long、Float、Double、Character、Boolean等类,主要用来对byte、short、integer、long、float、double、character、boolean这八种基本数据类型进行包装,使其称为引用类型。 3、String类和StringBuffer类有什么区别?

解析:初级程序员常常对float和Float或者double和Double感到混淆。在Java语言中,有八中基本数据类型,即byte、int、long、float、double、char、boolean。对应这八种基本数据类型,API中定义了八个类,能把这些基本类型转换成引用类型,分别是Byte、Short、Int、Long、Double、Character、Boolean。这八个类被统称为包装器类。JDK5之

11

后,包装器类和基本数据类型之间可以直接转换,称为自动的装箱拆箱(boxing/unboxing)。例如integer it=3;it++;虽然写法上可以像使用基本数据类型一样使用包装器类型,但是本质上依**行了类似 it= new Integer(3)的转换,因此,不要轻易使用包装器类的自动装箱拆箱,以优化的性能。能够使用基本类型就使用基本类型。

参考答案:包装类器包括Byte、Short、Integer、Long、Float、Double、Character、Boolean等类,主要用来对byte、short、integer、long、float、double、character、boolean这八种基本数据类型进行包装,使其称为引用类型。 4、包装器类型包括哪些类,有什么作用?

解析:初级程序员常常对float和Float或者double和Double感到混淆。在Java语言中,有八中基本数据类型,即byte、int、long、float、double、char、boolean。对应这八种基本数据类型,API中定义了八个类,能把这些基本类型转换成引用类型,分别是Byte、Short、Int、Long、Double、Character、Boolean。这八个类被统称为包装器类。JDK5之后,包装器类和基本数据类型之间可以直接转换,称为自动的装箱拆箱(boxing/unboxing)。例如integer it=3;it++;虽然写法上可以像使用基本数据类型一样使用包装器类型,但是本质上依**行了类似 it= new Integer(3)的转换,因此,不要轻易使用包装器类的自动装箱拆箱,以优化的性能。能够使用基本类型就使用基本类型。

参考答案:包装类器包括Byte、Short、Integer、Long、Float、Double、Character、Boolean等类,主要用来对byte、short、integer、long、float、double、character、boolean这八种基本数据类型进行包装,使其称为引用类型。

5、使用代码,创建一个长度为5的String型数组,并使用增强for循环迭代数组打印出数组中的元素。

解析:增强for循环是JDK5增加的特性,可以方便地遍历数组或集合。程序员需要了解的是,如果JDK版本低于5.0,则不支持这个功能。另外,并不是说有了增强for循环后,传统的for循环就不被使用,增强for循环只能用来方便地遍历数组和集合,其他情况下还要使用传统的for循环。

参考答案:

String[] sArray = new String[5];

For(String s:sArray){ System.out.println(s); }

6、Object类有什么特点?

解析:Object类是一个非常重要的类,是所有类的父类,包括数组在内,也就是对一个Java类,不管是API中定义的,还是自定义的类,都直接或间接的继承了Object类。所以,如果

12

有一个方法f(Object o),那么可以传递给这个方法任意一个类的对象,包括%%%%。因为所有对象都可以说是Object类型。

参考答案:Object类是多有类的直接或间接的父类。 7、Object类中的equals方法和hashCode 方法。

解析:在Object类中,equals方法比较对象的引用值,也就是只有物理上是同一对象的两个引用,在使用equals方法返回true。hashCode方法返回一个对象的内在地址的十六进制值。由于Object类是所有类的父类,所以任意类中都拥有这两个方法,并都可以进行覆盖。尤其是操作Set,Map对象时集合元素类的equals方法和hashCode方法非常必要,因为Set和Map判断元素是否重%%%是依靠这两个方法进行。一般的原则是:如果存在X和Y两个对象,调用X.equals(Y)相同时,那么调用hashCode方法返回值也应该相同;如果X.equals(Y)返回false时,那么调用hashCode方法返回值可能相同,也可能不同。值得注意的是,只要你覆盖了equals方法,一定%%%则覆盖hashCode 方法。在实际工作中,很多IDE环境都支持覆盖equals和hashCode 方法。

参考答案:Oject类中的equals方法用来比较两个引用值,hashCode用来返回引用的内地址的十六进制数值。在Set以及Map集合中,判断两个元素是否重复时,往往需要使用这两个方法。这两个方法往往被子类覆盖,覆盖的规则是:如果存在x和y两个对象,调用x.equals(y)返回true时,那么调用hashCode方法的返回值也该相同;如果x.equals(y)返回false时,那么调用hashCode方法返回的值可能相同,也可能不同。 8、请画出Java集合框架的主要接口和类的继承关系。

解析:集合是非常重要的类型, 也是企业考察员工编程能力时常常关注的知识点。程序员应该熟悉Java集合框架的主要继承关系, 掌握常用集合类的用法和特点

13

9、Collection接口和Map接口分别定义了什么集合类型?有什么区别?

10、Date和Calender类有什么区别和联系?

解析:应用开发中经常需要对日期进行处理。Java语言中与日期有关的类包括Date和Calender,程序员应该熟悉这两个类。

参考答案:Date类用来表示某个特定的瞬间,能够精确到毫秒。而在实际应用中,往往需要把一个日期中的年、月、日等信息单独返回进行显示或处理,Calender类中就定义了这样一系列方法。往往可以先创建一个Date实例,然后通过Calender中的setTime方法将该实例关联到Calender,接下来就可以使用Calender中的方法处理Date实例中的信息。 11、DateFormart类有什么作用?用简单代码展示其使用方法

解析:DateFormat类是和日期格式相关的类,当需要将日期按照一定格式显示时,应该考虑使用DateFormat类,程序员对这样常用的类都应该熟练使用。

参考答案:DateFormat是一个用来对日期和时间类型进行格式转换的类,该类是一个抽象类,定义了日期时间格式化的通用方法。例如:

DateFormat format1=Dateformat.getInstance(); System.out.println(format1.format(new Date()));

12.SimpleDateFormat类有什么作用? 用简单代码展示其使用方法。

解析:SimpleDateFormat类是DateFormat类的子类,能够灵活定义日期显示格式,对于程序员来说,想要能够灵活定义日期格式,必须熟悉API中定义的字符模式。 参考答案:SimpleDateFormat类是DateFormat类的子类,可以非常灵活地定义日期显示格式,例如:

SimpleDateFormat sdf1=new SimpleDateFormat(“yyyy年MM月dd日hh时mm分ss秒EE”,Locale.CHINA);

System.out.println(sdf1.format(new date()));

13、什么是自动装箱/拆箱?使用该特征有哪些注意事项?

解析:自动装箱/拆箱指的是八个包装器类与八个基本类型的转换问题。然而。这个特征却需要谨慎使用,因为虽然表面上看起来非常方便,而实质上依然需要创建对象、进行转换等操作,使用不恰当会降低性能。

参考答案:自动装箱指的是可以直接将基本数据类型转换为包装器类型,自动拆箱指的是可以直接将包装器类型转换为基本数据类型,如下代码所示:

14

int m=100; Integer im=m; int n=im;

上诉代码中,直接将m赋值给包装器对象im,这就是自动装箱,然后直接将im赋值给基本数据类型n,这就是自动拆箱。虽然表面上看代码简洁方便,然而本质上装箱时候依然使用new创建了对象,而拆箱时也依然调用了方法进行运算。因此,不要在没有必要的时候,频繁使用装箱拆箱,会降低性能。 14、int 和 Integer 有什么区别?

答:Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int 是 java 的原始数据类型,Integer是java 为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装

类,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关 四、编程题

1、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如\我ABC\,应该截为\我AB\,输入\我ABC汉DEF\,6,应该输出为\我ABC\而不是\我ABC+汉的半个\。

答:代码如下: packagetest;

classSplitString {

StringSplitStr; intSplitByte;

publicSplitString(Stringstr,intbytes) {

SplitStr=str; SplitByte=bytes;

System.out.println(\′\′;SplitBytes=\}

publicvoidSplitIt() {

intloopCount;

loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(S

15

plitStr.length()/Split

Byte+1);

System.out.println(\for(inti=1;i<=loopCount;i++) {

if(i==loopCount){

System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length())); }else{

System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte))); } } }

publicstaticvoidmain(String[]args) {

SplitStringss=newSplitString(\中dd文dsaf中男大3443n中国43中国人 0ewldfls=103\ss.SplitIt(); } }

2、使用 String 类的 public String toUpperCase() 方法可以将一个字符串中的小写字母变成大写字母;使用 public String toLowerCase() 方法可以将一个字符串中的大写字母变成小写字母。编写一个程序,使用这个两个方法实现大小写的转换。 import java.applet.*; import java.awt.*;

public class Boy extends Applet {

public void paint(Graphics g) {

String s1,s2,t1=\s1=t1.toUpperCase(); s2=t1.toLowerCase(); g.drawString(s1,30,60); g.drawString(s2,30,90); } }

3、使用 String 类的 public String concat(String str) 方法可以把调用该方法的字符串与参数指定的字符串连接,把 str 指定的串连接到当前串的尾部获得一个新的串。编写一个程序通过连接两个串得到一个新串,并输出这个新串。 import java.applet.*; import java.awt.*;

public class Boy extends Applet {

public void paint(Graphics g)

16

{

String s1,s2,s3,t1=\s1=t1.toUpperCase(); s2=t1.toLowerCase(); s3=s1.concat(s2); g.drawString(s1,30,60); g.drawString(s2,30,90); g.drawString(s3,30,120); } }

4、 String 类的 public char charAt(int index) 方法可以得到当前字符串 index 位置上的一个字符。编写程序使用该方法得到一个字符串中的第一个和最后一个字符。 class E

{ public static void main(String args[]) { String s=\中国科学技术大学 \

char a=s.charAt(0),b=s.charAt(s.length()-1); System.out.print(a); System.out.println(b); } }

5、输出某年某月的日历页,通过 main 方法的参数将年份和月份时间传递到程序中。 import java.util.*; class Ex

{ public static void main(String args[]) {

int year,month; try {

year=Integer.parseInt(args[0]); month=Integer.parseInt(args[1])+1; }

catch(NumberFormatException e) {

year=2004; month=1; }

System.out.println(\日 一 二 三 四 五 六 \Calendar 日历 =Calendar.getInstance(); 日历 .set(year,month,1);

int 星期几 = 日历 .get(Calendar.DAY_OF_WEEK)-1; String a[]=new String[ 星期几 +31]; for(int i=0;i< 星期几 ;i++) { a[i]=\

17

}

for(int i= 星期几 ,n=1;i< 星期几 +31;i++) { if(n<=9)

a[i]=String.valueOf(n)+\else

a[i]=String.valueOf(n) ; n++; }

for(int i=0;i

{ System.out.println(\}

System.out.print(\} } }

6、计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、日通过 main 方法的参数传递到程序中。 class Ex

{ public static void main(String args[]) {

int year1,month1,day1,year2,month2,day2; try {

year1=Integer.parseInt(args[0]); month1=Integer.parseInt(args[1]); day1=Integer.parseInt(args[2]); year2=Integer.parseInt(args[3]); month2=Integer.parseInt(args[4]); day2=Integer.parseInt(args[5]); }

catch(NumberFormatException e) {

year1=2004; month1=0; day1=1; year2=2004; month2=0; day2=1; }

Calendar calendar=Calendar.getInstance(); calendar.set(year1,month1,day1);

long timeYear1=calendar.getTimeInMillis();

18

calendar.set(year2,month2,day2);

long timeYear2=calendar.getTimeInMillis();

long 相隔天数 =Math.abs((timeYear1-timeYear2)/(1000*60*60*24)); System.out.println(\年 \月 \日和 \year2+\年 \月 \日相隔 \相隔天数 +\天 \} }

7、编程练习 Math 类的常用方法。 class E {

public static void main(String args[]) {

double a=0,b=0,c=0; a=12; b=24;

c=Math.max(a,b); System.out.println(c); c=Math.min(a,b); System.out.println(c); c=Math.pow(2,3); System.out.println(c); c=Math.abs(-0.123); System.out.println(c); 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); } }

19