Java常见面试题

一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

  可以有多个类,但只能有一个类是public类,并且public类的类名必须与文件名相同

override和overload的区别。OverLoad的方法是否可以改变返回值类型?

  override是重写,表示子类方法可以与父类中某个方法的名称和参数,返回值类型完全相同。

  overload是重载,表示同一个类中可以有多个相同名称,不同参数的方法。如何参数列表不一样,返回值类型可以不同,如果参数列表一样,则不能改变返回值。

char类型变量中能不能贮存一个中文汉字?为什么?

  char类型变量是用来存储Unicode编码的字符的,Unicode编码字符集中包含了汉字,所以char类型变量是可以存储汉字的。当然,一些特殊的没有被包含在Unicode编码字符集中的汉字是不能存储的。

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

  引用不能变,引用对象可以改变。例如:final StringBuilder   s=new StringBuilder("xyz");  s.append("abc"); 此时引用对象已经改变。

“==”和equals方法有什么区别?

  ==操作符专门用来比较两个变量的值是否相等,要比较两个基本数据类型的数据或引用变量是否相等,只能用==操作符。

如果一个变量指向的数据类型是对象类型,用==表示比较的两个变量是否指向同一个对象,用equals表示比较的是两个变量所指向的对象是否相等。

例如:String a=new String("xyz"); String b=new String("xyz");

a==b   比较的是变量a,b中的值,也就是a,b所指向的对象所在的地址是否相同,在这里返回的是false

a.equals(b);  比较的是a,b所指向的对象的值是否相同,在这里返回的是true

静态变量和实例变量的区别?

  静态变量前要加static 关键字,静态变量可以通过类名来引用,而实例变量必须通过创建对象,通过对象来引用

是否可以从一个static方法内部发出对非static方法的调用?

  不可以,因为非static 方法要与对象关联在一起,必须通过对象调用。static 方法可以直接调用,如果在内部调用非static 方法,那那个非static 方法就不知道和哪个对象关联了。

Integer和int的区别?

  int是java的8中基本数据类型之一,java为每个原始的数据类型提供了封装类,Integer就是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,另外Integer题供了多个与整数相关的操作方法,例如将一个字符串装换成整数。

请说出作用域public,private,portected,及不写时的区别?

  如果不写任何访问修饰符,则表示friendly。访问范围如下表所示:

作用域 当前类 同一package 子孙类 其他package
public 是 
protected
friendly
private

 

构造器是否可被override?

  构造器不能被继承,因此不能被override,但可以被重载overload

接口是否可以继承接口,抽象类是否可实现接口,抽象类是否可继承具体类,抽象类中是否可以有静态main方法?

  接口可以继承接口,

  抽象类可以实现接口,

  抽象类可以继承具体类,

  抽象类中可以有静态main方法

    抽象类和普通类的区别在于,抽象类不能实例化,可以有abstract抽象方法。

面向对象的特征有哪些方面?

  面向对象的编程语言主要有封装、继承、抽象、多态等4个主要特征。

封装:就是把描述一个对象的属性和行为封装在一个模块(类)中。类的成员变量都定义为private,只有这个类自己的方法能够访问到这些成员变量。封装的目标就是要实现“高内聚”、“低耦合”,防止程序相互依赖性而带来变动的影响。 

抽象:抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些共性之处,并且会忽略与当前主题和目标无关的那些方面,注意力集中在与当前目标有关的方面。例如,看到一只猫和一只老虎,你能想象出他们的相同之处,那就是抽象。比如,要做一个学生成绩管理系统,我只需要学生的姓名,学号,成绩等,至于学生的身高体重等就可以忽略,当前系统需要什么,就只考虑什么,这就是抽象。抽象包括行为抽象和状态抽象。

继承:在一个已有的类的基础上定义一个新的类,把这个已经存在的类的内容作为新类的内容,并可以加入新的内容,或修改原来的方法使之更适合特殊的需要。这就是继承,这种继承关系提高了软件的可重用性和扩展性。

多态:多态指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法的调用在编程时并不确定,而是在程序运行期间才确定,这样不用修改源代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变。即不修改代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。多态增强了软件的灵活性和扩展性。

 

java中实现多态的机制是什么?

  靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期在动态绑定。

抽象类和接口有什么区别?

  

说说&和&&的区别?

 

在java中如何跳出当前的多重嵌套循环?

switch语句能否作用在long上,能否作用在String上?

抽象类的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?

什么是内部类?static nested class和Inner Class的不同?

内部类可以引用他的包含类的成员吗?有没有什么限制?

匿名内部类(Anonymous Inner  Class) 是否可以继承其他类,是否可以实现接口?

super.getClass()方法调用

jdk中哪些类是不能继承的

String 是最基本的数据类型吗

String s="Hello";s=s+"world";这两行代码执行后,原始的String对象中的内容改变了没有?

String s=new Sting("xyz");创建了几个String Object?二者之间有什么区别?

String和StingBuffer的区别?

StringBuffer和StringBulder的区别?

数组有没有length()这个方法?String 有没有length()这个方法?

下面这条语句一共创建了多少个对象,String s="a"+"b"+"c"+"d";

final,fianlly,finalize的区别?

HashMap和Hastable的区别

List和Map的区别

List,Map,Set三个接口,存取元素时,各有什么特点?

Collection和Collections的区别?

你所知道的集合类有哪些?主要方法?

java中有几种类型的流?jdk为每种类型的流提供了一些抽象类以供继承,请说出他们分别的哪些类?

字节流与字符流的区别?

什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用?

heap 和stack有什么区别

GC是什么,为什么要有GC

 

posted @ 2015-12-03 15:44  liujufu  阅读(187)  评论(0编辑  收藏  举报