一、 阅读程序,写出程序的运行结果
publicclassTestMonth{publicstaticvoidmain(String[]args){try{int month=Integer.parseInt(args[0]);if(month<0||month>12){thrownewArithmeticException("没有"+month+"月份!");}System.out.println("您输入的月份为"+month+"月份");}catch(ArrayIndexOutOfBoundsException e){System.out.println("请输入月份!");}catch(ArithmeticException e){System.out.println("捕获ArithmeticException异常");System.out.println(e.toString());}}}
原文的缩进实在是糟糕,我略微调整了一下
在main中第一个语句就是try,可以看出应该是与异常类有关的题目。后续的if中新创建了一个异常类,并且在month>12或者month<0时抛出。
第一个catch捕获的对象是ArrayIndexOutOfBoundsException异常,也就是数组越界,此时会提示请输入月份。后一个catch是捕获之前的自定义异常并且发出调试信息。用java TestMonth 13运行后,arg[0]的内容应该是"13",所以month的值为13,超出了if中给定的范围,抛出ArithmeticException异常,然后被捕获,执行的应该是
catch(ArithmeticException e)
之后的内容,也就是以下内容:
捕获ArithmeticException异常
java.lang.ArithmeticException: 没有13月份!
packagetest;publicclassOuterClass{privateclassInterClass{publicInterClass(){System.out.println(“InterClass”);}}publicOuterClass(){InterClass ic=newInterClass();System.out.println(“OuterClass”);}publicstaticvoidmain(String args[]){OuterClass oc=newOuterClass();}}
简单分析类的结构,在public类OuterClass中分别有一个子类与两个方法,main方法不过多介绍。子类为private修饰的类InterClass,其中包含了本身的构造方法,还有一个方法为类OuterClass的构造方法。程序运行时,新实例化了一个OuterClass类的对象oc,那么在实例化时同时执行OuterClass类的构造方法里的内容,也就是实例化一个InterClass类的对象ic,并且执行InterClass类构造方法的内容
System.out.println(“InterClass”);
然后再执行实例化ic的下一个语句
System.out.println(“OuterClass”);
。所以输出的结果为:
InterClass
OuterClass
importjava.io.*;publicclassFileTest{publicstaticvoidmain(String args[]){File f=newFile("document","old");File d=newFile("target");
d.mkdir();
f.renameTo(newFile("target","new"));String s[]=d.list();for(int i=0;i<s.length;i++)System.out.println(s[i]);}}
第一行实例化了一个file类对象f,参数为
"document","old"
,查阅File类文档得知,使用的是这一个构造方法
File(String path, String name)
,即f为路径document下的old文件。根据后文对
"target"
的应用,
"target"
的含义应为路径,所以d为路径“target”。
d.mkdir();
为创建目录target,此时多出了一个新创建的目录“target”,renameTo再将f移动至“target”文件夹后重命名为“new”,最后用循环输出target目录下的文件,输出的结果为:
new
importjava.util.*;publicclassStudent6{publicstaticvoidmain(String args[]){List list =newArrayList();
list.add("Hello");
list.add("World");
list.add("Hello");
list.add("Learn");
list.remove("Hello");
list.remove(0);for(int i=0; i<list.size();i++){System.out.println(list.get(i));}}}
本题考察ArrayList的用法,对应知识点
先安装先后次序向数组中添加了几个字符串,再删除掉指定元素,最后输出数组里的元素。考察的点在remove的两种用法:1、remove(Object obj)移除指定元素(如果有多个内容相同的元素则移除首次出现的)2、remove(下标),移除索引对应元素。先正常添加元素,数组内容为:
下标0123/“Hello”“World”“Hello”“Learn”
第一个remove移除首次出现的“hello”
下标012/“World”“Hello”“Learn”
第二个remove移除下标为0的元素
下标01/“Hello”“Learn”
最后输出:
Hello
Learn
篇幅有限,时间紧急,后续内容以源码+注释+少量解释组成
importjava.util.*;publicclass t5 {publicstaticvoidmain(String[] args){List<Integer> list =newArrayList<>();//新建集合
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(0,10);
list.add(3,30);System.out.println("list is:"+ list);LinkedList<Object> linkedList =newLinkedList<>(list);
linkedList.add(1,"red");
linkedList.removeLast();
linkedList.addFirst("green");ListIterator<Object> listIterator = linkedList.listIterator();//获取迭代器while(listIterator.hasNext()){//判断游标是否可后移System.out.print(listIterator.next()+"");//返回游标后的元素}System.out.println();while(listIterator.hasPrevious()){//判断游标前是否有元素System.out.print(listIterator.previous()+"");//输出游标前元素(等于倒着遍历集合)}}}
java 集合迭代器 ListIterator
运行结果:
list is:[10, 1, 2, 30, 3, 4]
green10red12303
33021red10green
这题代码全是错误,很难不让人怀疑我们学校老师的专业性
publicclassMyThreadextendsThread{//一个java文件只能有一个主类publicstaticvoidrun(){//'MyThread' 中的 static 方法 'run()' 无法重写 'java.lang.Thread' 中的实例方法 'run()'for(int i=0;i<3;i++){System.out.println(getName()+"运行,i="+i);if(i==1){System.out.println(getName()+"线程礼让!");//请用半角符号Thread.yield();}}}}publicclassThreadYieldDemo{publicstaticvoidmain(String[] args){MyThread tp1=newMyThread();
tp1.setName("tp1");
tp1.start();MyThread tp2=newMyThread();
tp2.setName("tp2");
tp2.start();}}
如果有幸出这题的老师看见我的文章,相信这里可以帮到你:public class与class
以下是修改后的代码,可以正常运行:
classMyThreadextendsThread{//定义多线程类publicvoidrun(){//线程执行时的运行内容for(int i=0;i<3;i++){System.out.println(getName()+"运行,i="+i);if(i==1){System.out.println(getName()+"线程礼让!");Thread.yield();}}}}publicclass t5{publicstaticvoidmain(String[] args){MyThread tp1=newMyThread();//实例化线程类
tp1.setName("tp1");//线程命名
tp1.start();MyThread tp2=newMyThread();
tp2.setName("tp2");
tp2.start();}}
考察多线程应用
运行结果:
tp2运行,i=0
tp2运行,i=1
tp1运行,i=0
tp1运行,i=1
tp2线程礼让!
tp2运行,i=2
tp1线程礼让!
tp1运行,i=2
详情查阅关键字:“Java 线程礼让”
错误的:
importjava.util.*;publicclassTest{publicstaticvoidmain(String[] args){List<String> list=Arrays.aslist("yellow","red","green","blue");//Arrays.asList()方法L是大写啊,李在淦神魔?Collections.reverse(list);System.out.println(list);List<String> list1=Arrays.aslist("yellow","red","green","blue");List<String> list2=Arrays.aslist("pink","tan");Collections.copy(list1,list2);System.out.println(list1);Collection<String> c1=Arrays.aslist("red","cyan");Collection<String> c2=Arrays.aslist("red","blue");System.out.println(Collections.disjoint(c1,c2));}}
能用的:
importjava.util.*;publicclassTest{publicstaticvoidmain(String[] args){List<String> list=Arrays.asList("yellow","red","green","blue");Collections.reverse(list);//Collections.reverse()反转ListSystem.out.println(list);List<String> list1=Arrays.asList("yellow","red","green","blue");List<String> list2=Arrays.asList("pink","tan");Collections.copy(list1,list2);//Collections.copy拷贝一个ArrayList对象到另一个ArrayList对象中System.out.println(list1);Collection<String> c1=Arrays.asList("red","cyan");Collection<String> c2=Arrays.asList("red","blue");System.out.println(Collections.disjoint(c1,c2));//Collections.disjoint(检查给定的 Collection 对象是否可能包含任何公共元素//当 Collection 对象中不存在公共元素时返回真,否则返回假}}
知识点:Arrays.asList
运行结果:
[blue, green, red, yellow]
[pink, tan, green, blue]
false
这次没问题了
importjava.util.*;publicclassTest{publicstaticvoidmain(String[] args){LinkedHashSet<String> set1=newLinkedHashSet<>();
set1.add("New York");//向set1中添加“New York”LinkedHashSet<String> set2=set1;//让set2指向与set1相同的属性LinkedHashSet<String> set3=(LinkedHashSet<String>)(set1.clone());//克隆新的对象,内容与此时的set1相等
set1.add("Atlanta");//向set1属性内添加System.out.println("set1 is"+set1);System.out.println("set2 is"+set2);System.out.println("set3 is"+set3);}}
知识点:LinkedHashSet
运行结果:
set1 is[New York, Atlanta]
set2 is[New York, Atlanta]
set3 is[New York]
由于后来set2指向了与set1相同的堆内存地址,所以内容时刻保持一致。
set3是后来克隆的新对象,修改内容后不影响
明天考试了,加油!
版权归原作者 三天之内给你拿下奥 所有, 如有侵权,请联系我们删除。