首页 > 代码库 > Java程序员笔试面试之Java基础

Java程序员笔试面试之Java基础

1.==与equals与hashcode的区别作用

①==是用来比较数值是否相等,也可以用来比较引用是否相等,也就是比较是否指向同一个对象。

②equals方法是Object提供的方法,因此每一个对象都有equals方法,他的实现也是通过==运算符实现的,所以在没有覆盖equals()方法的前提下,equals方法跟==是完全一样的

③相比==运算符equals方法特殊之处就是他可以被覆盖,例如String,他可以比较2个独立对象的内容是否相等,例如:

String s1=new String(“helloworld”);

String s2=new  String (“helloworld”);

利用s1==s2将返回false因为比较的是引用s1跟s2分别指向不同的对象所以返回false

利用s1.equals(s2)将返回true因为比较的是对象的内容都是helloworld

④hashcode()方法也是extends Object类的,他也是用来判断2个对象是否相等,hashcode()方法返回对象在内存中的地址转换成的一个int值,所以在没有重写hashcode()方法之前,任何对象的hashcode()方法都是不相等的


2.this和super的用法

①this关键字是指当前实例对象,他有一个很重要的应用就是区分对象的成员变量跟形式参数。

②super关键字可以用来访问父类的方法和成员变量,如果子类有和父类相同名字的方法或者成员变量则子类的方法或者成员变量将会覆盖父类的方法或者成员变量,这时候如果想用父类的方法或者成员变量必须使用super关键字。

③当子类构造函数需要显示调用父类的构造函数的时候则super()必须放在构造函数的第一句


3.findally块中的代码什么时候被执行?

在java语言的异常处理中,finally的作用就是为了保证无论什么情况finally块里面的代码一定会被执行,当try{}或者catch{}中有return时,因为return意味着所有的代码都必须在return之前执行,所有finally块中的代码将会在return之前执行除非碰到exit()函数,再当try和catch和finally中都有return时,finally中的return会覆盖掉其他的return


问题:在java程序中出现在finally块中的代码是不是一定会被执行?

不一定。1.当程序在进入try{}之前就出现异常就不会执行,比如i=5/0在try{}前面,就直接结束

                2.当try{}块中强制退出时比如System.exit(0);碰到这个直接强制退出就不会执行finally



4.异常处理的原理是什么

java异常处理指的是java程序运行(非编译时)时所发生的非正常情况或者错误,JVM会将出现的错误表示为一个异常并且抛出。这个异常可以再catch{}块中捕获,然后进行处理,异常处理的目的则是为了提高程序的鲁棒性和安全性。

java语言把异常定义为对象处理,并且提供了一个基类Thowable,所有异常都是java.lang.Thowable的子类,在java的API中已经定义了很多的异常类,这些异常类可以分为Error跟Exception2类


5.运行时异常跟普通异常的区别


  



Java程序员笔试面试之Java基础