Java基础入门习题答案.docx
- 文档编号:30284987
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:30
- 大小:27.01KB
Java基础入门习题答案.docx
《Java基础入门习题答案.docx》由会员分享,可在线阅读,更多相关《Java基础入门习题答案.docx(30页珍藏版)》请在冰豆网上搜索。
Java基础入门习题答案
《Java基础入门》习题答案
第1章Java开发入门
一、填空题
1、JavaEE、JavaSE、JavaME
2、JRE
3、javac
4、bin
5、path、classpath
二、选择题
1、ABCD2、C3、D4、B5、B
三、简答题
1、面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。
2、JRE(JavaRuntimeEnvironment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。
JRE是提供给普通用户使用的,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。
JDK(JavaDevelopmentKit,Java开发工具包),它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Java开发人员使用的。
初学者学习和使用Java语言时,首先必须下载和安装JDK。
JDK中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了。
四、编程题
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
}
}
第2章Java编程基础
一、填空题
1、class
2、true和false
3、单行注释、多行注释、文档注释
4、基本数据类型、引用数据类型
5、1、2、4、8
6、&&&|||
7、0
8、5
9、34
10、56
二、判断题
1、错2、对3、错4、对5、错
三、选择题
1、AD2、AD3、C4、ABCD5、C6、A7、AC8、A9、B10、A
四、程序分析题
1、编译不通过。
int值4和b相加时,由于变量b的类型为byte,取值范围没有int类型大,存不下int类型的值,因此编译不通过。
2、编译不通过。
这是因为y是在最里层的代码块中定义的一个变量,只有在那个代码块中才可使用,在使用y=x;语句时已经超过了y变量的作用域,所以编译无法通过。
3、打印结果为:
3。
4、打印结果为:
9
8
7
五、问答题
1、Java语言的八种基本数据类型有:
byte字节型,占一个字节。
short短整型,占两个字节。
int整型,占4个字节。
long长整型,占8个字节。
float单精度浮点型,占4个字节。
double双精度浮点型,占8个字节。
char字符型,占两个字节。
boolean型,表示逻辑值,有true和false两个值,分别占一个字节。
2、如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与计算。
如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。
例如定义intx=2,y=0;booleanb=x
而booleanb=x 3、方法重载指的是在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一致。 调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。 六、编程题 1、参考答案 publicclassTest01{ publicstaticvoidmain(String[]args){ intsum=0; for(inti=1;i<100;i++){ if(i%2! =0) sum+=i; } } } 2、参考答案 publicclassTest02{ publicstaticvoidmain(Stringargs[]){ inty=function(0); } publicstaticintfunction(intx){ inty; if(x>0){ y=x+3; }elseif(x==0){ y=0; }else{ y=x*x-1; } returny; } } 3、参考答案 publicclassTest03{ publicstaticvoidmain(String[]args){ int[]arr={25,24,12,76,101,96,28}; for(inti=0;i<-1;i++){ ewChild(); (); } } 第3章面向对象(下) 一、填空题 1、继承 2、方法,抽象类 3、import 4、子类、父类、基类 5、Exception 6、final 7、super 8、Object 9、try、catch 10、jar–cvf,java–jar 二、判断题 1、错2、对3、错4、对5、对 三、选择题 1、B2、C3、ABC4、ABCD5、C6、AC7、C8、D9、A10、B 四、程序分析题 1、程序编译能通过,这是因为intx=2/0;这两条语句使用了try块,捕获了程序因为除以0而产生的异常情况,之后程序会继续向下执行,输出“进入catch代码块”,“进入finally代码块”。 2、程序编译不通过,这是因为在程序中使用了final关键字修饰Animal类,使得Animal类不能被继承。 shout()方法中同样使用了final关键字,使得该方法不能被重写。 3、程序编译能通过,输出结果为“动物叫! ”和“汪汪……”,因为在程序中调用shout()方法时,首先会通过()调用父类的方法说出“动物叫! ”之后再输出“汪汪……” 4、程序编译不通过,因为接口中定义的方法不能有方法体,所以定义的eat()方法是错误的。 接口中的方法必须在子类中全部实现,由于run()方法在子类中并没有重新实现,所以这也是错误的。 五、简答题 1、在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表,则称子类的该方法重写(覆盖)父类的方法。 2、多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。 简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。 3、在Java中,使用abstract关键字修饰的类称之为抽象类。 抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。 抽象类通常用于表示一种抽象的概念。 接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。 由于接口的特殊性,在定义时需要使用interface关键字。 六、编程题 1、参考答案 classStudent{ publicStringname; publicintage; publicStudent(Stringname,intage){ =name; =age; } publicvoidshow(){ } } classUnderGraduateextendsStudent{ publicStringdegree; publicUnderGraduate(Stringname,intage,Stringdegree){ super(name,age); =degree; } publicvoidshow(){ } } publicclassTest01{ publicstaticvoidmain(String[]args){ Studentstudent=newStudent("zhangsan",16); (); UnderGraduateunderGraduate=newUnderGraduate("lisi",20,"bechalor"); (); } } 2、参考答案 interfaceShape{ doublearea(doublegivenValue); } classSquareimplementsShape{ publicdoublearea(doublesideLength){ returnsideLength*sideLength; } } classCircleimplementsShape{ publicdoublearea(doubler){ return*r*r; } } publicclassTest02{ publicstaticvoidmain(String[]args){ Shapesquare=newSquare(); Shapecircle=newCircle(); } } 3、参考答案 classNoThisSongExceptionextendsException{ publicNoThisSongException(){ super(); } publicNoThisSongException(Stringmessage){ super(message); } } classPlayer{ publicvoidplay(intindex)throwsNoThisSongException{ if(index>10){ thrownewNoThisSongException("您播放的歌曲不存在"); } } } publicclassTest03{ publicstaticvoidmain(String[]args){ Playerplayer=newPlayer(); try{ (13); }catch(NoThisSongExceptione){ } } } 第4章多线程 一、填空题 1、线程、通信 2、Thread、Runnable 3、就绪 4、synchronized、对象、this 5、进程 6、新建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Terminated) 7、10、1 8、开启一个新线程、run()方法 9、wait()、notify()、notifyAll() 10、setDaemon(true)、start() 二、判断题 1、错2、对3、对4、错5、错 三、选择题 1、B2、AC3、ABC4、BC5、ABD6、ABC7、C8、D9、AB10、ABCD 四、程序分析题 1、程序不能编译通过,因为RunHandler类没有实现Runnable接口,因此RunHandler的实例对象不能作为参数传递给Thread的构造方法。 2、程序不能编译通过,因为Thread的子类A重写的run()方法的访问级别不能低于父类run()方法的。 访问级别 3、程序不能编译通过,因为同步方法中调用wait()方法的对象必须为同步锁对象。 4、(); 五、简答题 1、一种是继承包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码。 newThread(){ publicvoidrun(){} }.start(); newThread(newRunnable(){ publicvoidrun(){} }).start() 2、调用sleep()方法,正在执行的线程主动让出CPU去执行其他线程,在sleep()方法指定的时间过后,CPU才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep()方法并不会释放锁,即使当前线程使用sleep()方法让出了CPU,但其它被同步锁挡住了的线程也无法得到执行。 wait()在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此锁的线程可以得到同步锁并运行。 当其它线程调用了notify()方法后,调用wait()方法的线程就会解除wait状态,当再次获得同步锁后,程序可以继续向下执行。 六、编程题 1、参考答案 publicclassMyThreadextendsThread{ publicMyThread(Stringname){ super(name); } publicvoidrun(){ } publicstaticvoidmain(String[]args){ newMyThread("Thread1").start(); newMyThread("Thread2").start(); } } 2、参考答案 publicclassMyRunnableimplementsRunnable{ publicvoidrun(){ for(inti=0;i<50;i++){ "new"); } } publicstaticvoidmain(String[]args){ newThread(newMyRunnable()).start(); for(inti=0;i<100;i++){ "main"); } } } 3、参考答案 publicclassTest01{ publicstaticvoidmain(String[]args){ Teachert=newTeacher(); newThread(t,"陈老师").start(); newThread(t,"高老师").start(); newThread(t,"李老师").start(); } } classTeacherimplementsRunnable{ privateintnotes=80; publicvoidrun(){ while(true){ dispatchNotes();tart(); } for(inti=0;i<10;i++){ threadList[i].join(); } } } 第5章JavaAPI 一、填空题 1、String、StringBuffer 2、Date、Calendar、DateFormat 3、getRuntime() 4、sqrt() 5、DateFormat 6、π、e 7、Random、 8、length() 9、静态 10、edcba 二、判断题 1、错2、错3、对4、错5、对 三、选择题 1、C2、C3、D4、C5、C6、B7、C8、A9、A10、B 四、程序分析题 1、程序编译能通过,输出结果如下 5 -5 2、程序编译能通过,输出结果如下 (): 15 (0): d lastIndexOf(m): 10 substring(2,4): fe indexOf(g): 5 五、简答题? 1、String类是不可变类,即字符串值一旦初始化后就不可能改变。 StringBuffer是可变字符串类,类似String的缓冲区,可以修改字符串的值。 2、Date类用来表示某个特定的瞬间,能够精确到毫秒。 而在实际应用中,往往需要把一个日期中的年、月、日等信息单独返回进行显示或处理,这个类中的大部分方法都已被标记过时。 Calender类基本取代了Date类,该类中定义了一系列用于完成日期和时间字段操作的方法。 Calendar的getTime()方法,getTime()返回一个表示Calendar时间值的Date对象,同时Calendar有一个setTime(Datedate)方法,setTime()方法接收一个Date对象,将Date对象表示的时间值设置给Calendar对象,通过这两个方法就可以完成Date和Calendar对象之间的转换。 六、编程题 1、参考答案 publicclassTest01{ publicstaticvoidmain(String[]args){ Stringstr="HelloWorld"; oLowerCase()); }elseif(ch[i]>='a'&&ch[i]<='z'){ (ch[i]).toUpperCase()); } } } } 2、参考答案 publicclassTest02{ publicstaticvoidmain(String[]args){ Calendarcalendar=(); 100); Datedate=(); DateFormatformat=; Stringstring=(date); } } 3、参考答案 publicclassTest03{ publicstaticvoidmain(String[]args){ Randomrand=newRandom(); int[]num=newint[5]; for(inti=0;i<;i++){ num[i]=20+(31); } } } 第6章集合类 一、填空题 1、集合 2、Comparator 3、有序、可重复,无序、不可重复 4、hashNext()、next() 5、Collection、Map 6、键、值 7、ListIterator 8、ArrayList、LinkedList,HashSet、TreeSet,HashMap、TreeMap 9、put()、get() 10、Collections、Arrays 二、判断题 1、错2、对3、对4、错5、对 三、选择题 1、BC2、A3、D4、ABD5、C6、AB7、D8、AB9、ABC10、B 四、程序分析题 1、程序可以编译通过,输出结果是“a、b、c”,因为TreeSet集合不允许存放重复元素,第2次增加的元素c会覆盖之前存入的元素c,所以输出结果是“a、b、c”,而不是“a、b、c、c”。 2、程序不可以编译通过,这是由于向ArrayList集合中存入元素时,集合并不能记住元素的类型,因此在取出元素时,只能使用Object类型,而不能使用String类型。 3、程序可以编译通过,但是什么也没有打印。 使用ListIterator进行从后向前的遍历集合,可以使用以下两种方法,一是使用listIterator(intindex)方法将索引index的值设置为集合元素的数目,也就是ListIteratorit=(3);,二是将程序先从前向后遍历,然后再从后向前遍历。 4、程序编译不通过,由于Map集合在遍历的过程中不能使用集合对象本身删除元素,这会导致并发修改异常,若想删除集合中的元素,可以使用Iterator的remove()方法。 五、简答题 1、为了使程序能方便的存储和操作数目不固定的一组数据,JDK提供了一套类库,这些类都位 于包中,统称为集合。 集合框架中包含3个接口,分别是List、Set、Map。 2、List的特点是元素有序、元素可重复。 List接口的主要实现类有ArrayList和LinkedList。 Set的特点是元素无序、元素不可重复。 Set接口的主要实现类有HashSet和TreeSet。 Map的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。 Map接口的主要实现类有HashMap和TreeMap。 3、Collection是一个单例集合接口。 它提供了对集合对象进行基本操作的通用方法。 Collections是一个工具类。 它包含各种有关集合操作的方法。 六、编程题 1、参考答案 import.*; publicclassTest01{ publicstaticvoidmain(String[]args){ ArrayListlist=newArrayList(); for(inti=0;i<10;i++){ ("A"+i); } Iteratorit=(); while()){ Objectobj=(); } } } 2、参考答案 import.*; publicclassTest02{ publicstaticvoidmain(String[]args){ HashSethashSet=newHashSet(); Personp1=newPerson("Jack",25); Personp2=newPerson("Rose",23); Personp3=newPerson("Jack",27); (p1); (p2); (p3); for(Objectobj: hashSet){ Personp=(Person)obj; } } } classPerson{ Stringname; intage; publicPerson(Stringname,intage){ super(); =name; =age; } publicinthashCode(){ return(); } publicbooleanequals(Objectobj){ if(this==obj) returntrue; if(obj==null) returnfalse; Personother=(Person)obj; } } 3、参考答案 import.*; publicclassTest03{ publicstaticvoidmain(String[]args){ TreeMapmap=newTreeMap(newMyComparator()); ("1"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础 入门 习题 答案