1.以下关于Java语言继承的说法正确的是( )
A.Java中的类可以有多个直接父类
B.抽象类不能有子类
C.Java中的接口支持多继承
D.最终类可以作为其它类的父类
【正确答案】C
【答案解析】A单继承,B抽象类可以有子类,Dfinal修饰的类不能被继承,典型代表String类。
2 下列语句序列执行后,k 的值是( )。 int x=6; int y=10; int k=5; switch(x%y) { case 0: k=x*y; case 6: k=x/y; case 12: k=x-y; default: k=x*y-x; }
A.60
B.5
C.0
D.54
【正确答案】D
【答案解析】先执行case6 但是没有break,所以最终会执行default k=54
3 关于instanceof的描述错误的是( )
A.instanceof是Java中的二元运算符
B.左边是对象,右边是类
C.当对象是右边类或子类所创建对象时,返回true;否则,返回false
D.instanceof左边显式声明的类型与右边对象不能是同种类或存在继承关系
【正确答案】D
【答案解析】instanceof左边显式声明的类型与右边对象是同种类或存在继承关系
4 数组的创建方式以下哪种方式错误( )
A.int[] a = new int[5];
B.int[] a = {1,5,3,2};
C.int[] a = new int[5]{3,2,7,1,5};
D.a = new int[]{3,2,7};
【正确答案】C
【答案解析】数组三中创建方式:int[] a = new int[5];int[] a={1,2,3};a=int[]{1,2,3}
5 关于数组的长度属性描述错误的是( )
A.a.length()可以得出数组长度
B.长度不可变
C.最大下标 a.length-1
D.数组具有长度
【正确答案】A
【答案解析】数组长度:a.length
6 定义变量b:boolean b=true;则String.valueOf(b)的类型是( )
A.boolean
B.String
C.FALSE
D.int
【正确答案】B
【答案解析】返回值是true,是字符串。
7 Integer类缓存数组范围是( )?
A.[0,255]
B.[-127,128]
C.[-128,127]
D.以上都不对
【正确答案】C
【答案解析】[-128,127]
8 以下关于this和super,说法正确的是( )
A.都可以用在main()方法中
B.都是指一个内存地址
C.不能用在main()方法中
D.意义相同
【正确答案】C
【答案解析】A main方法是静态的,this是对本类对象的引用,静态先于对象。B,this是对当前对象的引用,super是对对象父类的引用,D意义不同
9 关于 java.util.Arrays 工具类的描述错误的是
A.该工具类是数组工具类
B.Arrays.copyOf(a, b) 是用来把数组,复制成指定长度的新数组
C.Arrays.copyOf()不会新建数组
D.Arrays.sort(a)用来把数组排序
【正确答案】C
【答案解析】Arrays.copyOf()是对数组的复制,会新建数组。
10.下列说法不正确的是( )
A.final饰的方法,不能重载
B.普通可以通过类名.方法名进行调用
C.构造方法可以被重载,不能被重写
D.static修饰的类可以被继承
【正确答案】A,B
【答案解析】final修饰的方法不能重写,普通方法要新建对象才能调用。
11.Object的描述错误的是( )
A.Object是顶层父类
B.一个类,如果不继承其他类,默认继承 Object
C.调用Object下toString方法是返回对象的字符串表示形式
D.Object下的equals方法是用来比较对象是否数值相等
【正确答案】D
【答案解析]equals方法是用来比较当前对象与参数对象是否相等,即两个对象内容是否相等。
12.下面关于继承的哪些叙述是正确的?
A.在java中允许多继承。
B.在java中一个类只能实现一个接口。
C.在java中一个类不能同时继承一个类和实现一个接口。
D.java的单一继承使代码更可靠。
【正确答案】D
【答案解析】Ajava只允许单继承(即一个子类只有一个父类),B一个类可以实现多个接口,C一个类能同时继承类和实现接口。(多继承:一个类有多个父类)
13.(单选题)以下关于面向对象概念的描述中,不正确的一项是(C) 。
A.在构造方法中,this()只能出现在构造方法第一行位置.
B.在构造方法中,super()只能出现在构造方法第一行位置.
C.this()和super()可以同时出现在同一个构造方法中,this()指代调用本类中其他构造方法,super()指代调用父类构造方法.
D.this()和super()不能同时出现在同一个构造方法中,否则编译器会报错.
解析:this()和super()都只能出现在构造方法第一行位置,所以不能出现在同一构造方法中,否则编译器会报错。
14.(多选题)查看下面的代码,哪几行会有错误 (CD )
1.public class MyClass {
2. static String s1;
3. String s2;
4. public static void main(String args[]) {
5. String s3;
6. System.out.println("s1 =" + s1);
7. System.out.println("s2 =" + s2);
8. System.out.println("s3 =" + s3);
9. }
10.}
A.5 B.6 C.7 D.8
解析:main方法是静态方法,静态方法不能访问非静态变量,7错,局部变量要先赋初值才能用,8错。
15. (单选题)程序执行的结果是(B )
public class Test {
String name="Tom";
public Test(String name){
name=name;
}
public static void main(String [] args){
Test t = new Test("Jack");
System.out.println(t.name);
}
}
A. null B. Tom C. Jack D. " "
解析:新建Test对象将“jack”传入构造方法,但是name=name是局部变量给局部变量赋值,所以不会改变成员变量name的值。
16.子类继承父类先调用父类构造方法,再调用子类构造方法,子类构造方法默认有super()。
17.重载和重写
重载:方法名相同,参数数量或参数类型不同。
重写:两同两小一大
两同:方法名相同,参数列表相同
两小:(1)子类方法的返回值类型小于或等于父类方法,
1)void类型时必须相同
2)基本类型时必须相同
3)引用类型时,子类方法的返回值类型小于或等于父类方法
(2)子类方法抛出的异常小于或等于父类方法。
一大:子类方法的访问修饰符权限大于或等于父类方法。
18.构造方法的作用
构造方法的作用是在新建对象时对类中的成员变量进行初始化。
19 (单选题)下列关于修饰符混用的说法,错误的是(D ) :
A.static修饰的属性称为静态属性,可以使用类名直接调用.
B.static修饰的方法称为静态方法,可以直接使用类名调用.
C.static静态块比构造方法要先执行
D.static 方法中能处理非 static 的属性
解析:静态方法和静态变量存在方法区,只有一份,在类加载时被优先加载到方法区,与对象无关,静态方法不能使用非静态变量。静态变量每次用的都是同一份。
20.软件执行顺序:静态变量,静态块(可以有多个),main方法
21 (单选题)下列关于Jave语言内存回收的说明正确的是:(B )
A. 程序员必须创建一个线程来释放内存
B. 内存回收程序负责释放无用内存
C. 内存回收程序允许程序员直接释放内存
D. 内存回收程序可以在指定的时间释放内存对象
解析:垃圾回收机制是JVM的一个线程,用于回收没有引用的对象,java程序员不用担心内存管理,垃圾回收器会自动进行回收管理。
22.子类继承父类,在新建子类对象时会有一个隐式的super()先调用父类的构造方法,若父类没有无参的构造方法则编译出错。
23.方法的返回值类型为void类型,可以有return,但是return后面不能有值,用来跳出方法体。
24. 重载是方法签名相同,运行期绑定,根据对象的类型调用相应的方法(错 )
重载是编译期绑定。
25.一个Unicode字符占4个字节。 (错)Unicode:2个字节
26.JVM将内存分为了几个区域,每个区域都存储的是什么?
JVM将内存分为方法区,堆,栈,分别存储不同的数据
方法区:用于存储类的各种信息(包括方法)
栈:用于存储new关键字所创建的对象,以及对象中的成员变量
堆:用于存储方法中的局部变量
27、(多选题)java7以后switch case支持的数据类型有哪些:ABCDE
A. byte
B. short
C. int
D. char
E. String
28.(多选题)从下列选项中选择正确的Java表达式 BCD
A. int k = 10000L;
B. byte b = 23;
C. char c = 74;
D. long j = 8888;