首页 > 编程语言 >java中字符串的比较以及string 方法图解

java中字符串的比较以及string 方法图解

时间:2023-12-21 19:06:21浏览次数:45  
标签:java string str1 equals 字符串 图解 声明 比较 String

最近在项目中经常要用到字符串的比较,因此做了一个简略的总结,希望对大家有所帮助!!!!!!!!!!!!!!!

1 总体来说java中字符串的比较是比较引用,equals 比较值的做法。(equals 对于其他引用类型比较的是地址,这是因为object的equals方法比较的是引用),但是不同的声明方法字符串的比较结果也是不同的。 例如: String str1=new String("a"); String str2=new String("a"); str1str2 输出false str1.equals(str2) 输出true 而如果这样声明
String str1="a"; String str2="a"; str1str2 输出true str1.equals(str2) 输出true 这是因为 equals 方法本来也是比较引用的 字符串类在实现的时候重写了该方法, 第一种声明方法等于是声明了两个对象,用’‘比较是时候比较的是引用输出的是false 由于他们的值相同用equals的时候就比较的是值了,输出true。 而第二种情况不是因为比较有与第一种有差异,而是因为声明有差异,第二种声明方法在声明的时候有堆或堆栈 共用的现象,也就是说 在声明的时候如果如果声明为类属性他会检查在堆栈中有没有与现在声明的是相同结构的字符串。如果有就直接将地址指向已有内存地址。声明在方法内部的局部变量原理一样只不过他是堆栈共享。 对应上面是示例: 第一种情况:(1) 声明一个string类型的对象 str1,这个操作会在内存中示例化一个string类型的对象。 (2) 再声明一个String类型的对象str2,这个操作会在内存中示例化另一个String类型的对象,与第一个对象相互独立。 (3)比较两个对象的引用,因为他们是相互独立的所以输出false (4)比较两个对象的值,他们虽然是独立的内存区域但是有共同的内存结构(值),输出true 第二种情况:(1)声明一个字符串str1 会示例化一个String类型的对象。 (2)声明另一个字符串 ,现在会检查在同一作用域中有没有相同的内存结构的变量,如果有就直接将将地址指向他。 (3)==比较他们有相同的地址, (4)equals比较他们有相同的内存结构(值)。

java中字符串的比较以及string 方法图解_String方法使用

标签:java,string,str1,equals,字符串,图解,声明,比较,String
From: https://blog.51cto.com/u_12266412/8925884

相关文章

  • java中对于jvm虚拟机进程的操作类
    在java中,Runtime类表示运行时操作类,是一个封装了JVM进程的类,每一个JVM都对应着一个Runtime类的实例,此实例由JVM运行时为其实例化。下面图示演示了其方法以及应用。......
  • java Stream
    一、Stream1、概述 2、Stream流使用过程 示例图: 3、 Stream流的常见生成方式 示例:packageitbianma01;importjava.util.*;importjava.util.stream.Stream;publicclassDemo{publicstaticvoidmain(String[]args){//方式一:Collection......
  • JavaScript 数组方法重写
    constlist=[1,2,3]Array.prototype.myForeach=function(fn){for(leti=0;i<this.length;i++){fn(this[i],i,this)}}Array.prototype.myMap=function(fn){const_list=[]for(leti=0;i<this.length;i......
  • Java基础语法入门
    1.引言:Java是一门强大而广泛应用的编程语言,其灵活性和可靠性使其成为许多开发者的首选。不仅在企业级应用程序中发挥着重要作用,而且在移动应用、大数据处理和嵌入式系统等领域也得到了广泛运用。学习Java是成为一名全栈开发者的绝佳起点之一,因为它具有跨平台性、面向对象的特性以......
  • C++标准库std::string的find_first_not_of 方法介绍:
    C++标准库std::string 的  find_first_not_of方法介绍: 例如:stra.find_first_not_of(s_fmt_a)在字符串stra中找到第一个不在s_fmt_a字符串中出现过的字符。stra="abc",abc字符都在s_fmt_a字符串里面出现过,所以第一个不在s_fmt_a里的字符是找不到的,返回......
  • 若依框架跑起来,Java小白入门(一)
    背景本人Java小白,有一点编程基础(c#)。企业数字化建设大环境是JAVA,所以需要搞起来,而学习最快的方式就是读代码,学以致用干项目。所以这个系列就是从小白看能否变成小黑。码云上有很多框架,所以需要选择一款容易入手的,看star量和历史,以及各种ruoyi变异版本,路径就比较清楚,本身其有......
  • C++ Qt开发:StringListModel字符串列表映射组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QStringListModel字符串映射组件的常用方法及灵活运用。QStringListModel是Qt中用于处理字符......
  • java Page 实现根据字段名排序
    /***排序JSON格式*/@ApiModelProperty(value="排序JSON格式")privateStringorderBy;  @GetMapping("/page_manage")@ApiModelProperty(value="管理端用户管理分页",notes="管理端用户管理分页")publicRpageManage(Page<SysUser>page,......
  • Java文件与byte数组
    读取Java文件到byte数组的三种方式一、FileUtils.javaimportjava.io.BufferedInputStream;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.RandomA......
  • 《Java架构师的第一性原理》31分布式计算之微服务RPC(Dubbo)
    1 互联网架构,究竟为啥要做服务化互联网架构,究竟为啥要做服务化?2 微服务架构,多“微”才合适?微服务架构,多“微”才合适? 3 离不开的微服务架构,脱不开的RPC细节离不开的微服务架构,脱不开的RPC细节3.1服务化解决的问题1)服务化需要解决的问题:一套序列化、反序列化、网络框......