判断题
1.声明成员变量时如果没有指定初始值,Java编译器会为其指定默认值。
正确答案:T
2.package语句必须放到java程序的最开始。
正确答案:T
3.类及其属性、方法可以同时有一个以上的修饰符来修饰。
正确答案:T
4.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为重载。
正确答案:T
5.在实例方法或构造器中,this用来引用当前对象,通过使用this可引用当前对象的任何成员。
正确答案:T
6.有的类定义时可以不定义构造函数,所以构造函数不是必需的。
正确答案:F
7.非静态的成员变量(实例变量)能被静态方法(类方法)和非静态方法(实例方法)所直接使用。
正确答案:F
8.实例变量只能通过对象名访问,类变量既可以通过某个对象名也可以通过类名来访问。
正确答案:T
9.
有如下类的定义:
public class Rectangle {
public Rectangle(int l) { //构造方法1
if (l > 0) {
w = l;
h = l;
}
}
public Rectangle(int w1, int h1) { //构造方法2
if (w1 > 0 && h1 > 0) {
w = w1;
h = h1;
}
}
}
下面使用Rectangle类创建一个对象,是否正确?
Rectangle rect=new Rectangle();
正确答案:F
10.在定义一个类的时候,如果类的成员被private所修饰,该成员不能在类的外部被直接访问。
正确答案:T
单选题
1.假设定义了类 Test ,正确创建对象的格式是( )。
A.Test t = 1 ;
B.Test t = new Test() ;
C.Test t = new Test ;
D.Test t = Test() ;
正确答案:B
2.
阅读下列程序:
class A{
int x;
static int y;
void fac(String s){
System.out.println(“字符串:”+s);
}
}
下列选项中描述正确的是( )
A.x,y和s都是成员变量
B.x是成员变量,y是类变量,s是局部变量
C.x和y是实例变量,s是参数
D.x,y和s都是实例变量
正确答案:B
3.
阅读下列程序:
class A{
int x;
static int y;
void fac(String s){
System.out.println(“字符串:”+s);
}
}
下列选项中描述正确的是( )
A.x,y和s都是成员变量
B.x是成员变量,y是类变量,s是局部变量
C.x和y是实例变量,s是参数
D.x,y和s都是实例变量
正确答案:B
以下关于构造函数的描述错误的是( )?
A.构造函数的返回类型只能是void型
B.构造函数是类的一种特殊函数,它的方法名必须与类名相同
C.构造函数的主要作用是完成对类的对象的初始化工作
D.一般在创建新对象时,系统会自动调用构造函数
正确答案:A
5.
关于“包”的描述错误选项为:
A.包是Java语言中有效地管理类的一个机制
B.包名的目的是有效的区分名字相同的类。不同Java源文件中两个类名字相同时,它们可以通过隶属不同的包来相互区分
C.通过关键字package声明包
D.import “java.util.#;” 表示引入java.util包中所有的类
正确答案:D
6.已知name,age是Person类的成员属性,关于构造方法,下面哪个描述是正确的?
A.
public void Person(String name){
this.name=name;
} //这是Person类中的构造方法
B.
public Person(){
name="";
age=10;
}
public Person(String name){
Person();
this.name=name;
} //这是Person类中两个构造方法
C.
public Person(String name){
this();
this.name=name;
} //这是Person类中唯一的构造方法
D.
public Person(){
name="";
age=10;
}
public Person(String name){
this();
this.name=name;
} //这是Person类中两个构造方法
正确答案:D
7.
一个*.java文件中可以包含多少个public类?
A.最多1个
B.最少1个
C.只能0个
D.不限制
正确答案:A
8.对于下列Dog类,哪个叙述是错误的?
class Dog {
Dog(int m) { }
Dog(double m) { }
int Dog(int m) { return 23; }
void Dog(double m) { }
}
A.Dog(int m)与 Dog(double m)是互为重载的构造方法。
B.int Dog(int m)与void Dog(double m)是互为重载的非构造方法。
C.Dog类只有两个构造方法,而且没有无参数的构造方法
D.Dog类有3个构造方法
正确答案:D
9.类ABC定义如下:
1.public class ABC{
2. public int max( int a, int b) { }
3.
4.}
将以下哪个方法插入行3是不合法的。( )
A.public float max(float a, float b, float c){ }
B.public int max(int c, int d){ }
C.public float max(float a, float b){ }
D.private int max(int a, int b, int c){ }
正确答案:B
10.关于类和对象的关系,下列说法哪种说法是错误的?
A.类和对象都是具体的。
B.类是抽象的,对象是具体的。
C.一般情况下,在定义类之后,能创建无数个对象,可以说,类能化身千万。
D.类是引用型数据类型。
正确答案:A
11.关于被私有访问控制符private修饰的成员变量,以下说法正确的是( )
A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
正确答案:C
12.下面关于缺省构造方法的描述中正确的是( )。
A.当类中没有定义任何构造方法时,Java编译器将为这个类创建缺省构造方法
B.缺省构造方法可以初始化其他方法中定义的变量
C.Java编译器会为所有的类创建缺省构造方法。
D.如果在一个类中定义的构造方法都声明了参数,Java编译器将为这个类创建一个缺省构造方法
正确答案:A
13.为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。
A.static void method( )
B.public void method( )
C.final void method( )
D.abstract void method( )
正确答案:A
14.对于下列Dog类,哪个叙述是错误的?
class Dog{
Dog(int m){ }
Dog(double m){ }
int Dog(int m){return 23; }
void Dog(double m){ }
}
A.Dog(int m)和Dog(double m)是互为重载的构造方法
B.int Dog(int m)和void Dog(double m)是互为重载的非构造方法
C.Dog类有三个构造方法
D.Dog类有两个构造方法,而且没有无参的构造方法
正确答案:C
15.分析如下代码:
public class Test {
private int t;
public static void main(String[] args) {
int x;
System.out.println(t);
}
}
A.变量t没有初始化,所以会引起错误。
B.变量t是私有的,因此不能在main方法中访问。
C.t是非静态的,不能在静态的main方法中引用。
D.变量x没有初始化,所以会引起错误。
正确答案:C
16.已知:Student类的定义如下:
class Student{
int age;
}
在主方法中,有如下两段程序代码A和B:
int a; //变量a是局部变量
System.out.println(a); //A段代码
Student student=new Student();
System.out.println(student.age); //B段代码
关于A和B两段代码的合法性,说法正确的是:( )。
A.都不合法
B.都合法,将输出0和0
C.A段合法,输出0;B段不合法
D.A段不合法;B段合法,输出0
正确答案:D
17.关于构造方法定义与作用,下列说法错误的是:( )。
A.用来创建类的实例时调用的方法
B.调用该方法时,对实例变量赋值
C.定义时,方法名称与类名相同,返回值类型可以不写,也可以写成void
D.一个类的构造方法可以定义多个,多个构造方法的参数有明显区别。
正确答案:C
18.关于以下代码的说明,正确的是( )。
class Main {
static int x = 10;
static {
x += 5;
System.out.println("x=" + x);
}
public static void main(String args[ ])
{
System.out.println("x=" + x);
}
static {
x /= 3;
System.out.println("x=" + x);
}
}
A.不能通过编译,因为缺少方法名和返回类型
B.不能通过编译,因为只能有一个静态初始化器
C.编译通过,执行结果为:
x=15
x=5
x=5
D.编译通过,执行结果为:
x=3
x=8
x=8
正确答案:C
19.在Java中,针对类和成员提供了4种访问级别,以下控制级别由小到大的顺序是:( )。
A.private< 默认 < protected < public
B.默认 < private< protected < public
C.protected < 默认 < private < public
D.protected < private< 默认 < public
正确答案:A
20.构造方法中调用其他构造方法时,this(,,...)须放在代码的第( )行。
A.可以不出现
B.1
C.末
D.无限制
正确答案:B
程序填空题
1.jmu-Java-03面向对象基础-构造函数、this与toString(填空)
题目要求:
1.使用this调用已有的有参构造方法,将width与length分别设置为5和6。
2.在Rectangle类中覆盖toString方法。按照width=实际宽度值,length=实际长度值的格式返回。
public Rectangle(){ this(5,6); //空1 } public Rectangle(int width, int length) { this.width = width; this.length = length; } public String toString() //空2 { return "width="+width+"length="+length; //空3 }
2.this在构造方法的使用
class Base {
int x, y, z, w;
public Base(int a, int b) {
x = a;
y = b;
}
public Base(int a, int b, int c, int d) {
this(a,b) // 换一种办法实现赋值 x=a, y=b //空1
z = c;
w = d;
}
}
public class Main {
public static void main(String[] args) {
Base base = this(1, 1, 1, 1); //空2
System.out.println(base.x + " " + base.y + " " + base.z + " " + base.w);
}
}

被折叠的 条评论
为什么被折叠?



