java理论知识汇总-其他

拷贝的实现方式

  • 实现cloneable接口,重写clone方法。
  • 直接调用super.clone的为浅拷贝

深拷贝和浅拷贝的区别

  • 浅拷贝,如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。
  • 深拷贝,在拷贝引用类型成员变量时,为引用类型的数据成员另辟了一个独立的内存空间,实现真正内容上的拷贝。

StringBuffer和StringBuilder

StringBuffer方法都用synchronized修饰,为线程安全,StringBuilder不同

transient有什么用

transient修饰的属性不应该被序列化(可以通过重写序列化方法来打破)

Arrays.sort原理

  • 当数组长度大于286时使用归并排序
  • 当数组小于47时使用插入排序
  • 其他使用双轴快速排序

如果java进程不见了,如何排查

  • linux系统/var/log/message下查看是否被系统杀死 egrep -i 'killed process' /var/log/messages
  • 启动参数一般有配OOM时打印系统快照,所以还可以通过查看OOM时的系统快照来定位原因。

重写与重载

重写遵循两小一大一同

  • 返回值小于或等于父类
  • 抛出异常小于或等于父类
  • 访问权限大于父亲
  • 参数列表和方法名必须与父亲相同
    重载
  • 方法名相同
  • 参数不同

基本的数据类型及占用的字节

  • byte 1字节
  • int 4字节
  • short 2字节
  • long 8字节
  • double 8字节
  • float 4字节
  • boolean 1字节
  • char 2字节

Class.forName()和ClassLoader. loadClass的区别

  • ClassLoader. loadClass,仅仅将类加载到JVM,不执行后续的连接和初始化,即不执行static块代码,static参数不被初始化。
  • Class.forName(),反之。2

什么是反射机制

  • 对于任意一个类,都能够知道这个类的所有属性和方法;
  • 对于任意一个对象,都能够调用它的任意一个方法和属性;
  • 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

反射机制使用的场景

  • 在运行时判断任意一个对象所属的类
  • 在运行时构造任意一个类的对象
  • 在运行时判断任意一个类所具有的成员变量和方法
  • 在运行时调用任意一个对象的方法

反射的使用步骤

  1. 获取class对象(Class.forName、object.getClass、Object.class)
  2. 获取需要调用的class对象方法(class.getMethod)
  3. 反射方式创建对象实例(class.newInstance)
  4. 反射方式执行对象方法(method.invoke)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容