java面试题《二、基础语法》

1.数据类型

基本数据类型:数值型(整数类型:byte,short,int,long;浮点类型:float,double)。字符型(char)和布尔型(boolean)

引用数据类型:类(class)、接口(interface)、数组([])

2.switch是否能作用在byte上,是否能作用在long上,是否能作用在String上。

byte一直可以,String在java7后可以,long一直不行。

3.final有什么用?

用于修饰类、属性和方法:

被final修饰的类不可以被继承;被final修饰的方法不可以被重写;被final修饰的变量不可以被改变;

4.final、finally、finalize区别

finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码放在finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。

finalize是一个方法,属于Object类的一个方法,该方法一般由垃圾回收器来调用,判断一个对象是否可以回收。

5.this关键字的用法

指向对象本身的一个指针。

普通的直接引用,this相当于是指向当前对象本身。

行参与成员名字重名,用this来区分。

引用本类的构造函数。

6.super关键字的用法。

super是指向离自己最近的父类对象的一个指针。

普通的直接引用,引用父类的成员。

子类中的成员变量或方法与父类中的成员变量或方法同名时,用super进行区分。

引用父类的构造函数。

7.this与super的区别

super在子类中调用父类的构造方法,this在本类调用本类的其他构造方法。this与super需放在构造方法内的第一行。this与super不能同时出现在一个构造函数里面。均不可以在static环境中使用。

8.static存在的主要意义

创建独立于具体对象的域变量或者方法。用来形成静态代码块以优化程序性能,只会在类加载的时候执行一次。

被static修饰的变量或者方法是独立于该类的任何对象,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享。

9.break、continue、return的区别和作用

break结束当前的循环体;continue跳出本次循环,继续执行下次循环;return结束当前的方法,直接返回。

10.如何跳出当前的多重套嵌循环

在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句。

11.抽象类和接口

抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。

相同点:接口和抽象类都不能实例化;用于被其他类实现或者继承;都包含抽象方法,其子类都必须重写这些抽象方法。

不同点:

(1)抽象类使用abstract关键字声明;接口使用interface关键字声明

(2)子类使用extends关键字来继承抽象类;接口子类使用implements关键字来实现接口。

(3)抽象类可以有构造器;接口不能有构造器

(4)抽象类中的方法可以是任意访问修饰符;接口方法默认修饰符是public,不允许被定义成private或者protected

(5)一个类最多只能继承一个抽象类;一个类可以实现多个接口

(6)抽象类的字段声明可以是任意的;接口的字段默认都是static和final的

12.重载和重写

重载:发生在同一个类中,方法名相同,参数列表不同,与方法返回值和访问修饰符无关

重写:发生在父子类中,方法名、参数列表必须相同

13.==和equals的区别是什么?

==:判断两个对象是不是同一个对象。基本数据类型 == 比较的是值;引用数据类型 == 比较的是内存地址。

equals:(1)类没有覆盖equals()方法,等价于“==”比较两个对象(2)覆盖了equals()方法,比较的是内容

14.hashCode()与equals()的相关规定。

如果两个对象相等,则hashCode一定也是相同的。但hashCode相等,两个对象不一定相等。

15.java中IO流分为几种?

按照流向分:输入流和输出流

按照操作单元分:字节流和字符流

16.BIO,NIO,AIO有什么区别?

BIO:同步阻塞式IO,模式简单使用方便,并发处理能力低。

NIO:同步非阻塞IO

AIO:异步非阻塞IO

17.什么是反射机制?

动态获取的信息以及动态调用对象的方法的功能成为java语言的反射机制。

18.java获取反射的三种方法

(1)通过new对象实现反射机制,Student stu = new Student(),stu.getClass()

(2)通过路径实现反射机制,Class.forName("")

(3)通过类名实现反射机制Class class = Student.class;

 

posted on 2020-05-16 16:31  kkw105  阅读(148)  评论(0)    收藏  举报