自整理---java基础面试题

1.基本类型与包装类的区别:

-基本数据类型是直接用来存储值,放在栈里面方便快速使用,包装类是类放在堆里面

-基本类型不是对象,因此无方法,包装类是类因此有方法

-基本类型直接赋值即可,包装类型用new创建

-基本类型初始值不为null,包装类初始值为null

 

2.Goto是java的保留关键字,意思是java并没有使用goto,以后是否使用未定

 

3.Java内存分为栈内存和堆内存:

-栈内存:在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配,栈内存主要存放的是基本类型的数据如八大基本数据类型(注意:并没有string基本类型)

-堆内存:存放所有new 创建的对象和数组的数据

 

4.Abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized

------都不能

 

5.接口是否可继承接口,抽象类是否可实现implements接口?抽象类是否可继承实体类?

--答:接口可继承接口,抽象类可实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数

 

6.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

答:当一个对象实例作为一个参数传递到方法中时,参数的值就是对该对象的引用,对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的

 

7.abstract class和interface有什么区别?

 -abstract class 是抽象类,interface是接口,抽象类用于要创建一个体现某些基本行为的类,并为改类声明方法,但不能在改类中实现该类的情况,接口是抽象类的变体。在接口中,所有方法都是抽象的,抽象类的子类为它们父类中的所有抽象方法提供实现。否则它们也是抽象类,接口只可以定义static final成员变量,接口的实现与子类相似,除了该实现类不能从接口定义 中继承行为

 

8.重写和重载的区别:

-重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现,如果在子类中定义某些方法与其父类有相同的名称和参数,我们说该方法被重写,子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了,如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法重载

 

9.注意:

Abstract和private,static,final,native不能并列修饰同一个方法

Abstract类中不能有private修饰的域和方法

Static方法不能处理非static的域

 

10.重载方法的参数必须不同或是参数个数不同,或者是参数类型不同,重载的多个方法必须返回相同的数据类型

11.在java中,一个类获取某一个接口定义的功能并不是通过直接继承这个接口的属性和方法来实现的,因为接口中的属性都是常量,接口的方法都是没有方法体的抽象方法,没有具体定义操作

 

12.关于访问修饰符:

-类中限定public的成员可以被所有的类访问

-类中限定为private的成员只能被这个类本身访问

-类中限定为protected的成员可以被这个类本身,它的子类,以及同一个包中的其他类访问

-用private protected修饰的成员可以被该类本身访问,也可以被该类的所有子类访问

-默认访问控制符规定只能被我同一个包中的类访问和引用,不能被其他包的类访问

 

13.this变量用在一个方法的内部,指向当前对象,当前对象指的是调用当前正在执行的方法的那个对象,super变量是直接指向父类的构造方法,用来引用父类中的变量和方法

 

14.如果要引用一个包中的多个类,可以用*号来代替,使用*号只能表示本层次的所有类,而不包括子层次下的类,经常需要用两条语句来引入两个层次的类:

Import java.awt*;

Import java.awt.event.*;

 

15.用static修饰的变量或方法都为类成员,类成员可以用类名或实例名访问,实例成员只能用实例名来访问

16.如果一个类中含有抽象方法,则此类必须为抽象类,如果抽象类的子类不为抽象类,则子类必须实现父类的所有的抽象方法,抽象方法不能用静态方法和最终方法。抽象方法只有函数头的声明,而用分号来替代方法体,没有大括号。如abstract void abstractmethod();

17.类变量的最本质的特点是:它们是类的域,不属于任何一个类的具体对象实例

18.局部变量是在方法体内声明的,只有当方法被调用时它们才存在,因而只能在本方法内使用,不存在访问控制符,也不能声明为静态变量,但可以声明为final变量,局部变量必须初始化

19. 修饰方法的访问控制符可以是:public,private,protected,private

20.修饰方法的非访问控制符可以是:static,final,abstract,native(本地方法),synchronized

21.

  1. final类是最终类,是不能有子类的类。Abstract和final不能同时修饰一个类,因为抽象类本身没有具体对象,需要派生出子类后在创建子类的对象,而最终类不可能有子类
  2. 创建对象的格式为: 类名 对象名=new 构造方法(参数);注意前面是类名后面是构造方法
  3. 如果class前面由public修饰符,则默认构造方法的前面也应该有public修饰符
  4. 类中有static修饰的域或方法,可用类名或者对象名访问,否则只能用对象名访问
  5. 修饰域的访问控制符可以是:public,private,protected,非访问控制符可以是:static,final,volatile(易失域)
  6. 面向对象程序设计中的四大特点:抽象封装,继承,多态
  7. 面向对象的软件开发大体分为:面向对象的分析,面向对象的设计,面向对象的实现
  8. 面向对象程序设计方法的优点是:可重用性,可扩展性,可管理性
  9. 类的定义:class前的修饰符分为访问控制符和非访问控制符两大类。访问控制符包括public,private。非访问控制符包括abstract(抽象),final

22Java中的异常处理机制的简单原理和应用

答案:java程序违反了java的语义规则时,java虚拟机就会将发生的错误表示为一个异常,违反语义规则包括两种情况。一种是java类库内置的语义检查。例如数组下标越界,会引发indexoutofboundsexception;访问null的对象时会引发nullpointerexception。另一种情况就是java允许程序员扩展这种语义检查,程序员可创建自己的异常,并自由选择在何时用throw关键字引发异常,所有的异常都是java.lang.Thowable的子类

 

23.java程序流程控制语句

-有三种执行方式:顺序结构,选择结构和循环结构

-条件选择语句:if..else , switch..case

-循环语句:while,do..while,for

-注意while和do...whie,for

-注意while和do...while的区别,for的三个循环条件

-switch支持的数据类型有:byte,short,char,int以及枚举类型

 

24.float f=3.4是否正确?

答案:不正确,精确不准确,应该用强制类型转换,如下所示:float f=(float)3.4

 

25.try{}里面有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?

答案:会执行,在return前执行

 

26.字符串与字符之间的加减

 

27.Switch语句能否作用在byte上,能否作用在long上,能否作用在string上?

答:能作用在Byte上,不能作用在long和string上

 

28.Java数据类型:

8种数据类型:byte,short,int,long,float,double,char,boolean

8种基本数据类型占用的字节长度

3种引用数据类型:类,接口,数组

8种基本数据类型对应的包装类,被final修饰,不可被继承

String和StringBuffer类也是被final修饰的

猜你喜欢

转载自blog.csdn.net/weixin_42264823/article/details/89875003
今日推荐