《JA V A程序设计》期末考试试题(四)*不用考的直接删了, 不浪费大家时间一、单选题1、下列程序段执行后的结果是( )。
String s = new String("abcdefg");for (int i=0; i<s.length(); i+=2){System.out.print(s.charAt(i));}A) aceg B) ACEG C) abcdefg D) abcd2、有整型数组:int[] x={12,35,8,7,2};,则调用方法Arrays.sort(x)后,数组x中的元素值依次是( ).A) 2 7 8 12 35 B) 12 35 8 7 2C) 35 12 8 7 2 D) 8 7 12 35 2分析: public static void sort(int[] a)对指定的int 型数组按数字升序进行排序。
3、下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。
File构造函数中正确的路径和文件名的表示是( )。
File f = new File(填代码处);file =new FileReader(f);in=new BufferedReader(file);A) "./1.txt" B) "../my/1.txt" C) "c:\\my\\1.txt" D) "c:\ my\1.txt"分析: 也可以是c:/my/1.txt ;c:\\my\\1.txt其中第一个\为转移字符4、应用程序的main方法中有以下语句,则输出的结果是( )。
String s1=new String("abc");String s2=new String("abc");boolean b1=s1.equals(s2);boolean b2=(s1==s2);System.out.print(b1+" "+b2);A)true false B) false true C) true true D)false false分析: equal比较的是两个对象所表示的字符是否相等, 而== 比较的是两个对象是否相等.5、应用程序的main方法中有以下语句,则输出的结果是( )。
Hashtable hashtable=new Hashtable();hashtable.put("x","12345");hashtable.put("y","67890");hashtable.put("a","abcde");System.out.println(hashtable.get("a"));A) a B) abcde C) 12345 D) 67890分析: 存入名值对(put), 再按照名字取出其中的值(get)下面说一下HashMap和Hashtable的区别:Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现HashMap允许将null作为一个entry的key或者value,而Hashtable不允许还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。
因为contains方法容易让人引起误解。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异6、下面语句的功能是( )。
RandomAccessFile raf2 = new RandomAccessFile("1.txt","rw" );A)打开当前目录下的文件1.txt,既可以向文件写数据,也可以从文件读数据。
B)打开当前目录下的文件1.txt,但只能向文件写入数据,不能从文件读取数据。
C)打开当前目录下的文件1.txt,但不能向文件写入数据,只能从文件读取数据。
D) 以上说法都不对。
分析: 没用过额…下面有个例子, 自己看看它的用法吧import java.io.IOException;import java.io.File;import java.io.RandomAccessFile;class RandomFileTest{public static void main(String[] args) throws Exception{Student s1=new Student(1, "zhangsan", 90.5);Student s2=new Student(2, "lisi", 98.5);Student s3=new Student(3, "wangwu", 96.5);File userDir=new File(System.getProperties().getProperty("user.dir"));File tempFile=File.createTempFile("~student", ".tmp", userDir);tempFile.deleteOnExit();RandomAccessFile raf=new RandomAccessFile(tempFile, "rw");s1.write(raf);s2.write(raf);s3.write(raf);raf.seek(0);Student s=new Student();for(long i=0;i<raf.length();i=raf.getFilePointer()){s.read(raf);System.out.println("[lenth:"+raf.length()+",i="+i+"] " + s);}raf.close();Thread.sleep(5000);}}class Student{int num;String name;double score;public Student(){}public Student(int num, String name, double score){this.num=num;=name;this.score=score;}public void write(RandomAccessFile raf) throws IOException {raf.writeInt(num);raf.writeUTF(name);raf.writeDouble(score);}public void read(RandomAccessFile raf) throws IOException {num=raf.readInt();name=raf.readUTF();score=raf.readDouble();}public String toString(){return "num="+num+",name="+name+",score="+score;}}7、应用程序的main方法中有以下语句,则输出的结果是( )。
String s="12345#aaa#bbb#67890";int n=s.indexOf("#");int k=s.indexOf("#",n+1);int m=s.indexOf("#",k+1);String s2=s.substring(m+1);System.out.println(s2);A) 123456 B) 67890 C) aaa D) bbb分析: public int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
所以int n=s.indexOf("#"); n 的值为5;public int indexOf(int ch, int fromIndex)返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
所以k为9, m为13public String substring(int beginIndex)返回一个新的字符串,它是此字符串的一个子字符串。
该子字符串从指定索引处的字符开始,直到此字符串末尾。
所以从第十四位到最后一位字符串是678908、下面程序段执行后b的值是( )。
Integer integ =new Integer(9);boolean b = integ instanceof Object;A) 9 B) true C) 1 D) false分析: instanceof是判断前面的对象是不是后面的类创建的, 而Object是所有类的祖先类, 所以为true, 有点多态的感觉(上转型)9、应用程序Test.java的源程序如下,在命令行键入:java Test aaa bb c回车后输出的结果是( )。
public class Test {public static void main(String args[]) {int k1=args.length;int k2=args[1].length();System.out.print(k1+" "+k2);}}A) 3 2 B)1 2 C) 1 3 D) 3 3分析: 好像这种题目经常考: args.length;求的是数组的的元素个数, args[1].length();求的是数组中某一个元素的长度.10、应用程序的main方法中有以下语句,则输出的结果是( )。
int b[][]={{1}, {2,2}, {2,2,2}};int sum=0;for(int i=0;i<b.length;i++) {for(int j=0;j<b[i].length;j++) {sum*=b[i][j];}}System.out.println("sum="+sum);A) 32 B)11 C) 2 D) 3分析: 二维数组, 依次相乘便可, 注: java中二维数组中的一维长度可以不同, 比如这里的b[0]的长度为1; 而b[1]的长度为2, 可以不同, 因为二维数组本质上还是以一维数组的形式组织的.11、应用程序的main方法中有以下语句,则执行后输出的结果是( )。