千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:郑州千锋IT培训  >  面试技巧  >  千锋郑州Java面试宝典之Java基础篇(二)

千锋郑州Java面试宝典之Java基础篇(二)

来源:千锋教育
发布人:Yolanda
时间: 2019-12-18 17:00:00

  6.反射中,Class.forName()和ClassLoader.loadClass()的区别?

  Class.forName(className)方法,内部实际调用的方法是 Class.forName(className,true,classloader);

  第2个boolean参数表示类是否需要初始化, Class.forName(className)默认是需要初始化,一旦初始化,就会触发目标对象的 static块代码执行,static参数也也会被再次初始化,ClassLoader.loadClass(className)方法,内部实际调用的方法是 ClassLoader.loadClass(className,false);第2个 boolean参数,表示目标对象是否进行链接,false表示不进行链接,由上面介绍可以,不进行链接意味着不进行包括初始化等一些列步骤,那么静态块和静态对象就不会得到执行。

  7.Int和Integer的区别?

  Integer是int的包装类型,在拆箱和装箱中,二者自动转换.int是基本类型,直接存数值;而integer是对象;用一个引用指向这个对象.由于Integer是一个对象,在JVM中对象需要一定的数据结构进行描述,相比int而言,其占用的内存更大一些.

  8.String、StringBuilder、StringBuffer区别?

  String 字符串常量 不可变 使用字符串拼接时是不同的2个空间

  StringBuffer 字符串变量 可变 线程安全 字符串拼接直接在字符串后追加

  StringBuilder 字符串变量 可变 非线程安全 字符串拼接直接在字符串后追加

  1.StringBuilder执行效率高于StringBuffer高于String.

  2.String是一个常量,是不可变的,所以对于每一次+=赋值都会创建一个新的对象, StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方 法,在原来的基础上进行追加,所以性能比String要高,又因为StringBuffer 是 线程安全的而StringBuilder是线程非安全的,所以StringBuilder的效率高于 StringBuffer.

  3.对于大数据量的字符串的拼接,采用StringBuffer,StringBuilder.

  9.Hashtable和Hashmap的区别?

  1、HashTable线程安全,HashMap非线程安全

  2、Hashtable不允许 null 值(key 和 value 都不可以),HashMap允许 null 值(key和value都可以)。

  3、两者的遍历方式大同小异,Hashtable仅仅比HashMap多一个elements方法。

  10.说几个常见的编译时异常?

  SQLException 提供有关数据库访问错误或其他错误的信息的异常。

  IOexception 表示发生了某种I / O异常的信号。此类是由失败或中断的I / O操作产生的 一般异常类

  FileNotFoundException 当试图打开指定路径名表示的文件失败时,抛出此异常。

  ClassNotFoundException 找不到具有指定名称的类的定义。

  EOFException 当输入过程中意外到达文件或流的末尾时,抛出此异常。

  11. 方法重载的规则?

  方法名一致,参数列表中参数的顺序,类型,个数不同。

  重载与方法的返回值无关,存在于父类和子类,同类中。

  可以抛出不同的异常,可以有不同修饰符。

  12. 方法重写的规则?

  参数列表、方法名、返回值类型必须完全一致,构造方法不能被重写;声明为final的方法不能被重写;声明为static的方法不存在重写(重写和多态联合才有意义);访问权限不能比父类更低;重写之后的方法不能抛出更宽泛的异常

  13. throw和throws的区别?

  throw:

  throw 语句用在方法体内,表示抛出异常,由方法体内的语句处理。throw是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行throw一定是抛出了某种异常。

  throws:

  throws语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。throws主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。throws表示出现异常的一种可能性,并不一定会发生这种异常。

  14. 抽象类和接口的区别?

  1、接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。

  2、类可以实现很多个接口,但是只能继承一个抽象类

  3、类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现

  抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。

  4、抽象类可以在不提供接口方法实现的情况下实现接口。

  5、Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。

  6、Java接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private,protecte或者是 public 。

  7、接口是绝对抽象的,不可以被实例化(java 8已支持在接口中实现默认的方法)。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。

  15. Java的基础类型和字节大小?

  布尔型 boolean 8位;字节型 byte 8位; 字符型 char 16位;

  短整型 short 16位;整形 int 32位; 长整形 long 64位;

  浮点型 float 32位;双精度 double 64位

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

最新文章NEW

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>