3、什么是方法重载?
方法重载指的是在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一致。
调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。
六、编程题
请按照题目的要求编写程序并给出运行结果。
1、请编写程序,实现计算“1+3+5+7+…+99”的值。
提示:
1)使用循环语句实现自然数1~99的遍历。
2)在遍历过程中,通过条件判断当前遍历的数是否为奇数,如果是就累加,否则不加。
2、已知函数
x+3(x>0)
y=0(x=0)
x2–1(x<0)
请设计一个方法实现上面的函数,根据传入的值x的不同,返回对应的y值。
提示:
1)定义一个static修饰符修饰的方法,方法接收一个int类型的参数x,返回值为int类型。
2)在方法中使用if…elseif..else语句针对x的值进行三种情况的判断。
3)根据判断结果分别执行不同的表达式,并将结果赋予变量y。
4)在方法的最后返回y的值。
5)在main方法中调用设计好的方法,传入一个int型的值,将方法的返回值打印。
3、请编写程序,实现对数组{25,24,12,76,101,96,28}的排序。
提示:
使用冒泡排序算法。
第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、publicvoidHH{…}B、publicclassMove(){…}
C、publicclassvoidnumber{}D、publicclassCar{…}
3、在以下什么情况下,构造方法会被调用?
B
A、类定义时B、创建对象时C、调用对象方法时D、使用对象的变量时
4、下面对于构造方法的描述,正确有哪些?
(多选)ABC
A、方法名必须和类名相同
B、方法名的前面没有返回值类型的声明
C、在方法中不能使用return语句返回一个值
D、当定义了带参数的构造方法,系统默认的不带参数的构造方法依然存在
5、使用this调用类的构造方法,下面的说法正确的是?
(多选)ACD(ABCD)
A、使用this调用构造方法的格式为this([参数1,参数2…])
B、只能在构造方法中使用this调用其它的构造方法
C、使用this调用其它构造方法的语句必须放在第一行
D、不能在一个类的两个构造方法中使用this互相调用
6、下面哪些可以使用static关键字修饰?
(多选)AC(ACD)
A、成员变量B、局部变量C、成员方法D、成员内部类
7、关于内部类,下面说法正确的是?
(多选)ACD(ABCD)
A、成员内部类是外部类的一个成员,可以访问外部类的其它成员
B、外部类可以访问成员内部类的成员
C、方法内部类只能在其定义的当前方法中进行实例化
D、静态内部类中可以定义静态成员,也可以定义非静态成员
8、下面对于单例设计模式的描述,正确的是?
(多选)BCD(ABCD)
A、类中定义一个无参的构造方法,并且声明为私有
B、在内部创建一个该类的实例对象,使用静态变量引用该实例对象
C、使用private修饰静态变量,禁止外界直接访问
D、定义静态方法返回该类实例
9、请先阅读下面的代码D
publicclassTest{
publicTest(){
System.out.println("构造方法一被调用了");
}
publicTest(intx){
this();
System.out.println("构造方法二被调用了");
}
publicTest(booleanb){
this
(1);
System.out.println("构造方法三被调用了");
}
publicstaticvoidmain(String[]args){
Testtest=newTest(true);
}
}
上面程序的运行结果为下列哪一项?
A、构造方法一被调用了B、构造方法二被调用了
C、构造方法三被调用了D、以上三个选项之和
10、Outer类中定义了一个成员内部类Inner,需要在main()方法中创建Inner类实例对象,以下四种方式哪一种是正确的?
D
A、Innerin=newInner()B、Innerin=newOuter.Inner();
C、Outer.Innerin=newOuter.Inner();D、Outer.Innerin=newOuter().newInner();
四、程序分析题
阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果。
否则请说明编译失败的原因。
代码一:
不能,secret是私有成员,只能类内部访问(程序不能编译通过,因为在类A中的成员变量secret用private修饰,所以在类Test1中无法访问)
classA{
privateintsecret=5;
}
publicclassTest1{
publicstaticvoidmain(String[]args){
Aa=newA();
System.out.println(a.secret++);
}
}
代码二:
250(程序不能编译通过,因为在静态方法method()中不能访问非静态成员变量x。
)
publicclassTest2{
intx=50;
staticinty=200;
publicstaticvoidmethod(){
System.out.println(x+y);
}
publicstaticvoidmain(String[]args){
Test2.method();
}
}
代码三:
Inner为私有内部类,不允许外部访问(inner)Innerinner=newOuter().newInner();可以用外部类访问内部类
publicclassOuter{
publicStringname="Outer";
privateclassInner{
Stringname="inner";
voidshowName(){
System.out.println(name);
}
}
publicstaticvoidmain(String[]args){
Innerinner=newOuter().newInner();
System.out.println(inner.name);
}
}
五、简答题
1、构造方法和普通的成员方法有什么区别?
构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。
而普通方法只有在使用的时候才会被调用。
在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值
2、单例设计模式具备哪些特点?
单例模式可以保证在整个程序运行期间针对该类只存在一个实例对象。
六、编程题
1、请按照以下要求设计一个学生类Student,并进行测试。
要求如下:
1)Student类中包含姓名、成绩两个属性
2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值.
3)Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值
4)在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,一个使用有参的构造方法,在构造方法中给姓名和成绩赋值
2、定义一个Father和Child类,并进行测试。
要求如下:
1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“zhangjun”。
2)Child类为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
A.try B.catch C.throws D.throw
3、关于super关键字以下说法哪些是正确的?
(多选)ABD(ABC)
A、super关键字可以调用父类的构造方法
B、super关键字可以调用父类的普通方法
C、super与this不能同时存在于同一个构造方法中
D、super与this可以同时存在于同一个构造方法中
4、以下说法哪些是正确的?
(多选)ABCD
A、Java语言中允许一个类实现多个接口
B、Java语言中不允许一个类继承多个类
C、Java语言中允许一个类同时继承一个类并实现一个接口
D、Java语言中允许一个接口继承一个接口
5、类中的一个成员方法被下面哪个修饰符修饰,该方法只能在本类被访问?
C
A、publicB、protectedC、privateD、default
6、关于抽象类的说法哪些是正确的?
(多选)AC
A、抽象类中可以有非抽象方法。
B、如果父类是抽象类,则子类必须重写父类所有的抽象方法。
C、不能用抽象类去创建对象。
D、接口和抽象类是同一个概念。
7、在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字?
C
A、inheritsB、implementsC、extendsD、modifies
8、System类位于以下哪个包中?
D
A、java.ioB、java.utilC、java.awtD、java.lang
9、已知类的继承关系如下:
A
classEmployee;
classManagerextendsEmployee;
classDirectorextendsEmployee;
则以下语句能通过编译的有哪些?
A、Employeee=newManager();B、Directord=newManager();
C、Directord=newEmployee();D、Managerm=newDirector