题一
1.以下哪种JAVA的变量表达式使得变量a和变量b具有相同的内存引用地址( )
A:String a = “hello”; String b = “hello”;
B:Integer a; Integer b = a;
C:int a = 1; Integer b = new Integer(1);
D:int a = 1; Integer b = 1;
正确答案: A B
内存引用地址,是指栈中存放的地址,来指向堆中的某个位置。
int 是基本类型,数据直接存放在栈中,不存在内存引用地址的说法
A对 指向常量池里的”hello”。
B对 题中没说声明的a是局部变量。
C错 int a =1;并不指向堆中,它只有值,没有引用地址,Integer b =new Integer(1);指向堆中地址为1的位置。
D错 原因同C
题二
12.关于equals和hashCode描述正确的是 ()
A:两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)
B:两个obj,如果hashCode()相等,equals()不一定相等
C:两个不同的obj, hashCode()可能相等
D:其他都不对
正确答案: A B C
“==“:作用是判断两个对象的地址是否相等,判断两个对象是不是同一个对象,如果是基本数据类型,则比较的是值是否相等。
“equal”:作用是判断两个对象是否相等,但一般有两种使用情况
1.类没有覆盖equals()方法,则相当于等号
2.类覆盖equals()方法,一般,我们都通过equals()方法来比较两个对象的内容是否相等,相等则返回true,如String
地址比较是通过计算对象的哈希值来比较的,hashcode属于Object的本地方法,对象相等(地址相等),hashcode相等,对象不相等,hashcode()可能相等,哈希冲突
题三
3.jdk1.8中,下面有关java 抽象类和接口的区别,说法错误的是?
A:抽象类可以有构造方法,接口中不能有构造方法
B:抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法
C:一个类可以实现多个接口,但只能继承一个抽象类
D:接口中可以有普通成员变量,抽象类中没有普通成员变量
正确答案: B D
解析:
抽象类
特点:
1.抽象类中可以构造方法
2.抽象类中可以存在普通属性,方法,静态属性和方法。
3.抽象类中可以存在抽象方法。
4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
接口
1.在接口中只有方法的声明,没有方法体。
2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上
public static final
3.在接口中的方法,永远都被public来修饰。
4.接口中没有构造方法,也不能实例化接口的对象。
5.接口可以实现多继承
6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法
7.则实现类定义为抽象类。
接口可以有default、static方法,所以B是错的。
题四
String str = “”;
System.out.print(str.split(“,”).length);
输出结果为:
A:0
B:1
C:出现异常
正确答案: B
解析:
注意2点: 1:String获取长度用的是length()方法,而数组类型我们直接用属性length获取长度,所以String[]数组类型我们应该用length获取长度;2:总结来说,因为原字符串不包含分隔符,所以直接返回原字符串,分割出来只有一个空的字符串数组,
所以结果是1.(注意,虽然原字符串为空,存到字符串数组为空,但是这个空也会算一个元素。)
题五
5.关于匿名内部类叙述正确的是? ( )
A:匿名内部类可以继承一个基类,不可以实现一个接口
B:匿名内部类不可以定义构造器
C:匿名内部类不能用于形参
D:以上说法都不正确
正确答案: B
解析:
由于构造器的名字必须和类名相同,而匿名内部类没有类名,所以匿名类不能有构造器
匿名内部类的创建方法:必须继承一个类或实现一个接口
匿名内部类中不能含有静态成员变量和静态方法
题六
6.下列选项中是正确的方法声明的是?()
A:protected abstract void f1();
B:public final void f1() {}
C:static final void fq(){}
D:private void f1() {}
解析:
A:抽象方法只可以被public 和 protected修饰;
B:final可以修饰类、方法、变量,分别表示:该类不可继承、该方法不能重写、该变量是常量
C:static final 可以表达在一起来修饰方法,表示是该方法是静态的不可重写的方法
D:private 修饰方法(这太常见的)表示私有方法,本类可以访问,外界不能访问
题七
7.类之间存在以下几种常见的关系:
A:“USES-A”关系
B:“HAS-A”关系
C:“IS-A”关系
D:“INHERIT-A”关系
正确答案: A B C
解析:
USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为:A类方法中的参数包含了B类。
关联关系:A类会用到B类,这是一种强依赖关系,是长期的并非偶然。在代码中的表现为:A类的成员变量中含有B类。
HAS-A:聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是聚合关系,鸟群中每个部分都是鸟。
IS-A:表示继承。父类与子类,这个就不解释了。
要注意:还有一种关系:组合关系也是关联关系的一种特例,它体现一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。
题八
8.下面代码输出结果是?
int i = 5;
int j = 10;
System.out.println(i + ~j);
A:Compilation error because”~”doesn’t operate on integers
B:-5
C:-6
D:15
正确答案: C
解析: ~n=-n-1;
题九
9.ResultSet中记录行的第一列索引为?
A:-1
B:0
C:1
D:以上都不是
正确答案: C
解析:
ResultSet跟普通的数组不同,索引从1开始而不是从0开始
题十
10.下列不是 Java 关键字的是 ( )
A:abstract
B:false
C:native
D:sizeof
正确答案: B D
解析:
Java中的关键字有哪些?
答:1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
2)2个保留字(现在没用以后可能用到作为关键字):goto、const。
3)3个特殊直接量:true、false、null。