Java面向对象练习题含解析(三)

1、如果类的成员被( )访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问。
A、private
B、default
C、protected
D、public
参考答案:A
【答案解析】如果类的成员被private访问控制符来修饰,则这个成员只能被该类的其它成员访问,其它类无法直接访问。类的良好封装就是通过private关键字来实现的。

2、以下代码执行后的结果是:( )
public class Person {
String name = “小芳”;
public Person(String name) {
name = “小兰”;
}
public void show() {
this.name = “小翠”;
}
public static void main(String[] args) {
Person p = new Person(“小凤”); System.out.print(p.name);
p.show();
System.out.print(p.name);
}
}
A、小兰小翠
B、小凤小翠
C、小芳小翠
D、程序编码失败
参考答案:C

3、下列关于this关键字的说法中,错误的是( )
A、this可以解决成员变量与局部变量重名问题
B、this出现在成员方法中,代表的是调用这个方法的对象
C、this可以出现在任何方法中
D、this相当于一个引用,可以通过它调用成员方法与属性
参考答案:C
【答案解析】this关键字有三个作用,具体如下:
1、通过this关键字可以明确地去访问一个类的成员变量
2、通过this关键字调用成员方法
3、构造方法中使用“this(参数1,参数2…)”的形式来调用其它的构造方法

4、下列关于父类方法重写的描述中,错误的是()
A、如果父类方法的访问权限是public,子类重写父类该方法时的访问权限不能是private
B、子类重写父类方法时,重写的方法名、参数列表以及返回值类型必须和父类保持一致
C、如果父类的方法被final修饰,那么该方法不能被子类重写
D、子类继承父类后,可以重写父类定义的所有方法
参考答案:D
【答案解析】可以重写父类公开的方法

5、下面哪个关键字用于将类中的属性私有化( )
A、default
B、public
C、private
D、protected
参考答案:C
【答案解析】将类中的属性私有化,即使用private关键字来修饰。

6、下列关于成员变量默认值的描述中,错误的是( )
A、byte类型的数据默认值是0b
B、int类型的数据默认值是0
C、long类型的数据默认值是0
D、float类型的数据默认值是0.0
参考答案:C
【答案解析】在实例化对象时 ,Java虚拟机会自动为成员变量进行初始化,针对不同类型的成员变量,Java虚拟机会赋予不同的初始值,其中 long类型的数据默认值是0L,而不是0。

7、下列选项中,哪个可以用来创建对象()
A、new
B、this
C、super
D、abstract
参考答案:A
【答案解析】应用程序想要完成具体的功能,仅有类是远远不够的,还需要根据类创建实例对象。在Java程序中可以使用new关键字来创建对象。

8、下列关于静态方法的描述中,错误的是( )
A、静态方法指的是被static关键字修饰的方法
B、静态方法不占用对象的内存空间,而非静态方法占有对象的内容空间
C、静态方法内可以使用this关键字
D、静态方法内部只能访问被static修饰的成员
参考答案:C
【答案解析】静态方法内部不可以使用this、super等关键字。

9、下列关于构造方法的描述,错误的是()
A、一个类中只能定义一个空参数的构造方法
B、一个类中可以定义多个构造方法
C、构造方法的方法名前面没有返回值类型的声明
D、在构造方法中不能使用return语句返回一个值,但是可以单独使用return作为方法的结束
参考答案:A

10、以下关于成员属性与成员方法的描述中,错误的是( )
A、成员属性我们也叫成员变量,它就是描述对象的特征。它可以定义在类中,也可以定义在方法中
B、成员方法用于描述对象的行为
C、在类中定义的变量,我们称为成员变量
D、在类中定义的方法,我们称变成员方法
参考答案:A
【答案解析】类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也被称作属性,成员方法用于描述对象的行为,可简称为方法。定义在类中的变量被称为成员变量,定义在方法中的变量被称为局部变量。

11、当成员变量和局部变量重名时,若想在方法内使用成员变量,那么需要使用下列选项中的哪一个关键字( )
A、super
B、import
C、this
D、return
参考答案:C
【答案解析】当成员变量和局部变量重名时,若想在方法内使用成员变量,只能使用this获得成员变量。

12、下列关于类的说法中,错误的是( )
A、Java中创建类的关键字是class。
B、类中可以有属性与方法,属性用于描述对象的特征,方法用于描述对象的行为。
C、Java中对象的创建,首先需要定义出一个类。
D、一个类只能创建一个对象。
参考答案:D
【答案解析】类是对象的模板,对象是类的实例,一个类是可以创建多个对象的。

13、在Java语言中,String类型的成员变量的默认初始值是( )
A、false
B、true
C、0
D、null
参考答案:D
【答案解析】String类型属于引用类型,引用类型的默认初始值为null。

14、下列关于构造方法定义的描述中,错误的是( )
A、方法名与类名相同
B、在方法名的前面没有返回值类型的声明
C、当定义了有参构造方法,系统默认的无参构造方法依然存在
D、在方法中不能使用return语句返回一个值
参考答案:C
【答案解析】当定义了有参构造方法,系统不再提供默认的构造方法。

15、为了能让外界访问私有属性,需要提供一些使用( )关键字修饰的公有方法。
A、void
B、default
C、private
D、public
参考答案:D
【答案解析】私有属性只能在它所在类中被访问,为了能让外界访问私有属性,需要提供一些使用public修饰的公有方法。

16、下列程序的运行结果是
class Demo{
private String name;
Demo(String name){
this.name = name;
}
private static void show(){
System.out.println(name);
}
public static void main(String[] args){
Demo d = new Demo(“lisa”);
d.show();
}
}
A、输出lisa
B、输出null
C、输出name
D、编译失败,无法从静态上下文中引用非静态变量name
参考答案:D
【答案解析】静态不能直接访问非静态。

17、请阅读下面的程序,选择正确的运行结果。()
class Demo{
private static int x ;
public static void main(String[] args){
System.out.println(x++);
}
}
A、0
B、1
C、无结果
D、编译失败
参考答案:A
【答案解析】输出结果为0。

18、下列关于protected的说法中,正确的是()
A、protected修饰的方法,只能给子类使用
B、protected修饰的类,类中的所有方法只能给子类使用
C、==如果一个类的成员被protected修饰,那么这个成员既能被同一包下的其它类访问,也能被不同包下该类的子类访问。
D、以上都不对
参考答案:C
【答案解析】如果一个类的成员被protected访问控制符修饰,那么这个成员既能被同一包下的其它类访问,也能被不同包下该类的子类访问。

19、下列关于静态变量的描述中,错误的是( )
A、静态变量指的是被static修饰的变量
B、静态变量是随着类的加载而加载
C、静态变量可以被所有的实例对象共享
D、静态变量同成员变量一样,都需要通过实例对象来调用
参考答案:D
【答案解析】静态变量是通过“类名.变量名”“方式调用的。

20、下面关于构造方法的调用,正确的是( )
A、构造方法在类定义的时候被调用
B、构造方法在创建对象的时候被调用
C、构造方法在调用对象方法时被调用
D、构造方法在使用对象的变量时被调用
参考答案:B
【答案解析】调用构造方法创建对象 构造方法的作用是为对象中的属性赋值,在创建对象时,构造方法就会被调用。

21、阅读下面的代码:
class Person{
void say(){
System.out.println(“hello”);
}
}
class Example{
public static void main(String[] args){
Person p1 = new Person();
Person p2 = new Person();
p2.say();
p1.say();
p2=null;
p2.say();
}
}下列选项中,哪个是程序的输出结果?()
A、hello
B、hellohello
C、hellohellohello
D、hellohello抛出异常
参考答案:D
【答案解析】程序中创建了2个Person对象p1、p2,并分别调用了say()方法输出两个hello,然后将p2对象置为null,使p2对象失去了引用,因此再次使用p2对象调用say()方法时,会抛出异常。

22、float类型成员变量的默认初始化值是( )
A、0
B、false
C、null
D、0.0F
参考答案:D
【答案解析】实例化对象时 ,Java虚拟机会自动为成员变量进行初始化,针对不同类型的成员变量,Java虚拟机会赋予不同的初始值。float类型的默认初始值是0.0F。

23、下列关键字中,用于创建类的实例对象的是( )
A、class
B、new
C、private
D、void
参考答案:B
【答案解析】Java中使用new关键字创建对象,class用于定义一个类,private是权限修饰符,表示表示只能在本类中访问,void表示无返回值。

24、下列关于类与对象的说法中,错误的是( )
A、类是对某一类事物的抽象描述,而对象则是该类事物的个体。
B、对象是类的实例化。
C、类用于描述多个对象的共同特征,它是对象的模板。
D、类与对象没有什么实际关系。
参考答案:D
【答案解析】对象是通过类来创建的。

25、“隐藏对象的属性和实现细节,仅对外提供公有的方法”描述的是面向对象的哪个特征( )
A、封装
B、继承
C、多态
D、以上都不是
参考答案:A
【答案解析】封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。

26、下列关于构造方法的描述中,错误的是( )
A、构造方法的方法名必须和类名一致
B、构造方法不能写返回值类型
C、构造方法可以重载
D、构造方法的访问权限必须和类的访问权限一致
参考答案:D
【答案解析】构造方法权限不一定和类的访问权限一致。

27、下列关于类和对象的说法中,错误的是()
A、类用于描述多个对象的共同特征,它是对象的模板
B、类在Java中是一个可有可无的概念
C、对象是类的具体化,一个类可以对应多个对象
D、类是对事物的抽象描述,对象则是该类事物的个体
参考答案:B

28、下列关于面向对象的说法中,错误的是( )
A、面向对象思想编程,不仅增强代码了复用性,提供了开发效率,而且为程序的修改补充提供了便利。
B、面向对象就是分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候一个一个依次调用。
C、面向对象是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。
D、面向对象虽然使程序的开发效率提高了,但是程序的处理效率相对面向过程程序要低。
参考答案:B
【答案解析】面向对象是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题,具有易维护性、质量高、效率高、易扩展性等特点。

29、阅读下面的代码
public class Example{
public static void main(String[] args) {
String s1=new String(“abc”);
String s2=s1.intern();
String s3=“abc”;
System.out.println(s1== s2);
System.out.println(s2== s3);
System.out.println(s1== s3);
}
}
程序的输出结果是()
A、false
true
false

B、false
true
true
C、false
false
true
D、true
true
false
参考答案:A
【答案解析】intern()返回字符串对象的规范化表示形式。
详解请移步下方链接

点击查看此问题具体详解“java中String与new String的区别”

30、下列选项中,不属于面向对象特征的是( )
A、继承性
B、封装性
C、跨平台性
D、多态性
参考答案:C
【答案解析】面向对象有三种特性,分别是封装性、继承性和多态性。跨平台性是Java语言的特点,而不是面向对象的特征。

31、以下关于类的描述中,错误的是( )
A、在面向对象的思想中最核心就是对象,为了在程序中创建对象,首先需要定义一个类
B、定义类的关键字是Interface
C、类中的方法叫成员方法,成员方法又分为实例方法与类方法
D、类中的属性叫成员属性,成员属性又分为实例属性与类属性
参考答案:B
【答案解析】定义类的关键字是class,Interface是定义接口的关键字。

32、下面关于this关键字的描述中,错误的是()
A、如果类的成员变量与方法中的局部变量名相同,那么可以在方法中通过this关键字调用成员变量
B、只能在构造方法中使用this调用其他的构造方法
C、在构造方法中使用this调用构造方法的语句必须是该方法的第一条执行语句,且只能出现一次
D、可以在一个类的两个构造方法中使用this互相调用
参考答案:D
【答案解析】不可以在一个类的两个构造方法中使用this互相调用。

33、阅读下面的代码
class Demo{
Demo(){}
}
下列构造方法中,哪个构造方法可以存在上述Demo类中?( )
A、public Demo(){};
B、private Demo(){};
C、Demo(int age){};
D、String name(){};
参考答案:C

34、下列关于类和对象的描述,错误的是( )
A、对象是类的实例
B、一个类只能有一个实例化对象
C、类是对象的抽象
D、类用于描述一组对象的共同特征和行为
参考答案:B
【答案解析】类是对象的模板,对象是类的实例,一个类可以创建多个对象。

35、Java提供了4种访问级别,以下控制级别由小到大依次列出正确的是()
A、private、default、protected public
B、default、private、protected public
C、protected、default、private、public
D、protected、private、default、public
参考答案:A

36、下面关于重载的描述,错误的是()
A、构造方法不能重载
B、重载要求方法名相同,参数列表不同
C、方法重载发生在一个类的内部
D、方法的返回值类型不是区分方法重载的条件

参考答案:A
【答案解析】构造方法可以重载

37、静态方法运行时,在哪个内存区域中( )
A、栈内存
B、堆内存
C、方法区
D、寄存器
参考答案:A
【答案解析】访问运行都在栈内存。

38、下列关于多线程中的静态同步方法说法中,正确的是( )
A、静态同步方法的锁不是this,而是该方法所在类的class对象。
B、静态同步方法的锁既可以是this,也可以是该方法所在类的class对象。
C、一个类中的多个静态同步方法可以同时被多个线程执行。
D、不同类的静态同步方法被多线程访问时,线程间需要等待。
参考答案:A
【答案解析】如果需要同步的方法是静态方法,静态方法不需要创建对象就可以直接使用类名.方法名()的方式访问调用,这是因为静态同步方法的锁是该方法所在类的class对象,该对象可以直接使用类名.class的方式获取。一个类的同步静态方法,同一时间只能被一个线程执行。不同类的静态同步方法,线程不需要等待。

39、阅读下列的程序
class Person{
static{
System.out.println(“static”);
}
Person(){
System.out.println(“构造”);
}
}
class Demo{
public static void main(String[] args){
Person p = new Person();
}
}
下列选项中,程序的运行结果是()
A、构造
B、static
构造
C、static
D、没有输出结果
参考答案:B
【答案解析】静态代码块优先于构造方法运行。

40、下面关于静态变量的描述,正确的是( )
A、静态变量可以定义在类中的任意位置
B、静态变量一但被赋值不能被修改
C、静态变量可以被类直接调用,因此可以说静态变量的生命周期与实例无关
D、以上都不对
参考答案:C
【答案解析】static关键字只能修饰类的成员,不能随意使用静态变量的值可以被修改。 final修饰的变量被称为常量,它只能被赋值一次,也就是说final修饰的变量一旦被赋值,其值不能改变。

41、下列关于封装的描述中,正确的是( )
A、方法和类都可以称为封装体
B、封装隐藏了程序的实现细节,同时对外提供了特定的访问方式
C、封装能提高代码的复用性
D、以上说法均错误
参考答案:A,B,C
【答案解析】根据封装的特点和作用,可以知道ABC的说法均正确。

42、下列关于构造方法和普通方法的描述中,正确的是( )
A、构造方法不能指定返回值类型,普通方法可以指定返回值类型
B、构造方法中不能指定参数,而普通方法可以指定参数
C、在同一个类中,构造方法必须位于普通方法之前
D、构造方法能够在实例对象的同时进行初始化
参考答案:A,D
【答案解析】与普通方法相比,构造方法的目的是在实例对象的同时进行初始化工,它具有如下特点: 1、 方法名与类名相同 2、 在方法名的前面没有返回值类型的声明3、 在方法中不能使用return语句返回一个值

43、以下关于this关键字说法中,正确的是( )
A、this关键字可以解决成员变量与局部变量重名的问题
B、this关键字出现在成员方法中,代表的是调用这个方法的对象
C、this关键字可以出现在任何方法中
D、this关键字相当于一个引用,可以通过它调用成员方法与属性
参考答案:A,B,D
【答案解析】this只能出现在成员方法和构造方法中。

44、下列关于类与对象的说法中,正确的是( )
A、类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体
B、对象用于描述现实中的个体,它是类的实例
C、类用于描述多个对象的共同特征,它是对象的模板
D、对象是根据类创建的
参考答案:A,B,C,D
【答案解析】类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。也可以说类是对象的模板,对象是类的实例,并且一个类可以创建对个对象。

45、下列关于方法重载的说法中,正确的是( )
A、形式参数的个数不同。
B、形式参数的个数不同,数据类型不同。
C、形式参数的个数相同,数据类型不同。
D、形式参数的个数相同,数据类型顺序不同。
参考答案:A,B,C,D
【答案解析】方法的重载分为三种,形式参数的个数不同,形式参数的数据类型不同,形式参数的个数相同数据类型的顺序不同。

46、下面关于静态变量的描述正确的是( )
A、静态变量可以通过类名直接调用,因此也称类变量
B、静态变量可以在非静态方法中使用
C、静态变量在成员变量加载之后被加载
D、成员变量就是静态变量
参考答案:A,B
【答案解析】静态变量在加载时加载,成员变量是在静态变量之后加载。 成员变量并不是静态变量,只有使用static关键字修饰的成员变量才是静态变量。

47、下列关于构造方法的定义,说法正确的是( )
A、在方法中不能使用return语句返回一个值
B、方法名与类名相同
C、不能用private修饰方法
D、在方法名的前面没有返回值类型的声明
参考答案:A,B,D
【答案解析】在一个类中定义的方法如果同时满足以下三个条件,该方法称为构造方法,具体如下: 1、方法名与类名相同 2、在方法名的前面没有返回值类型的声明 3、在方法中不能使用return语句返回一个值

48、下列选项中,哪些可以定义在类中( )
A、类
B、成员方法
C、构造方法
D、成员变量
参考答案:A,B,C,D
【答案解析】类中可以定义成员变量、成员方法和构造方法,除此之外,在类中还可以定义类,在类中被定义的类是内部类。

49、下面选项中,可以和int max(int a,int b,double c)方法构成重载关系的是( )
A、double max(int a,int b)
B、void max(int a,double c,int b)
C、double max(double a,double b)
D、int max(int x,int y,double z)
参考答案:A,B,C
【答案解析】在一个类中定义多个相同的方法,只要参数列表不同就可以构成重载关系。

50、下列关于静态代码块的描述中,正确的是( )
A、静态代码块指的是被static关键字修饰的代码块
B、静态代码块随着类的加载而加载
C、使用静态代码块可以实现类的初始化
D、每次创建对象时,类中的静态代码块都会被执行一次
参考答案:A,B,C
【答案解析】静态代码块中的代码只会给执行一次。

51、在Java程序中,定义类必须使用class关键字。
参考答案:对

52、当一个对象没有任何变量引用时,它将变成垃圾对象。
参考答案:对

53、Java程序中,可以使用关键字new创建新的对象。
参考答案:对

54、当系统创建该类的实例时,系统自动为成员变量分配内存空间,并在分配内存空间后,自动为成员变量指定初始值。
参考答案:对

55、在成员方法中出现的this关键字,代表的是调用这个方法的对象。
参考答案:对

56、Java中可以通过this关键字解决成员变量与局部变量名称冲突问题。
参考答案:对
【答案解析】通过this关键字可以明确地去访问一个类的成员变量,解决与局部变量名称冲突问题。

57、如果类的成员被private修饰,那么这个成员只能被该类的其他成员访问,其他类无法直接访问。
参考答案:对

58、静态代码块中可以对静态成员变量进行赋值。
参考答案:对

59、只能在构造方法中使用this调用其它的构造方法,不能在成员方法中使用。
参考答案:错

【答案解析】setter\getter方法中可以调用this关键字。

60、静态变量只能在静态方法中使用。
参考答案:错
【答案解析】静态变量可以被类直接调用也可以被其他静态和非静态成员调用。 静态变量可以在静态和非静态方法中使用。静态变量被所有实例共享,可以使用“类名.变量名”的形式来访问。

61、this关键字可以在所有的方法中使用。
参考答案:错
【答案解析】this关键字只能在成员方法、构造方法中使用,不能在静态方法中使用

62、如果类中没有定义构造方法,则系统会自动创建默认的构造方法。
参考答案:对

63、static关键字可以修饰成员变量,也可以修饰局部变量。
参考答案:错
【答案解析】static关键字只能修饰成员变量,不能修饰局部变量

64、public class Demo{
public Demo(){}
public void Demo(int x){}
}
上述代码中的构造方法Demo重载了。
参考答案:错
【答案解析】没有重载,构造方法不能写返回值类型。

65、成员变量在整个类中有效,而局部变量只在定义它的方法内有效。
参考答案:对

66、创建对象时,JVM会找到对应的.java文件,通过.java文件创建对象。
参考答案:错
【答案解析】创建对象时,JVM会找到对应的.class文件,通过.class文件创建对象,如果没有.class文件会找到.java文件将其生成.class文件再通过.class文件创建对象。

67、静态方法中,可以访问非静态成员变量。
参考答案:错
【答案解析】静态不能直接访问非静态成员变量。

68、构造方法没有返回值类型,所以可以写void,也可以不写。
参考答案:错
【答案解析】构造方法不可以写返回值类型 构造方法没有返回值类型,不能写void。

69、protected修饰的方法,只能给子类使用。
参考答案:错
【答案解析】同一包下的类也可以使用。

70、定义在类中的变量叫成员变量,定义在方法中的变量叫局部变量。
参考答案:对

71、静态变量可以被类和对象调用。
参考答案:对
【答案解析】静态变量指的是被static关键字修饰的变量,它可以被类和对象调用,并且是通过类名调用的

72、Java允许在一个程序中定义多个同名的方法,但是参数的类型或个数必须不同,这就是方法的重载。
参考答案:对

73、只有private修饰成员变量才是类的封装体现。
参考答案:错
【答案解析】private修饰成员变量,仅仅是封装的一种体现。方法和类本身的设计其实也体现了封装的思想。

74、Java是一种面向对象的程序设计语言。
参考答案:对

75、静态方法随着类的加载而加载,随着类的消失而消失。
参考答案:对

76、静态方法可以被类名调用,也可以被对象调用。
参考答案:对

77、在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。
参考答案:对

78、在定义一个类时,可以使用private关键字修饰该类,以防止其被外部直接访问。
参考答案:错
【答案解析】private关键字不能修改类,会报编译错误,将一个类私有化没有任何意义

79、面向对象的特点主要可以概括为封装性、继承性和重载性。
参考答案:错
【答案解析】面向对象的特点主要可以概括为封装性、继承性和多态性

80、重载的构造方法中,可以使用this语句互相调用。
参考答案:错
【答案解析】构造方法重载,不能在一个类的两个构造方法中使用this互相调用。

81、一个类中如果没有定义构造方法,那么这个类就没有构造方法。
参考答案:错
【答案解析】没有定义构造方法,类中会有默认的,空参数构造方法。如果在一个类中没有定义构造方法,那么系统会自动为这个类创建一个默认的构造方法。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值