Java散列知识点

父类的静态方法能否被子类重写,为什么?
  • 静态方法只与类相关,不与具体实现相关;
  • static方法在编译时期就绑定了,所有引用到该方法的对象所指向的都是同一块内存中的数据,也就是该静态方法;
  • 父类的静态方法不能被子类继承,更谈不上重写。
接口回调实现过程:
  • 定义一个回调函数,给事件发送方传入接口,在需要的地方调用未实现方法;在事件接收方实例化接口并处理结果;
  • 在事件发生时,会通知回调函数进行处理。
泛型原理:
  • Java的泛型是伪泛型;
  • 使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉,这个过程叫做类型擦除;
  • 泛型只在编译期有效,所以泛型类与普通类在Java虚拟机内没有任何区别。
反射中,Class.forNameclassloader的区别:
  • Class.forName()前者除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块;
  • classLoader只干一件事情,就是将.class文件加载到JVM中,不会执行static中的内容。
throw和throws的比较
  • throws出现在方法声明上,表示出现异常的一种可能性,并不一定发生异常,用throws声明的方法表示此方法不处理异常,由系统自动捕获的异常信息抛给上级调用方法,主方法抛出的异常,由JVM处理;
  • throw出现在方法体内,执行throw则一定抛出了某种异常,用户自己进行异常类对象的实例化操作,,手动抛出异常。
为什么Java被称作是“平台无关的编程语言”?
  • Java虚拟机有自己完善的硬体架构,如:处理器、堆栈、寄存器等,还具有相应的指令系统;JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改的运行。
JDK和JRE的区别是什么?
  • JRE(Java Runtime Environment缩写,指Java运行环境)包括java虚拟机和applet;
  • JDK(Java Development Kit的缩写,指Java开发工具包)包括JRE和编译器等;可以开发、编译执行Java程序。
为什么内部类调用的外部变量必须是final修饰的?
  • 方法中的局部变量,方法结束后这个变量就要释放掉,然而内部类的某个方法还没有释放完,这个时候它所引用的外部变量已经找不到了;
  • 如果定义为final,Java会将这个变量复制一份作为成员变量内置于内部类中;
  • 为了解决:局部变量的生命周期与局部类的对象的声明周期的不一致性问题。
迭代器可以在迭代的过程中删除底层集合的元素,但是不可以调用集合的remove(Object obj)删除,可以通过迭代器的remove()方法删除
  • Array可以包含基本类型和对象类型;
  • ArrayList只能包含对象类型,如果要存基本数据类型,也要用它们的包装类才能通过。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值