每天搞懂10道Java基础题day02

  • Post author:
  • Post category:java




题一

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。



版权声明:本文为qq_45994021原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。