面向对象面试题

1、面向对象的优点?

         易拓展,易维护

 

2、如何声名一个静态块?

         使用static 关键字,后面跟上大括号

 

3、接口与抽象类的区别?

         凡是用abstract修饰的类都叫做抽象类

         抽象类可以有零个或多个抽象方法,也可以包含非抽象方法

         抽象类中可以没有抽象方法,但是有抽象方法的类必须是抽象类,

         抽象类不能创建对象,必须由抽象类派生子类来实现

 

         接口是用interface修饰的类,接口只能被接口继承

         接口里面的方法只能是抽象方法

         接口里面的变量只能是常量,(publicstatic final)

         接口不能实例化,只能通过多态的方式来实例化

 

4、说出用于类和接口的关键字

         定义类用class关键字,

         定义接口用interface关键字

 

5、如何创建数组?

         创建数组有两种方式

         第一种使用new关键字

         第二种直接声明,大括号直接赋值的方式

 

6、如何创建一个构造方法?要注意哪些?

         public关键字加方法名,

         需要注意,方法名和类名相同

         构造方法没有返回值

 

7、类的组成和执行顺序

         属性,方法,静态代码块,非静态代码块

         执行顺序:父类,子类,静态块,静态字段,非静态块,非静态字段,构造器,方法

 

8main方法必须被什么修饰?

         main方法必须是publicstatic 修饰,返回值void ,参数类型是一个字符串的数组

 

9、如何理解面向对象

         举例面向过程,辅助说明面向对象

 

10、构造方法可否能被重写

         构造方法不能被继承,因此不能被重写,但能被重载。

 

11、静态方法中能有静态的变量吗?

         不能!静态变量是类变量,不可以定义在方法里

 

12StringStringBuffer的区别

         string是常量,是一个不可以变的字符序列。

         StringBuffer是一个可变的字符序列。

         如果需要频繁改变字符串,string每改变一次就创建一次对象,

         stringBuffer不管怎么改变,都是操作一个对象,因此要使用stringBufferString性能更快

 

13、重载(overloading)与重写(override)的区别

         方法重载:在一个类里面,方法名一样,参数列表不同,与返回值无关

         方法重写:在继承关系中,方法名一样,,参数列表相同

 

14、(==)与equals()的区别

         ==可以比较变量的值,也可以比较对象的地址

         equals只能用来比较对象,如果equals没有重写,只能比较对象的地址,

         因此没有重写equals情况下,使用equals是没有意义的

 

15StringBuilderStringBuffer的区别

         StringBuilderStringBuffer性能快,但是线程 不安全,

 

 

16JRE,JDK,JVM分别是什么,它们有什么联系

         jvmjava虚拟机

         jdkjava开发工具包

         jre是运行时环境

         jvm属于jre一部分

 

17、普通类继承抽象类为什么一定要重写其中的抽象方法?

         普通类继承抽象类必须重写抽象方法,否则子类对象就无法实例化

 

18、什么是拆箱和装箱?

         拆箱和装箱是指八大基本数据类型和与其对应的包装类型之间的类型转换

         拆箱:包装类型转基本数据类型

         装箱是基本数据类型转包装类型

         JDK1.5新特性提供了自动装箱和自动拆箱,用等号连接

 

19、继承与实现的区别?

         继承针对类,实现针对接口

         继承只能单继承,实现可以多实现

         实现需要重写接口所有方法,继承不需要

 

20abstract为什么不能与privatefinal同时使用?

         abstrace是用来修饰类和方法的,被修饰的类和方法必须被子类重写才能实例化,

         privatefinal修饰的类和方法不能被继承,因此不能同时使用

 

21、继承最大好处?

         提高代码的复用性,提高开发效率

         继承使类与类产生关系,为多态提供前提

 

22、写出String类常见的5个方法,并详细解释?

indexOf()返回指定字符串在该字符串出现的序列

startsWith()判断该字符串是否以指定字符开始

concat() 将指定字符串连接在该字符串的结尾

length()返回字符串的长度

substring返回该字符串从索引开始结束于字符串末尾或者指定索引的一个子字符串

 

23、普通方法的方法名可以与类名一致吗?

可以

24、在什么情况下局部变量会覆盖全局变量?

        当局部变量名与全局变量名相同类型相同

25static 修饰的方法可否支持多态?

         不支持,

         多态的前提是子类重写父类方法,

         static修饰的方法属于类本身,不能被继承,所以static修饰的方法不支持多态

 

26、使用数组前应该注意的什么?

         需要对数组进行初始化,数组下标是否越界

 

27Java语言最大的特点?

         跨平台(一次编译,多平台执行)

 

28、请你说说byte short char之间可以互相转换吗?为什么?

         可以通过强转,范围小的转范围大的,子类可以转父类,反之不行,会抛异常

 

29、请说说引用和对象?

         引用和对象是分不开的,对象生成一个地址,引用指向这个地址

         Aa = new A();

         a为引用,等号右边是对象

 

30、怎样将一个String添加到另一个String的后面?

         用两种方法,第一种用加号连接,

         第二种用stringBufferstringBuliderappend方法

 

31、有几种数据类型?

         基本数据类型和引用数据类型

 

32、传参有几种类型?有几种特殊类型?

         基本数据类型和引用数据类型

 

33、什么是匿名类,有什么好处

         匿名类是么有名字的类,封装号,安全性高,用一次就销毁

 

34jar是什么格式的文件,有什么好处

         jarjava class文件的压缩包,方便管理class文件

 

35javajavac,javaw各有什么作用

1java.exe:

运行java程序

2javac.exe:

编译的,生成.class文件

3javaw.exe

java命令相对的,运行java命令时,会出现并保持一个console窗口,

程序中的信息可以通过System.outconsole内输出,而运行javaw

开始时会出现console,当主程序调用之后,console就会消失;

javaw 大多用来运行GUI程序

两个应用程序都能运行你的程序,并非常相似,但是有一个重要的区别,java通过控制台运行,javaw则不是。

控制台几乎是为纯文本编成的,例如如果你用javaw运行所有你打印的状态不会被打印出来。你打印在程序中的有用

信息,错误信息也是一样。

所以,如果你在选择用哪个:

如果是基于纯文本的编成用java

如果是图形化但随时打印成纯文本用java

如果你在检查错误,用java

如果程序是纯粹的图形化的,而且你需要提升速度,用javaw

 

posted @ 2018-12-13 13:49  sjqsjq  阅读(956)  评论(0编辑  收藏  举报