/*** java ==号比较String字符串的地址* <p>* String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。* 字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。* 因为String对象是不可变的,它们可以被共享** @author silence* @date 2021/6/18*/
public class StringTest {public static void main(String[] args) {String a = "hello";String b = "hell" + "o";String g = "hell";String c = g + "o";String d = new String("hello");final String e = "hell";String f = e + "o";System.out.println("a:" + a);System.out.println("b:" + b);System.out.println("c:" + c);System.out.println("d:" + d);System.out.println("f:" + f + "\n");//a:为字符常量池地址a   b:字符常量"hell" + "o" 相加  java会进行优化为 hello等于 b 进行存储//此时字符常量池中已经存储了字符串“hello” 所以b会直接引用常量池的地址值。所以a 和 b 地址值相等System.out.println("a == b   " + (a == b));//a:为字符常量池地址a  c=变量g("hell") + 字符常量"o"  字符串变量相加 java底层会使用 StringBuilder//或StringBuffer  的append()方法拼接,再调用tostring 存储在堆中 所以和字符常量池a 地址不等System.out.println("a == c   " + (a == c));//a:为字符常量池地址a  d:new String("hello");  new 关键字每次会在堆中开辟一个新的内存空间存储// 所以d存储的地址是一个新的内存空间,不在字符常量池中。 所以地址不等System.out.println("a == d   " + (a == d));//a:为字符常量池地址a   f: final String e = "hell" + "o"  因为变量e 使用final修饰所以//是常量不是变量 所以不会调用StringBuilder 拼接。e + a= "hell" + "o"java会优化为hello//此时 f 会引用 a在字符常量池的地址  所以a 和 f 的地址相等System.out.println("a == f   " + (a == f));}
}

java ==号比较String字符串的地址相关推荐

  1. 深入理解Java中的String(原地址https://www.cnblogs.com/xiaoxi/p/6036701.html)

    深入理解Java中的String 一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class Stringimplem ...

  2. 第19天学习Java的笔记-String字符串

    29天! 字符串 1.字符串概述和特点.构造方法和直接创建 package Demo1901;/* * java.lang.String类代表字符串. * API当中说,Java程序中的所有字符串字面 ...

  3. 【java学习】String字符串

    1,概念 1)String 不可变 不可变类:final,不可被继承. public final class String implements java.io.Serializable, Compa ...

  4. java 补0_Java String字符串补0或空格

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. package cn.com.songjy; import java.text.Numbe ...

  5. Java中的String字符串及其常用方法

    字符串(String) 文章目录 字符串(String) 直接定义字符串 常用方法 字符串长度 toLowerCase() & toUpperCase()方法 trim()方法去除空格 判空 ...

  6. java 如何将String字符串中的十六进制转换为汉字

    偶然在写代码中,遇到String字符串里面存在非常多的16进制数据,如下图,需要将红框中的十六进制数据转换为对应的汉字,方便阅读. 采用的逻辑思路为,正则表达式匹配出所有的十六进制数据,然后进行转换为 ...

  7. Java中的String字符串

    String类是字符串常量类,该类的对象创建后不能修改.要知道:其实String底层就是char数组.而相对而言的StringBuffer/StringBuilder表示的是一个内容可变的字符序列. ...

  8. java笔试题String字符串单词逆序how are you变成are you how

    今儿去面java,笔试上来六个编程大题也是醉了,两页纸全是英文也是棒棒哒...好多字符串方面的,其实还是挺简单的,但是有些方法感觉有点忘了......总之看面试官看我代码的表情我也是醉了.... 大概 ...

  9. java字符串取反_Java探索之string字符串的应用代码示例

    String类中提供了丰富的用于操作字符串的方法. int indexOf(String str) 该方法用于返回当给定字符串在当前字符串中的位置,若当前字符串不包含给定字符串则返回-1. 重载的方法 ...

最新文章

  1. html里的swal添加倒计时,使用甜蜜警报插件的setInterval函数倒计时
  2. Yii2.0 数据库更新update
  3. Python学习---Django的request扩展[获取用户设备信息]
  4. shell基础09 gawk程序(上)
  5. 【数据结构与算法】之深入解析“路径总和III”的求解思路与算法示例
  6. idea创建springboot项目+mybatis_Spring Boot + MyBatis 多模块项目搭建教程
  7. Zabbix监控——proxy 分布式监控配置
  8. Java23种设计模式之单例模式
  9. python的panda是什么库_Python的Pandas库简述
  10. php模拟登录京东,京东jos 获取授权及php-sdk的使用示例
  11. 从主机名谈Hadoop集群管理
  12. TensorFlow 辨异 —— tf.add(a, b) 与 a+b(tf.assign 与 =)、tf.nn.bias_add 与 tf.add
  13. 用于物联网数据收集和传输的边缘网络密钥
  14. 解决GetTickCount的问题
  15. Invest授粉模型问题求助
  16. PS三种切图方式,干货满满,不看绝对后悔
  17. 云盘同步本地文件和QQ聊天记录
  18. 售前的价值在哪里?这个问题不简单
  19. C语言将raw转为bmp,Raw格式转换为Bmp格式
  20. python概率分布拟合_使用曲线拟合在Python中拟合对数正态分布

热门文章

  1. a pycharm 标记多个_每周分享五个 PyCharm 使用技巧(二)
  2. c语言代码可以python运行吗_c语言如何运行python脚本
  3. threejs中坐标系转换和实现物体跟随鼠标移动
  4. gui显示文本动态框
  5. pthread_cond_wait的spurious wakeup问题
  6. 在 WinCe 平台读写 ini 文件
  7. python中的类怎样理解_理解Python数据类:Dataclass fields 的概述(下)
  8. esp虚拟服务器,esp8266接入云服务器
  9. 【转】ASP.NET 2.0 - 导航(Navigation)SiteMap导航菜单关系
  10. 详解CSS的相对定位和绝对定位