admin 管理员组文章数量: 887151
2023年12月23日发(作者:scanf输入数组的三种方式)
Java基础入门课后习题
第1章 Java开发入门
一、填空题
1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____.
2、Java程序的运行环境简称之为JRE_____.
3、编译Java程序需要使用_javac_____命令.
4、和两个可执行程序存放在JDK安装目录的bin______目录下.
5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用来保存保存Java虚拟机要运行的“.class”文件路径.
二、选择题
1、以下选项中,哪些属于JDK工具多选ABCD
A、Java编译器 B、Java运行工具 C、Java文档生成工具 D、Java打包工具
2、Java属于以下哪种语言C
A、机器语言 B、 语言 C、高级语言 D、以上都不对
3、下面哪种类型的文件可以在Java虚拟机中运行D
A、.java B、.jre C、.exe D、.class
4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中命令的作用是以下哪一种B
A、Java文档制作工具 B、Java解释器 C、Java编译器D、Java启动器
5、如果jdk的安装路径为:d:jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项B
A.d:jdk;B.d:jdkbin;C.d:jrebin;D.d:jre;
三、问答题
1、简述Java的特点.
面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等.
2、简述JRE与JDK的区别.
JREJava Runtime Environment,Java运行时环境,它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等.JRE是提供给普通用户使用的,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE. JDKJava Development
Kit,Java开发工具包,它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Java开发人员使用的.初学者学习和使用Java语言时,首先必须下载和安装中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了.
JDKJava Development Kit,Java开发工具包,它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Java开发人员使用的.初学者学习和使用Java语言时,首先必须下载和安装中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了.
四、编程题
使用记事本编写一个HelloWorld程序,在dos命令行窗口编译运行.请按照题目的要求编写程序并给出运行结果.
public class HelloWorld {
}
public static void mainString args {
}
"这是第一个Java程序";
第2章
Java编程基础
一、填空题
1、Java中的程序代码都必须在一个类中定义,类使用__class____关键字来定义.
2、布尔常量即布尔类型的两个值,分别是_true_____和_flase_____.
3、Java中的注释可分为三种类型,分别是_单行注释else 语句针对x的值进行三种情况的判断.
2)
根据判断结果分别执行不同的表达式,并将结果赋予变量y.
3)
在方法的最后返回y的值.
4)
在main方法中调用设计好的方法,传入一个int型的值,将方法的返回值打印.
3、请编写程序,实现对数组{25,24,12,76,101,96,28} 的排序.
提示:使用冒泡排序算法.
1)
第3章
面向对象上
一、填空题
1、 面向对象的三大特征是封装性_、_继承性_____和__多态性____.
2、 在Java中,可以使用关键字__new____来创建类的实例对象.
3、 定义在类中的变量被称为__成员变量____,定义在方法中的变量被称为局部变量______
4、 面向对象程序设计的重点是_类___的设计,__类____是用来创建对象的模板.
5、 在非静态成员方法中,可以使用关键字_this__访问类的其它非静态成员.
6、 当一个对象被当成垃圾从内存中释放时,它的__finalize____方法会被自动调用.
7、 被static关键字修饰的成员变量被称为_静态变量_,它可以被该类所有的实例对象共享.
8、 在一个类中,除了可以定义属性、方法,还可以定义类,这样的类被称为_内部类_____.
9、在Java中,提供了一个_javadoc_____命令,用于将程序中的文档注释提取出来,生成HTML格式的帮助文档.
10、所谓类的封装是指在定义一个类时,将类中的属性私有化,即使用_private_____关键字来修饰.
二、判断题
1、在定义一个类的时候,如果类的成员被private所修饰,该成员不能在类的外部被直接访问.对
2、Java中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法.对
3、声明构造方法时,不能使用private关键字修饰.错
4、类中static修饰的变量或方法,可以使用类名或对象的引用变量访问.对
5、方法内部类中不能访问外部类的成员变量.错
三、选择题
1、类的定义必须包含在以下哪种符号之间B
A、方括号 B、花括号{} C、双引号“” D、圆括号
2、下面哪一个是正确的类的声明 D
A、 public void HH{…}
{…}
C、 public class void number{} D、 public class
Car{…}
3、在以下什么情况下,构造方法会被调用B
A、 类定义时 B、 创建对象时 C、 调用对象方法时 D、 使用对象的变量时
4、下面对于构造方法的描述,正确有哪些多选ABC
A、方法名必须和类名相同
B、方法名的前面没有返回值类型的声明
C、在方法中不能使用return语句返回一个值
D、当定义了带参数的构造方法,系统默认的不带参数的构造方法依然存在
5、使用this调用类的构造方法,下面的说法正确的是多选ACDABCD
A、使用this调用构造方法的格式为this参数1,参数2…
B、只能在构造方法中使用this调用其它的构造方法
C、使用this调用其它构造方法的语句必须放在第一行
D、不能在一个类的两个构造方法中使用this互相调用
6、下面哪些可以使用static关键字修饰多选ACACD
A、 成员变量 B、局部变量 C、成员方法 D、成员内部类
7、内部类,下面说法正确的是多选ACDABCD
B、 public class Move
A、成员内部类是外部类的一个成员,可以访问外部类的其它成员
B、外部类可以访问成员内部类的成员
C、方法内部类只能在其定义的当前方法中进行实例化
D、静态内部类中可以定义静态成员,也可以定义非静态成员
8、下面对于单例设计模式的描述,正确的是多选BCDABCD
A、类中定义一个无参的构造方法,并且声明为私有
B、在内部创建一个该类的实例对象,使用静态变量引用该实例对象
C、使用private修饰静态变量,禁止外界直接访问
D、定义静态方法返回该类实例
9、请先阅读下面的代码D
public class Test {
public Test{
"构造方法一被调用了";
}
public Testint x{
this;
"构造方法二被调用了";
}
public Testboolean b{
this1;
"构造方法三被调用了";
}
public static void mainString args {
}
上面程序的运行结果为下列哪一项
A、构造方法一被调用了 B、构造方法二被调用了
C、构造方法三被调用了 D、以上三个选项之和
}
Test test = new Testtrue;
10、Outer类中定义了一个成员内部类Inner,需要在main方法中创建Inner类实例对象,以下四种方式哪一种是正确的D
A、 Inner in = new Inner B、Inner in = new ;
C、 in = new ; D、 in = new Inner;
四、程序分析题
阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果.否则请说明编译失败的原因.
代码一:不能,secret是私有成员,只能类内部访问程序不能编译通过,因为在类A中的成员变量secret用private修饰,所以在类Test1中无法访问
class A {
}
public class Test1 {
public static void mainString args {
A a = new A;
private int secret = 5;
}
}
代码二:250程序不能编译通过,因为在静态方法method中不能访问非静态成员变量x.
public class Test2 {
}
代码三:Inner为私有内部类,不允许外部访问innerInner inner = new
Inner;可以用外部类访问内部类
public class Outer {
public String name="Outer";
private class Inner {
}
String name="inner";
void showName{
}
int x = 50;
static int y =200 ;
public static void method {
}
public static void mainString args {
}
;
}
public static void mainString args {
Inner inner = new Inner;
}
五、简答题
1、构造方法和普通的成员方法有什么区别
构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用.而普通方法只有在使用的时候才会被调用.在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值
2、单例设计模式具备哪些特点
单例模式可以保证在整个程序运行期间针对该类只存在一个实例对象.
六、编程题
1、请按照以下要求设计一个学生类Student,并进行测试.
要求如下:
1Student类中包含姓名、成绩两个属性
2分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值.
3Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值
4在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,一个使用有参的构造方法,在构造方法中给姓名和成绩赋值
2、定义一个Father和Child类,并进行测试.
要求如下:
1Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“zhangjun”.
2Child类为Father类的内部类,其中定义一个introFather方法,方法中调用Father类的name属性.
3定义一个测试类Test,在Test类的main方法中,创建Child对象,并调用introFather 方法.
第4章
面向对象下
一、填空题
1、在Java语言中,允许使用已存在的类作为基础创建新的类,这种技术我们称为继承______.
2、一个类如果实现一个接口,那么它就需要实现接口中定义的全部_方法_____,否则该类就必须定义成_抽象类_____.
3、在程序开发中,要想将一个包中的类导入到当前程序中,可以使用_import_____关键字.
4、一个类可以从其它的类派生出来,派生出来的类称为_子类_____,用于派生的类称为_基类_____或者__父类____.
5、 JDK中定义了大量的异常类,这些类都是_Exception_____类的子类或者间接子类.
6、定义一个Java类时,如果前面加使用_final_____关键字修饰,那么该类不可以被继承.
7、如果子类想使用父类中的成员,可以通过关键字__super____引用父类的成员.
8、在Java语言中,所有的类都直接或间接继承自_Object_____类.
9、异常的捕获通常由try、catch两部分组成,_try_____代码块用来存放可能发生异常,_catch_____代码块用
来处理产生的异常.
10、在Java语言中,要想是将一个已编译的类打包成jar文件,可以使用的命令是_jar-cvf_____,要想在命令行窗口运行jar文件,可以使用的命令是__java-jar___.
二、判断题
1、抽象方法必须定义在抽象类中,所以抽象类中的方法都是抽象方法.错
2、Java中被final关键字修饰的变量,不能被重新赋值.对
3、不存在继承关系的情况下,也可以实现方法重写.错
4、package声明语句应当为Java源文件中的第一条语句.对
5、接口中只能定义常量和抽象方法.错对
三、选择题
1、在类的继承关系中,需要遵循以下哪个继承原则B
A、多重 B、单一 C、双重 D、不能继承
2、在Java语言中,以下哪个关键字用于在方法上声明抛出异常C
3、super关键字以下说法哪些是正确的多选ABDABC
A、super关键字可以调用父类的构造方法
B、super关键字可以调用父类的普通方法
C、super与this不能同时存在于同一个构造方法中
D、super与this可以同时存在于同一个构造方法中
4、以下说法哪些是正确的多选ABCD
A、Java语言中允许一个类实现多个接口
B、Java语言中不允许一个类继承多个类
C、Java语言中允许一个类同时继承一个类并实现一个接口
D、Java语言中允许一个接口继承一个接口
5、类中的一个成员方法被下面哪个修饰符修饰,该方法只能在本类被访问C
A、public B、 protected C、 private D、default
6、抽象类的说法哪些是正确的多选AC
A、抽象类中可以有非抽象方法.
B、如果父类是抽象类,则子类必须重写父类所有的抽象方法.
C、不能用抽象类去创建对象.
D、接口和抽象类是同一个概念.
7、在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字C
A、inherits B、implements C、extends D、modifies
8、System类位于以下哪个包中D
A、 B、 C、 D、
9、已知类的继承关系如下: A
class Employee;
class Manager extends Employee;
class Director extends Employee;
则以下语句能通过编译的有哪些
A、 Employee e=new Manager; B、 Director d=new Manager;
C、 Director d=new Employee; D、Manager m=new Director;
10、编译运行下面的程序,结果是什么B
public class A {
}
class B extends A {
}
void test {
}
;
"B";
public static void mainString args {
}
void test {
}
"A";
B b = new B;
;
A、产生编译错误 B、代码可以编译运行,并输出结果AB
C、代码可以编译运行,但没有输出 D、编译没有错误,但会产生运行时异常
四、分析题
阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果.如果不能编译通过,请说明原因.
代码一:进入catch代码块
进入finally代码块程序编译能通过,这是因为int x = 2 / 0; 这两条语句使用了try块,捕获了程序因为除以0而产生的异常情况,之后程序会继续向下执行,输出“进入catch代码块”,“进入finally代码块”.
public class Test01 {
}
public static void mainString args {
}
try {
int x = 2 / 0;
} catch Exception e {
"进入catch代码块";
} finally {
}
"进入finally代码块";
代码二:不能,final修饰shout,不能被重写程序编译不通过,这是因为在程序中使用了final关键字修饰Animal类,使得Animal类不能被继承.shout方法中同样使用了final关键字,使得该方法不能被重写.
final class Animal {
public final void shout {
码一:不能,RunHandler没有继承Thread,不能用Thread创建对象程序不
能编译通过,因为RunHandler类没有实现Runnable接口,因此RunHandler的实例对象不能作为参数传递给Thread的构造方法.
class RunHandler {
public void run{
"run";
}
}
public class Test {
public static void mainString args {
Thread t = new Threadnew RunHandler;
;
}
}
2.代码二:thisisrun程序不能编译通过,因为Thread的子类A重写的run方法的访问级别不能低于父类run方法的.访问级别
public class A extends Thread{
protected void run {
"thisisrun";
}
public static void mainString args {
}
3.代码三:Exception程序不能编译通过,因为同步方法中调用wait方法的对象必须为同步锁对象
public class Test{
private Object obj=new Object;
public synchronized void a{
}
public static void mainString args {
new Test.a;
try {
;改
"waiting";
}
A a = new A;
;
} catch InterruptedException e {
}
"Exception";
}
}
4.为了使下面的程序能够输出“Thread is running”,请在在空格处填上相应的代码.
public class B implements Runnable {
public static void mainString args {
Thread t = new Threadnew B;
_____________________ tart;
另一种就是实现接口,同样是在run方法中实现运行在线程上的代码.
new Threadnew Runnable{
public void run{}
}.start
1、
sleep 和 wait 有什么区别
调用sleep方法,正在执行的线程主动让出CPU去执行其他线程,在sleep方法指定的时间过后,CPU才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep方法并不会释放锁,即使当前线程使用sleep方法让出了CPU,但其它被同步锁挡住了的线程也无法得到执行.wait在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此锁的线程可以得到同步锁并运行.当其它线程调用了notify方法后,调用wait方法的线程就会解除wait状态,当再次获得同步锁后,程序可以继续向下执行.
六、编程题
请按照题目的要求编写程序并给出运行结果.
1、通过继承Thread类的方式创建两个线程,在Thread构造方法中指定线程的名字,并将这两个线程的名字打印出来.
2、通过实现Runnable接口的方式创建一个新线程,要求main线程打印100此次“main”,新线程打印50次“new”.
3、模拟传智播客的三个老师同时分发80份学习笔记,每个老师相当于一个线程.
4、编写10个线程,第一个线程从1加到10,第二个线程从11加到20...第十个线程从91加到100,最后再把十个线程结果相加.
第5章
JavaAPI
一、填空题
1、在Java中定义了两个类来封装对字符串的操作,它们分别是String_和_StringBuffer____.
2、Java中的操作日期的类有_Date___、_Calendar___、DateFormat____等.
3、在程序中若想取得一个Runtime实例,则可以调用Runtime类的静态方法getRnutime_____.
4、Math类中用于计算所传递参数平方根的方法是_sqrt____.
5、Java中专门用于将日期格式化为字符串的类是_DateFormat____.
6、Math类中有两个静态常量PI和E,分别代表数学常量_π___和_e___.
7、Java中的用于产生随机数的类是_Random___,它位于包中.
8、String类中用于返回字符串字符个数的方法是_length____.
9、System类中所提供的属性和方法都是_静态___的,想要引用这些属性和方法,直接使用System类调用即可.
10、已知 sb 为 StringBuffer 的一个实例,且 的值为 "abcde ", 则执行sb.
reverse后,的值为_”edcba_”___.
二、判断题
1、String对象和StringBuffer对象都是字符串变量,创建后都可以修改.错
2、用运算符“==”比较字符串对象时,如果两个字符串的值相同,结果为true.错
3、System类中的currentTimeMillis方法返回一个long类型的值.对
4、Date、Calendar以及DateFormat类都位于包中.错 分别 、String类的方法
replace CharSequence srt1, CharSequence srt2返回一个新的字符串,它是通过用srt2替换此字符串中出现的所有 srt1得到的.对
三、选择题.
1、先阅读下面的程序片段:C
String str = "abccdefcdh";
String arr = "c";
程序执行后,打印的结果是几
A、2个 B、 3个 C、4个 D、 5个
2、以下都是Math类的常用方法,其中用于计算绝对值的方法是哪个C
A、ceil B、 floor C、 abs D、random
3、Random对象能够生成以下哪种类型的随机数D
A、int B、string C、double D、A和C
4、String s = "abcdedcba";则3,4返回的字符串是以下选项中的哪个C
A、cd B、de C、d D、e
5、假若indexOf方法未能找到所指定的子字符串,则返回以下选项中的哪个C
A、 false B、 0 C、-1 D、以上答案都不对
6、要产生20,999之间的随机整数可以使用以下哪个表达式B
A.int20+97
B. 20+int980
C. int999
D. 20+int980
7、以下Math类的方法中,通过哪个方法运算后,结果为DC
A. round四舍五入 B. min C. floor 小于参数最大整数 D. ceil大于参数最小整数
8、下面的程序段执行后,输出的结果是以下哪个选项A
StringBuffer buf=new StringBuffer"Beijing2008";
7,"";
、 B、Beijing2008 C、Beijing2008 D、Beijing2008
9、阅读下面的程序:A
publicclasstest{
publicstaticvoidmainStringargs{
inti;
floatf=;
doubled=;
i=intfintd;
}
}
程序执行后,运行结果为以下哪个选项
A、9B、5C、6 D、
10、先阅读下面的程序片段:B
String str1=new String"java";
String str2=new String"java";
StringBuffer str3=new StringBuffer"java";
对于上述定义的变量,以下表达式的值为true的是哪个
A、str1==str2;B、str2;C、str1==str3;D、以上都不对
四、程序分析题.
阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果.如果不能编译通
过,请说明原因.
代码一:5
-5
public class A {
}
public static void mainString args {
}
;
;
代码二::15
0:d
lastIndexOfm:"10
substring2,4:fe
indexOfg:5
public class B {
public static void mainString args {
String s = "dfferghuklmbdfd";
":" + ;
"0:" + 0;
"lastIndexOfm:" + 'm';
"substring2,4:" + 2, 4;
"indexOfg:" + 'g';
}
}
五、简答题
1、String和StringBuffer有什么区别
String类是不可变类,即字符串值一旦初始化后就不可能改变.StringBuffer是可变字符串类,类似String的缓冲区,可以修改字符串的值.
2、Date和Calender类有什么区别和联系
Date类用来表示某个特定的瞬间,能够精确到毫秒.而在实际应用中,往往需要把一个日期中的年、月、日等信息单独返回进行显示或处理,这个类中的大
部分方法都已被标记过时.Calender类基本取代了Date类,该类中定义了一系列用于完成日期和时间字段操作的方法.
Calendar的getTime方法,getTime返回一个表示Calendar时间值的Date对象,同时Calendar有一个setTimeDate date方法,setTime方法接收一个Date对象,将Date对象表示的时间值设置给Calendar对象,通过这两个方法就可以完成Date和Calendar对象之间的转换.
六、编程题
请按照题目的要求编写程序并给出运行结果
1、
编写一个程序,实现字符串大小写的转换并倒序输出,要求如下
1使用for循环将字符串“HelloWorld”从最后一个字符开始遍历.
2遍历的当前字符如果是大写字符,就使用toLowerCase方法将其转换为小写字符,反之则使用toUpperCase 方法将其转换为大写字符
3定义一个StringBuffer对象,调用append方法依次添加遍历的字符,最后调用StringBuffer对象的toString方法,并将得到的结果输出.
2、
计算从今天算起,100天以后是几月几号,并格式化成xxxx年x月x日的形式打印出来.
提示:
1调用Calendar类的add方法计算100天后的日期
2调用Calendar的getTime 方法返回Date类型对象
2使用FULL格式的DateFormat对象,调用format 方法格式化Date对象
3、利用Random类来产生5个20~50之间的随机整数.
提示:n-mn、m均为整数,n tm-n+1. 第6章 集合类 一、填空题 1、JDK中提供了一系列可以存储任意对象的类,统称为 集合 . 2、在创建TreeSet对象时,可以传入自定义的比较器,自定义比较器需要实现 Comparator 接口. 3、Collection有两个子接口分别是List和Set,List集合的特点是 有序、可重复 ,Set集合的特点是 无序、不可重复 . 4、使用Iterator遍历集合时,首先需要调用 hashNext 方法判断是否存在下一个元素,若存在下一个元素,则调用 next 方法取出该元素. 5、集合按照存储结构的不同可分为单列集合和双列集合,单列集合的根接口是 Collection ,双列集合的根接口是 Map . 6、Map集合中的元素都是成对出现的,并且都是以 键 、 值 的映射关系存在. 7、Iterator有一个子类,不仅可以对集合进行从前向后遍历,还可以从后向前遍历,该类是 ListIterator . 8、List集合的主要实现类有 ArrayList 、 LinkedList ,Set集合的主要实现类有 HashSet 、 TreeSet Map集合的主要实现类有 HashMap 、 TreeMap . 9、Map集合中存储元素需要调用 put 方法,要想根据该集合的键获取对应的值需要调用 get 方法. 10、包中提供了一个专门用来操作集合的工具类,这个类是 Collections ,还提供了一个专门用于操作数组的工具类,这个类是 Arrays . 二、判断题 1、Set集合是通过键值对的方式来存储对象的.错 2、集合中不能存放基本数据类型,而只能存放引用数据类型.对 3、如果创建的TreeSet集合中没有传入比较器,则该集合中存入的元素需要实现Comparable接口.对 4、使用Iterator迭代集合元素时,可以调用集合对象的方法增删元素.错 5、LinkedList在内部维护了一个双向循环链表,每一个元素节点都包含前一个元素节点和后一个元素节点的引用.对 三、选择题 1、要想保存具有映射关系的数据,可以使用以下哪些集合多选BC A、ArrayList B、TreeMap C、HashMap D、TreeSet 2、Java语言中,集合类都位于哪个包中A A、 B、 C、 D、 3、使用Iterator时,判断是否存在下一个元素可以使用以下哪个方法D A、next B、hash C、hasPrevious D、hasNext 4、foreach循环的特点,以下说法哪些是正确的多选ABD A、foreach循环在遍历集合时,无需获得容器的长度 B、foreach循环在遍历集合时,无需循环条件,也无需迭代语句 C、foreach循环在遍历集合时非常繁琐 D、foreach循环的语法格式为:for容器中元素类型 临时变量 :容器变量. 5、在程序开发中,经常会使用以下哪个类来存储程序中所需的配置C A、HashMap B、TreeSet C、Properties D、TreeMap 6、使用Enumeration遍历集合时,需要使用以下哪些方法多选AB A、hasMoreElements B、nextElement C、next D、hashNext 7、要想集合中保存的元素没有重复并且按照一定的顺序排列,可以使用以下哪个 集合D A、LinkedList B、 ArrayList C、hashSet D、TreeSet 8、下列哪些说法是正确的多选AB A、LinkedList集合在增删元素时效率较高 B、ArrayList集合在查询元素时效率较高 C、HashMap不允许出现一对null键null值 D、HashSet集合中元素可重复并且无序 9、以下哪些方法是LinkedList集合中定义的多选 ABC A、getLast B、getFirst C、remove int index D、next 10、获取单列集合中元素的个数可以使用以下哪个方法B A、length B、size C、getint index D、addObject obj 四、分析题 阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果.如果不能编译通过,请说明原因. 代码一:程序可以编译通过,输出结果是“a、b、c”,因为TreeSet集合不允许存放重复元素,第2次增加的元素c会覆盖之前存入的元素c,所以输出结果是“a、b、c”,而不是“a、b、c、c”. import .; public class Test01 { public static void mainString args { TreeSet ts = new TreeSet; "b"; "a"; "c"; "c"; Iterator it = ; while { } } } 代码二:程序不可以编译通过,这是由于向ArrayList集合中存入元素时,集合并不能记住元素的类型,因此在取出元素时,只能使用Object类型,而不能使用String类型. import class Test02 { } 代码三:程序可以编译通过,但是什么也没有打印.使用ListIterator进行从public static void mainString args { } ArrayList list = new ArrayList; "a"; "b"; "c"; for String obj : list { } 后向前的遍历集合,可以使用以下两种方法,一是使用listIteratorint index方法将索引index的值设置为集合元素的数目,也就是ListIterator it = 3;,二是将程序先从前向后遍历,然后再从后向前遍历. import .; public class Test03 { } 代码四:程序编译不通过,由于Map集合在遍历的过程中不能使用集合对象本身删除元素,这会导致并发修改异常,若想删除集合中的元素,可以使用Iterator的remove方法. import .; import class Test04 { public static void mainString args { } ArrayList list = new ArrayList; "demo_1"; "demo_2"; "demo_3"; ListIterator it = ; while { } Object obj = ; " "; } public static void mainString args { } Map map = new HashMap; 1, "Tom"; 2, "Lucy"; 3,"Annie"; Set keySet = ; Iterator it = ; while { } Object key = ; key; 五、简答题 1、什么是集合,请列举集合中常用的类和接口 为了使程序能方便的存储和操作数目不固定的一组数据,JDK提供了一套类库,这些类都位 于包中,统称为集合.集合框架中包含3个接口,分别是List、Set、Map. 2、集合中的List、Set、Map有什么区别 List的特点是元素有序、元素可重复.List接口的主要实现类有ArrayList和的特点是元素无序、元素不可重复.Set接口的主要实现类有HashSet和的特点是存储的元素是键Key、值Value映射关系,元素都是 成对出现的.Map接口的主要实现类有HashMap和TreeMap. 3、请说说Collection和Collections的有什么区别 Collection是一个单例集合接口.它提供了对集合对象进行基本操作的通用方法.Collections是一个工具类.它包含各种有关集合操作的方法. 六、编程题 请按照题目的要求编写程序并给出运行结果. 1、 使用ArrayList集合,对其添加10个不同的元素,并使用Iterator遍历该集合. 提示: 1使用add方法将元素添加到ArrayList集合中. 2调用集合的iterator方法获得Iterator对象,并调用Iterator的hasNext和next方法,迭代出 集合中的所有元素. 2、 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加. 提示: 1Person类中定义name和age属性,重写hashCode方法和equals方法,针对Person类的name属性进行比较,如果name相同,hashCode方法的返回值相同,equals方法返回true. 3、选择合适的Map集合保存5位学员的学号和姓名,然后按学号的自然顺序的倒序将这些键值对一一打印出来. 提示: 1创建TreeMap集合. 2使用put方法将学号“1”、“2”、“3”、“4”、“5”和姓名“Lucy”、“John”、“Smith”、“Aimee”、“Amanda”存储到Map中,存的时候可以打乱顺序观察排序后的效果. 3使用 获取键的Set集合. 4使用Set集合的iterator方法获得Iterator对象用于迭代键. 5使用Map集合的get方法获取键所对应的值. 第7章 IO输入输出 一、填空题 1、Java中的IO流,按照传输数据不同,可分为__字节流__和__字符流__. 2、在Java中,__File__类用于操作磁盘中文件和目录,位于包中. 3、在Java中,_SequenceInputStream __类用来把两个或更多的InputStream输入流对象合并为单个InputStream输入流对象 使用. 4、Java中提供了一个类__RandomAccessFile __,它不但具有读写文件的功能,并且可以随机地从文件的任何位置开始执行读写数据的操作. 1、 5、在Java中,能实现线程间通信的流是__管道流 __. 6、Java中提供了一个可以在读文件的同时记录行号的类,这个类是__LineNumberReader__,它是__BufferedReader__的直接子类,它通过____和 ____方法设置和获取当前行号. 7、InputStreamReader类是用于将__字节流__转换为__字符流__. 8、是__PrintStream__类的对象,称为标准输出流,调用System类的__setOutPrintStream out__方法可以实现标准输出流的重定向. 2、 9、Java中一个字符占用两个字节,所有字符采用的都是__Unicode __码表. 10、BufferedWriter的__newLine__方法可以写入一个换行符. 二、判断题 1、如果一个File表示目录下有文件或者子目录,调用delete方法也可以将其删除.错 2、装饰设计模式中,装饰对象应该包含一个被装饰对象的引用.对 3、使用ObjectInputStream与ObjectOutputStream类来读取或存储的对象必须要实现Serializable接口,否则程序将出现NotSerializableException异常.对 4、InputStream类的close方法是用于关闭流并且释放流所占的系统资源.对 5、一般来说,把字符转换成计算机识别的字节序列称为解码,而把字节序列转换为普通人能看懂的明文字符称为编码.错 三、选择题 1、下面选项中,哪些是标准输入输出流多选AB A、System. In B、System. Out C、InputStream D、OutputStream 2、以下选项中,哪个是FileOutputStream的父类C 3、File类中以字符串形式返回文件绝对路径的的方法是 C A、getParent B、getName C、getAbsolutePath D、getPath 4、下面哪些是常用的字符码表多选ABCD A、ASCII B、UTF-8 C、ISO8859-1 D、GB2312 5、以下创建RandomAccessFile类实例对象的代码,哪些是正确的 多选AB A、RandomAccessFilenew File“D:itcastdir1”,”rw” B、RandomAccessFile “D:itcastdir1”,”r” C、RandomAccessFile “D:itcastdir1” D、RandomAccessFile “D:itcastdir1”,”wr” 6、以下哪些属于InputStream类的方法多选ACD A、int readbyte B、void flush C、void close D、available 7、以下选项中,哪个流中使用了缓冲区技术A A 、BuffereOutputStream B、 FileInputStream C、DataOutputStream D、FileReader 8、以下选项中,哪个是File类delete方法返回值的类型A A、 boolean B、 int C、 String D、 Integer 9、以下选项中,哪个文件操作类可以实现一次读入多个文件D A、 FileReader B、BufferedReader C、FileInputStream D、SequenceInputStream 10、以下对File类的public boolea isFile方法的描述,哪个是正确的A A、判断该File对象所对应的是否是文件. B、判断该File对象所对应的是否是目录. C、返回文件的最后修改时间. D、在当前目录下生成指定的目录. 四、程序填空题 1、阅读以下代码,并将空处填写完整. import .; public class Test1 { public static void mainString argsthrows Exception{ int a=4; BufferedReader br=new BufferedReadernew InputStreamReader ; "请输入一个数字"; String input= ; int b=input; ifb>a{ int sum=b/a; }else{ "输入错误"; } } } 当输入的数字是8时,打印输出的结果是 2 . 2、以下是使用FileInputStream类与FileOutputStream类复制文件.阅读以下代码,并将空处填写完整. import .; class Test2 { } 五、简答题 1、简述流的概念. public static void mainString args { } String file1, file2; int ch = 0; file1 = ""; file2 = ""; try { FileInputStream fis = new FileInputStreamfile1 ; FileOutputStream fos=new FileOutputStreamfile2; int size= ; "字节有效数、"+size; while ch = = -1 { } ; ; ch; } catch IOException e { } Java程序通过流来完成输入和输出,流是输入或输出信息的抽象.流通过Java的输入/输出系统与外设连接进行数据通信.流是抽象的对象,具体实现代码在包中. 2、Java流被分为字节流、字符流两大流类,两者有什么区别 字节流的两个基类是InputStream和OutputStream,字符流的两个基类是Reader和Writer,它们都是Object类的直接子类,字节流是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字节的字符流类. 3、简要说明管道流. 管道流分为管道输入流PipedInputStream和管道输出流PipedOutputStream,通常由一个PipedInputStream实例对象和一个PipedOutputStream实例对象相互连接而实现管道通信,PipedOutputStream向管道写入数据,PipedInputStream从管道中读取PipedOutputStream写入的数据,管道流主要用来完成线程之间的通信. 六、编程题 按照题目需求,编写程序并运行 1、编写一个程序,分别使用字节流和字符流拷贝一个文本文件. 提示: 1使用FileInputStream、FileOutputStream和FileReader、FileWriter分别进行拷贝 2使用字节流拷贝时,定义一个1024长度的字节数组作为缓冲区,使用字符流拷贝使用使用BufferedReader和BufferedWriter包装流进行包装 2、某人在玩游戏的时候输入密码123456后成功进入游戏输错5次则被强行退出,要求用程序实现密码验证的过程. 提示: 1使用包装为字符流读取键盘输入. 2BufferedReader对字符流进行包装.调用BufferedReader的readLine方法每次读取一行. 3在for循环判中判断输入的密码是否为“123456”,如果是则打印“恭喜你进入游戏”,并跳出循环,否则继续循环读取键盘输入. 4当循环完毕,密码还不正确,则打印“密码错误,结束游戏”,并调用0方法结束程序. 第8章 GUI图形用户界面 一、填空题 1、 Java中,图形用户界面简称___GUI___,它的组件包含在和这两个包中. 2、 为了避免实现监听器中定义的所有方法,造成代码的臃肿,在JDK中提供了一些___适配器___类,这些类实现了接口所有的方法,但是方法中没有任何代码,属于一种空实现. 3、 在Java中,___Graphics___类相当于一个抽象的画笔对象,使用它可以在组件上绘制图形. 4、 ___事件监听器___负责监听事件源上发生的事件,并对各种事件做出响应处理. 5、 大部分的Swing组件都是___JComponent___类的直接或者间接子类,其名称都是在原来AWT组件名称前加上字母J. 6、 AWT事件有多种多样,大致可以分为___窗体事件___、___键盘事件___、___鼠标事件___、___动作事件___等. 7、 如果点击Frame窗口右上角的关闭按钮能将其关闭,那么这个Frame窗口添加了___WindowListener___监听器,并实现了监听器的实现了___windowClosingWindowEvent e___方法. 8、 对话框可以分为___模态对话框___和___非模态对话框 ___两种. 9、 每一个容器都有一个默认的布局管理器,如果不希望通过布局管理器对容器进行布局,可以调用容器的___setLayoutnull___方法将其取消. 10、创建下拉式菜单需要使用三个组件,分别是___JMenuBar___、___JMenu___和___JMenuItem___. 二、判断题. 1、容器Container是一个可以包含基本组件和其它容器的组件.对 2、可以通过实现ActionListener接口或者继承ActionAdapter类来实现动作时间监听器.错 3、CardLayout布局管理器将界面看做一系列卡片,在任何时候只有其中一张卡片是可见的.对 4、非模态对话框是指用户需要等到处理完对话框后才能继续与其它窗口进行交互.错 5、JFrame的默认布局管理器是FlowLayout.错 三、选择题 1、下面四个组件中哪一个不是Component的子类D A、Button B、Dialog C、Label D、MenuBar 2、每一个GUI程序中必须包含一个什么组件D A、按钮 B、标签 C、菜单 D、容器 3、下面四个选项中,哪些是事件处理机制中的角色多选ABD A、事件 B、事件源 C、事件接口 D、事件监听器 4、当鼠标按键被释放时,会调用以下哪个事件处理器方法A A、mouseReleased C、mouseOff B、mouseUp D、mouseLetGo 5、ActionEvent的对象会被传递给以下哪个事件处理器方法D A、addChangeListener B、addActionListener C、stateChanged D、actionPerformed 6、AWT中,常用的布局管理器包括哪些多选ABCD A、FlowLayout布局管理器 C、CardLayout布局管理器 B、BorderLayout布局管理器 D、GridLayout布局管理器 7、下面哪些是FlowLayout类中表示对齐方式的常量多选ABD A、 C、 B、 D、 8、下面对与Swing的描述,正确的有哪些多选ABC A、Swing 是在AWT基础上构建的一套新的图形界面系统 B、Swing提供了AWT 所能够提供的所有功能 C、Swing 组件是用Java代码来实现的 D、Swing组件都是重量级组件 9、下面四对AWT和Swing对应组件中,错误的是D A、Button和JButton B、Dialog和JDialog C、MenuBar和JMenuBar D、ComboBox和JComboBox 10、使用下面哪个组件可以接收用户的输入信息C A、JButton B、JLabel C、JTextField D、以上都可以 四、程序分析题 阅读下面的程序以及注释的要求,在空格处填上相应的代码 代码一: import .; import .; public class MyLayout __extends __/此处填空/ JFrame{ JLabel labelNo,labelName,labelGender; JTextField stdno,name,gender; int x=0,y=0,w,h; Container cp=getContentPane; public MyLayout { setLayoutnull; 学号=new JLabel"labelNo、",; 姓名=new JLabel"labelName、",; 性别=new JLabel"labelGender、",; _____Stdno = new JTextField;_______ ; import .; public class MyMouseHandler extends JFrame { public MyMouseHandler { } public static void mainString args { new MyMouseHandler; final JLabel label = new JLabel"此处显示鼠标右键点击的坐标"; true; ; label, ; 300, 200; ; new MouseAdapter { }; true; public void mouseClickedMouseEvent e { } if == { } int x = ; int y = ; String banner = "鼠标当前点击位置的坐标是" + x + "," + y; banner; } } 2、编写一个JFrame窗口,要求如下: 1窗口中的NORTH区域中放置一个JPanel面板 2JPanel面板中从左到右依次放置如下组件: JLabel标签,标签的文本为“兴趣” 三个JCheckBox多选按钮,文本分别为“羽毛球”、“乒乓球”、“唱歌” JLabel标签,标签的文本为“性别” 两个JRadioButton按钮,文本分别为“男”、“女” 3窗口的CENTER区域放置一个JScrollPane容器,容器中放置一个JTextArea文本域 4当点击多选按钮和单选按钮时,会把选中按钮的文本显示在JTextArea文本域中. 参考答案 import .; import .; import .; import class Information extends JFrame { qualsgender } public Information { "你的性别为: " + gender; ; import .; import class MyMenu extends JFrame implements ActionListener { JLabel label = new JLabel"请选择菜单", ; JMenuItem aaMenuItem, baMenuItem; MyMenu { JMenuBar menuBar = new JMenuBar; JMenu aMenu = new JMenu"菜单A"; JMenu bMenu = new JMenu"菜单B"; JMenuItem aaMenuItem = new JMenuItem"菜单项 AA"; JMenuItem abMenuItem = new JMenuItem"菜单项AB"; JMenuItem baMenuItem = new JMenuItem"菜单项 BA"; aMenu; bMenu; aaMenuItem; ; abMenuItem; baMenuItem; this; this; this; setJMenuBarmenuBar; } el, ; public void actionPerformedActionEvent e { } public static void mainString args { JFrame frame = new MyMenu; ; 300, 200; true; } JMenuItem source = JMenuItem ; "选择了菜单:" + ; ; 第9章 网络编程 一、填空题 1、TCP协议的特点是 面向连接 ,即在传输数据前先在 客户端 和 服务器端 建立逻辑连接. 2、在计算机中,端口号是用 2 字节,也就是16位的二进制数表示,它的取值范围是 0-65535 . 3、TCP/IP协议被分为四个层,分别是 链路层 、 网络层 、 运输层 、 应用层 . 4、在JDK中,IP地址用 InetAddress 类来表示的,该类提供了许多和IP地址相关的操作.. 5、使用UDP协议开发网络程序时,需要使用两个类,分别是 DatagramPacket 和 DatagramSocket . 二、判断题 1、由于UDP是面向无连接的协议,可以保证数据的完整性,因此在传输重要数据时建议使用UDP协议.错 2、在网络通信中,对数据传输格式、传输速率、传输步骤等作了统一规定,只有通信双方共同遵守这个规定才能完成数据的交互,这种规定称为网络传输协议.对 3、在创建发送端的DatagramPacket对象时,需要指定发送端的目标IP地址和端口号.对 4、IPv4版本的IP地址使用4个字节来表示,IPv6版本的IP地址使用8个字节来表示.错 5、使用TCP协议通信时,通信的两端以IO的方式进行数据的交互.对 三、选择题 1、使用UDP协议通信时,需要使用哪个类把要发送的数据打包C A、Socket B、DatagramSocket C、DatagramPacket D、ServerSocket 2、以下哪个是serverSocket类用于接收来自客户端请求的方法A A、accept B、getOutputStream C、receive D、get 3、以下说法哪些是正确的多选ABD A、TCP连接中必须要明确客户端与服务器端. B、TCP协议是面向连接的通信协议,它提供了两台计算机之间可靠无差错的数据传输. C、UDP协议是面向无连接的协议,可以保证数据的完整性. D、UDP协议消耗资源小,通信效率高,通常被用于音频、视频和普通数据的传输. 4、以下哪个类用于实现TCP通信的客户端程序B A、ServerSocket B、Socket C、Client D、Server 5、进行UDP通信时,在接收端若要获得发送端的IP地址,可以使用DatagramPacket的哪个方法A A、getAddress B、getPort C、getName D、getData 6、以下哪个方法是DatagramSocket类用于发送数据的方法D A、receive B、accept C、set D、send 7、在程序运行时,DatagramSocket的哪个方法会发生阻塞B A、send B、receive C、close D、connect 8、TCP协议的“三次握手”中,第一次握手指的是什么C A、客户端再次向服务器端发送确认信息,确认连接. B、服务器端向客户端回送一个响应,通知客户端收到了连接请求. C、客户端向服务器端发出连接请求,等待服务器确认. D、以上答案全部错误 四、简答题 1、网络通信协议是什么 在Internet中传输数据都需要遵守一定的规则,这种规则通常被称作网络通信协 议.网络通信协议对数据传输格式、传输速率、传输步骤等作了统一规定,通信双方必须共同遵守这个规定才能完成数据的交互.到目前为止,网络通信协议已经有很多种,其中TCP/IP协议在世界范围内应用最为广泛. 2、TCP协议和UDP协议有什么区别 UDP协议是无连接通信协议,所谓的无连接就是指数据的发送端和接收端不建立逻辑连接.由于UDP协议消耗资源小,通信效率高,通常都会用于音频、视频和普通数据的传输.UDP协议在传输数据时不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议. TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输.在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”. 3、Socket类和ServerSocket类各有什么作用 ServerSocket类用于创建服务端程序,通过调用ServerSocket对象的accept方法,接收来自客户端的请求. Socket类用于创建客户端程序,当客户端和服务端的两个Socket建立了专线连接后,连接的一端既能向另一端连续写入字节,也能从另一端读取字节.Socket类中定义了getInputStream方法返回Socket的输入流对象,定义了getOutputStream方法返回Socket的输出流对象.只要连接的一端向该输出流对象写入了数据,连接的另一端就能从其输入流对象中读取到. 五、编程题 请按照题目的要求编写程序并给出运行结果. 1、 使用InetAddress类获取本地计算机的IP地址和主机名,甲骨文公司主机的IP地址. 提示: 1通过;获取本地计算机的InetAddress对象 2通过"";获取Oracle公司的InetAddress对象 2、 使用UDP协议编写一个网络程序,设置接收端程序监听端口为8001,发送端发送的数据是“hello world”. 提示: 1使用new DatagramSocket8001构造方法创建接收端的DatagramSocket对象,调用receive方法接收数据. 2发送端和接收端使用DatagramPacket封装数据,在创建发送端的DatagramPacket对象时需要指定目标IP地址和端口号,端口号要和接收端监听的端口号一致. 3发送端使用send方法发送数据. 4使用close方法释放Socket资源. 3、 使用TCP协议编写一个网络程序,设置服务器程序监听端口为8002,当与客户端建立连接后,向客户端发送“hello world”,客户端接负责将信息输出. 提示: 1使用ServerSocket创建服务器端对象,监听8002端口,调用accept方法等待客户端连接,当与客户端连接后,调用Socket的getOutputStream方法获得输出流对象,输出“hello world. 2使用Socket创建客户端对象,指定服务器的IP地址和监听端口号,与服务器 端建立连接后,调用Socket的getInputStream方法获得输入流对象,读取数据,并打印出来 3在服务器端和客户端都调用close方法释放socket资源.
版权声明:本文标题:Java基础入门课后习题及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703326589h447030.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论