类和对象练习
1.第一题:下面代码的运行结果是()
public class TestDome{
public static void main(String[] args){
String s =" ";
System.out.println("s="+s);
}
}
A.代码编程成功,并输出”s=”
B.代码编译成功,并输出”s=null”
C.由于String s没有初始化,代码不能编译通过。
D.代码编译成功,但捕获到NullPointException异常
答案:该题选C
因为String 是局部变量,局部变量要进行初始化。
2.第二题阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有()
package NowCoder;
class Test {
public static void hello() {
System.out.println("hello");
}
}
public class MyApplication {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test=null;
test.hello();
}
}
A.能编译通过,并正确运行
B.因为使用了未初始化的变量,所以不能编译通过
C.以错误的方式访问了静态方法
D.能编译通过,但因变量为null,不能正常运行
答案:该题选A
因为Test test=null;//定义了一个test引用不指向任何对象,所以此处可以正常访问。 且hello被static修饰是静态方法,属于类,调用静态方法不需要创建实例对象。(hello方法不依赖Test方法,是可以通过类名调用的。)所以test不引用任何对象来调用hello也可以。
3.第三题:如下代码的输出结果是什么?
public class Test {
public int aMethod(){
static int i = 0;
i++;
return i;
}
public static void main(String args[]){
Test test = new Test();
test.aMethod();
int j = test.aMethod();
System.out.println(j);
}
}
A.0
B.1
C.2
D.编译失败
答案:该题选D
main方法中testDome.aMethod();//通过对象的引用调用aMethod。调用aMethod(),但是此时int i被static所修饰,会报错。因为static是静态的属于成员变量,属于类,不能定义在方法里面。
4.第四题:当你编译和运行下面的代码时,会出现下面选项中的哪种情况?
public class Pvf{
static boolean Paddy;
public static void main(String args[]){
System.out.println(Paddy);
}
}
A.编译时错误
B.编译通过并输出结果false
C.编译通过并输出结果true
D.编译通过并输出结果null是引用
答案:该题选B
在Java中,成员变量没有赋初值的时候,会有默认的初始值。该题中打印Paddy时没有赋初始值,boolean的默认初始值为false。
基本类型的初值: int是0,boolean是false, char类型是’\u0000’,引用类型是null,如String。
5.第五题:已知如下类说明:
public class Test{
private float f=1.0f;
int m=12;
static int n=1;
public static void main(String args[]){
Test t=new Test();
}
}
如下哪些在main函数中使用是正确的()
A.t.f = 3.0
B.this.n
C.Test.m
D.Test.n
答案:该题选C
A:f是float类型,而3.0是double类型,应该为t.f = 3.0 f
B:n是静态的,需要通过类名访问,不能通过this访问,this代表当前对象的引用,但是静态的成员变量不属于this。
C:m是成员变量,通过对象来进行调用。
D:正确,n通过类名访问
6.第六题:以下代码运行输出的是
public class Person{
private String name = "Person";
int age=0;
}
public class Child extends Person{
public String grade;
public static void main(String[] args){
Person p = new Child();
}
A.输出:Person
B.没有输出
C.编译出错
D.运行出错
答案:此题选:C
private私有,则name只能在TestDome这个类当中使用。
7.第七题:下面哪一项不是 java 类访问控制关键字
A.public
B.this
C.private
D.protected
答案:此题选B
Java中的访问控制修饰符有3个:private,public,protected
而this属于关键字
8.第八题:关于以下程序代码的说明正确的是()
public class HasStatic {// 1
private static int x = 100;// 2
public static void main(String args[]) {// 3
HasStatic hsl = new HasStatic();// 4
hsl.x++;// 5
HasStatic hs2 = new HasStatic();// 6
hs2.x++;// 7
hsl = new HasStatic();// 8
hsl.x++;// 9
HasStatic.x--;// 10
System.out.println(" x=" + x);// 11
}
}
A.程序通过编译,输出结果为:x=102
B.程序通过编译,输出结果为:x=103
C.10行不能通过编译.因为x星私有静态变量
D.5行不能通过编译.因为引用了私有静态变量
答案:该题选A
x属于静态成员,静态成员都存放在所对应的方法区中。所有对x的操作针对的都是同一份。第八行中hal引用了新的new TestDome(),于第4行的new TestDome()不同。
9.第九题:以下哪项说法是正确的?
A.public关键字只能修饰类名
B.public关键字只能修饰方法
C.public关键字只能修饰成员变量
D.以上说法都不对
答案:该题选D
public是一个访问修饰限定符,可以修饰类名,接口,方法,成员变量等。
10.第十题:以下代码在编译和运行过程中会出现什么情况
public class TestDemo{
private int count;
public static void main(String[] args) {
TestDemo test=new TestDemo(88);
System.out.println(test.count);
}
TestDemo(int a) {//构造方法
count=a;
}
}
A.编译运行通过,输出结果是88
B.编译时错误,count变量定义的是私有变量
C.编译时错误,System.out.println方法被调用时test没有被初始化
D.编译和执行时没有输出结果
答案:该题选A
当代码运行到TestDemo test=new TestDemo(88);会先执行构造方法,将88的值,赋值给count,所以最终输出的值是88。
11.第十一题:在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()
A.this.A(x)
B.this(x)
C.super(x)
D. A(x)
答案:该题选:B
this有三个作用
1)this.data 表示属性;
2)this func( ) 表示只调用当前类的方法;
3)this( )表示调用当前类的构造方法;
此处在当前类当中,调用构造方法A(int a),使用this(x);的方式。