==和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()方法你才能完成深复制)
==和equals的区别和联系,StringBuffer和StringBuilder,clone方法的更多相关文章
- StringBuffer和StringBuilder使用方法比較
StringBuffer是字符串缓冲区,是一个容器. 特点: 1,长度是可变化的. 2,能够字节操作多个数据类型. 3,终于会通过toString方法变成字符串. C create U update ...
- StringBuffer与StringBuilder的区别,及实现原理
区别 1.StringBuffer 与 StringBuilder 中的方法和功能完全是等价的, 2.只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是 ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
- Java中的String、StringBuffer以及StringBuilder的用法和区别
String String的构造方式有n种(据说n==11),常见的例举一二: String s1 = "hello world"; String s2 = new String( ...
- String、StringBuffer和StringBuilder类的区别
Java提供了String.StringBuffer和StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法. 它们的相同点是都用来封装字符串:都实现了CharSequence接 ...
- Java面试概念之String、StringBuffer与StringBuilder的区别
参考博客 http://www.cnblogs.com/lchzls/p/6711375.html java中String.StringBuffer.StringBuilder是Java编程中经常使用 ...
- String、StringBuffer和StringBuilder区别
String.StringBuffer和StringBuilder区别 1.长度是否可变 String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的concat 方法,那也 ...
- Java 中 String 与 StringBuffer 和 StringBuilder 的区别
简介: String 是 Java 中很常用的类之一,同时,字符串是 Java 面试中最重要的话题之一. StringBuffer 和 StringBuilder 类提供了操作字符串的方法. 我们将研 ...
- String、StringBuffer、StringBuilder的区别
在日常开发过程中String字符串估计是被用到最多的变量了,最近看了一些String.StringBuffer和StringBuilder的东西,三者都可以对字符串进行操作,他们究竟有什么区别,以及适 ...
- StringBuffer和StringBuilder的区别
StringBuffer和StringBuilder的区别 StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在 ...
随机推荐
- StackGres 1.6 数据库平台工程集群配置管理(K8S Pods/PostgreSQL/PgBouncer)
Postgres 配置 PostgreSQL 的配置在 SGPostgresConfig CRD 中指定.如果在创建集群时没有指定自定义配置,StackGres 将创建一个默认配置,您可以在 这里 看 ...
- 基于WPSOffice+Pywpsrpc构建Docker镜像,实现文档转换和在线预览服务
背景 产品功能需要实现标准文档的在线预览功能,由于DOC文档没办法直接通过浏览器打开预览,需要提前转换为PDF文档或者HTML页面. 经过测试发现DOC转为HTML页面后文件提交较大,而且生成的静态资 ...
- 【总结】IntelliJ IDEA 插件
1..iBATIS/MyBatis plugin轻松通过快捷键找到MyBatis中对应的Mapper和XML,CTRL+ALT+B 2.iBATIS/MyBatis plugin轻松通过快捷键找到My ...
- Optional源码分析(涉及Objects源码和Stream源码)
研究Optional源码之前先谈一谈Objects源码. 主要代码: @ForceInline public static <T> T requireNonNull(T obj) { if ...
- Linux笔记03: Linux常用命令_3.4文件和目录共用命令
3.4 目录和文件共用命令 3.4.1 rm命令 ●命令名称:rm. ●英文原意:remove files or directories. ●所在路径:/usr/bin/rm. ●执行权限:所有用户. ...
- [NOI online22提高A] 丹钓战
题目描述 有 \(n\) 个二元组 \((a_i, b_i)\),编号为 1 到 n. 有一个初始为空的栈 SS,向其中加入元素 \((a_i, b_i)\) 时,先不断弹出栈顶元素直至栈空或栈顶元素 ...
- Chat2DB接入文心一言AI教程(原创教程,转载请注明)
引言 关于Chat2DB和文心一言是啥我就不赘述了,由于Chat2DB自带的ai有调用次数限制,所以想着接入百度的文心AI,但是由于网上没有找到相关的教程,此教程是本人研究了很久才弄出来的,顺便记录一 ...
- 经典卷积神经网络LeNet&AlexNet&VGG
LeNet LeNet-5是一种经典的卷积神经网络结构,于1998年投入实际使用中.该网络最早应用于手写体字符识别应用中.普遍认为,卷积神经网络的出现开始于LeCun等提出的LeNet网络,可以说Le ...
- ceph集群搭建详细教程(ceph-deploy)
ceph-deploy比较适合生产环境,不是用cephadm搭建.相对麻烦一些,但是并不难,细节把握好就行,只是命令多一些而已. 实验环境 服务器主机 public网段IP(对外服务) cluster ...
- Celery架构和主要模块
**任务模块 ** 包含异步任务和定时任务.其中,异步任务通常在业务逻辑中被触发并发往任务队列,而定时任务由 Celery Beat 进程周期性地将任务发往任务队列. **消息中间件 Broker * ...