zoukankan      html  css  js  c++  java
  • ==和equals的区别和联系,StringBuffer和StringBuilder,clone方法

    ==和equals的区别和联系?

    ( 1)对于==,比较的是值是否相等

         如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

      如果作用于引用类型的变量,则比较的是所指向的对象的地址

    ( 2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象

       如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

       如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

    StringBuffer和StringBuilder区别? 

    String 是被final修饰的,长度是不可变的。StringBuffer和StringBuilder长度都是可变的

    1、运算速度比较(通常情况下):  StringBuilder > StringBuffer > String

    2. 线程安全性 :  StringBuilder(非线程安全)、StringBuffer(线程安全的)

    使用场景:

    String:适用于少量的字符串操作。

    StringBuilder:适用于单线程下在字符串缓冲区进行大量操作。

    StringBuffer:适用于多线程下在字符串缓冲区进行大量操作。

     java克隆对象clone()的用法和作用?

      Object类中提供了一个clone()方法,若需修改一个对象,同时不想改变调用者的对象,就要制作该对象的一个本地副本。

       用法:1.实现clone 接口,2.重写clone方法。3、在clone()方法中调用super.clone()。

    什么是浅复制什么是深复制?

      浅复制:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。

      深复制:被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。

      总结:Java在重载clone()方法时也存在同样的问题,当类中只有一些基本数据类型时,采用上述的方法就可以了,但是当类中包含了一些对象(list)时,就需要用到深复制了。

    怎么实现深复制?

      实现方法是在对,对象调用clone()方法完成复制后,接着对对象中的非基本数据类型的属性也调用clone()方法完成深复制(非数据类型本身也要实现Cloneable接口重写clone()方法你才能完成深复制)

  • 相关阅读:
    如何在Wyn Enterprise中实现数据脱敏
    报表工具中如何在表格实现累计同比
    同一报表,根据不同条件,执行不同Sql
    报表单元格内超过一定长度显示省略号,鼠标悬浮显示全部内容
    报表实现按照天/周/月/季度/年进行快速查询,并且根据快速选择条件进行汇总统计
    典型报表设计:项目应收款统计,行分组不汇总、分组内过滤、行记录和汇总计算
    报表表格实现自定义序号
    报表中常见模糊查询实现
    如何在仪表板表格中将日期显示为文本格式?
    MySQL动态数据源的实现
  • 原文地址:https://www.cnblogs.com/lgg20/p/12330999.html
Copyright © 2011-2022 走看看