当前位置: 首页 > news >正文

公司网站域名更改怎么做微信网站建设app公司

公司网站域名更改怎么做,微信网站建设app公司,公司品牌策划设计,网站开发 数据库1. 区别 “”操作符用于比较两个对象的地址是否相等。.equals() 方法用于比较两个对象的内容是否相等。 Object 类的 .equals() 方法默认采用的是“”操作符进行比较。假如子类没有重写该方法的话#xff0c;那么“”操作符和 .equals() 方法的功效就完全一样——比较两个对…1. 区别 “”操作符用于比较两个对象的地址是否相等。.equals() 方法用于比较两个对象的内容是否相等。 Object 类的 .equals() 方法默认采用的是“”操作符进行比较。假如子类没有重写该方法的话那么“”操作符和 .equals() 方法的功效就完全一样——比较两个对象的内存地址是否相等。 但实际情况中有不少类重写了 .equals() 方法因为比较内存地址的要求比较严格不太符合现实中所有的场景需求。拿 String 类来说我们在比较字符串的时候的确只想判断它们俩的内容是相等的就可以了并不想比较它们俩是不是同一个对象。 况且字符串有字符串常量池的概念本身就推荐使用 String s “字符串” 这种形式来创建字符串对象而不是通过 new 关键字的方式因为可以把字符串缓存在字符串常量池中方便下次使用不用遇到 new 就在堆上开辟一块新的空间。 2. .equals()源码 public boolean equals(Object anObject) {if (this anObject) {return true;}if (anObject instanceof String) {String aString (String)anObject;if (coder() aString.coder()) {return isLatin1() ? StringLatin1.equals(value, aString.value): StringUTF16.equals(value, aString.value);}}return false; } 首先如果两个字符串对象的可以“”那就直接返回 true 了因为这种情况下字符串内容是必然相等的。否则就按照字符编码进行比较分为 UTF16 和 Latin1差别不是很大就拿 Latin1 的来说吧。 HotSpotIntrinsicCandidate public static boolean equals(byte[] value, byte[] other) {if (value.length other.length) {for (int i 0; i value.length; i) {if (value[i] ! other[i]) {return false;}}return true;}return false; } 这个 JDK 版本是 Java 17也就是最新的 LTS长期支持版本。该版本中String 类使用字节数组实现的所以比较两个字符串的内容是否相等时可以先比较字节数组的长度是否相等不相等就直接返回 false否则就遍历两个字符串的字节数组只有有一个字节不相等就返回 false。 这是 Java 8 中的 equals 方法源码 public boolean equals(Object anObject) {// 判断是否为同一对象if (this anObject) {return true;}// 判断对象是否为 String 类型if (anObject instanceof String) {String anotherString (String)anObject;int n value.length;// 判断字符串长度是否相等if (n anotherString.value.length) {char v1[] value;char v2[] anotherString.value;int i 0;// 判断每个字符是否相等while (n-- ! 0) {if (v1[i] ! v2[i])return false;i;}return true;}}return false; } JDK 8 比 JDK 17 更容易懂一些首先判断两个对象是否为同一个对象如果是则返回 true。接着判断对象是否为 String 类型如果不是则返回 false。如果对象为 String 类型则比较两个字符串的长度是否相等如果长度不相等则返回 false。如果长度相等则逐个比较每个字符是否相等如果都相等则返回 true否则返回 false。 “如果要进行两个字符串对象的内容比较除了 .equals() 方法还有其他两个可选的方案。” 1Objects.equals() Objects.equals() 这个静态方法的优势在于不需要在调用之前判空。 public static boolean equals(Object a, Object b) {return (a b) || (a ! null a.equals(b)); }如果直接使用 a.equals(b)则需要在调用之前对 a 进行判空否则可能会抛出空指针 java.lang.NullPointerException。Objects.equals() 用起来就完全没有这个担心。 Objects.equals(小萝莉, new String(小 萝莉)) // -- true Objects.equals(null, new String(小 萝莉)); // -- false Objects.equals(null, null) // -- trueString a null; a.equals(new String(小 萝莉)); // throw exception2String 类的 .contentEquals() .contentEquals() 的优势在于可以将字符串与任何的字符序列StringBuffer、StringBuilder、String、CharSequence进行比较。 public boolean contentEquals(CharSequence cs) {// Argument is a StringBuffer, StringBuilderif (cs instanceof AbstractStringBuilder) {if (cs instanceof StringBuffer) {synchronized(cs) {return nonSyncContentEquals((AbstractStringBuilder)cs);}} else {return nonSyncContentEquals((AbstractStringBuilder)cs);}}// Argument is a Stringif (cs instanceof String) {return equals(cs);}// Argument is a generic CharSequenceint n cs.length();if (n ! length()) {return false;}byte[] val this.value;if (isLatin1()) {for (int i 0; i n; i) {if ((val[i] 0xff) ! cs.charAt(i)) {return false;}}} else {if (!StringUTF16.contentEquals(val, cs, n)) {return false;}}return true; }从源码上可以看得出如果 cs 是 StringBuffer该方法还会进行同步非常的智能化如果是 String 的话其实调用的还是 equals() 方法。当然了这也就意味着使用该方法进行比较的时候多出来了很多步骤性能上有些损失。 同样来看一下 JDK 8 的源码 public boolean contentEquals(CharSequence cs) {// argument can be any CharSequence implementationif (cs.length() ! value.length) {return false;}// Argument is a StringBuffer, StringBuilder or Stringif (cs instanceof AbstractStringBuilder) {char v1[] value;char v2[] ((AbstractStringBuilder)cs).getValue();int i 0;int n value.length;while (n-- ! 0) {if (v1[i] ! v2[i])return false;i;}return true;}// Argument is a Stringif (cs.equals(this))return true;// Argument is a non-String, non-AbstractStringBuilder CharSequencechar v1[] value;int i 0;int n value.length;while (n-- ! 0) {if (v1[i] ! cs.charAt(i))return false;i;}return true; }同样更容易理解一些首先判断参数长度是否相等不相等则返回 false。如果参数是 AbstractStringBuilder 的实例则取出其 char 数组遍历比较两个 char 数组的每个元素是否相等。如果参数是 String 的实例则直接调用 equals 方法比较两个字符串是否相等。如果参数是其他实现了 CharSequence 接口的对象则遍历比较两个对象的每个字符是否相等。
http://www.dnsts.com.cn/news/70868.html

相关文章:

  • 学校网站开发报价表网站建设 创新
  • 网站卖掉被拿来做网站了织梦系统怎么做网站
  • 网站建设投标书模板魔智科技logo在线设计
  • ps中网站页面做多大的搜索关键词技巧
  • 主流网站开发语言会计公司
  • 网站备案号注销查询wordpress 手机模版
  • ps 做ui比较好的网站有哪些协会网站设计方案
  • 私人服装定制网站百度识图搜索
  • 河源和平县建设局网站会设计网站怎么做兼职
  • 网站推广网站江阳建设集团网站
  • 网站首页模板设计图wordpress动态标题
  • 网站外链是什么意思工信部网站备案查询 手机
  • 河南卫生基层系统网站建设房地产开发公司有哪些部门
  • 校园网站建设经费申请报告sae网站代备案
  • 建那种外卖网站该怎么做东莞seo建站优化工具
  • 武夷山网站设计花溪村镇建设银行网站
  • 网站建设应用技术个人网站能做淘宝客吗
  • 哪些网站用jsp网站标题名字和备案名字
  • 网站集约化建设 要求本地搭建wordpress建站教程
  • 天圆地方建筑网站网站建设w亿玛酷1专注
  • 贵州网站开发哪家便宜微信公众好第三方网站怎么做
  • 网站设计开发文档模板网站设计优秀作品
  • 网站定制公司地址google seo教程
  • 做搜狗网站排名深圳团购网站设计多少钱
  • 公司网站二维码怎么做wordpress自动保存编辑器图片
  • 甘肃建设银行网站上海宣传片拍摄的公司
  • c2c网站的主要功能tp5企业网站开发视频
  • 大数据软件和网站开发那个就业好网页设计与制作用什么软件
  • 域名备案和网站备案有什么区别企业网站建设请示
  • 公司搭建网站服务做家政有什么网站做推广好