首页 > 其他分享 >String创建及一些性质

String创建及一些性质

时间:2022-08-19 16:24:17浏览次数:64  
标签:常量 s3 创建 s1 s4 s2 性质 String

        String s1 = "ab";
        String s2 = "12";
        String s3 = s1 + s2;
        String s4 = "ab" + "12";
        String s5 = "ab12";
        System.out.println(s3 == s4);   // false
        System.out.println(s3 == s5);   // false
        System.out.println(s4 == s5);   // true

分析:
s1和s2先看常量池中有没有这两个变量,没有的话创建一个,并将地址赋值给s1和s2

s3,则是在底层调用了StringBuilder的toString方法,具体代码如下注释,即创建了新的变量,因为new了,所以就在堆中开辟空间,然后在看其中的值,在常量池中有没有,有的话直接指向没有的话创建然后将地址返回

s4是先对s1和s2做一个简单的拼接,然后在看常量池中有没有该变量,没有的话创建,并将地址赋值给s3

s5先看常量池,有的话直接返回

结论:因为s3指向的 堆,s4指向常量池,s5指向的为常量池,故结果为false ,false,true。


小结:
String s4 = "ab" + "12";常量相加看的是常量池,
String s3 = a + b;变量相加,是在堆中


注释1:

@Override
public String toString() {
// Create a copy, don't share the array
return new String(value, 0, count);
}

对象创建在内存中的分布示意图:
image

标签:常量,s3,创建,s1,s4,s2,性质,String
From: https://www.cnblogs.com/yfs1024/p/16602369.html

相关文章

  • 练习2:Object.prototype.toString()
    对于Object.prototype.toString()方法,会返回一个形如"[objectXXX]"的字符串。如果对象的toString方法没有被重写,就会返回如上面形式的字符串。({}).toString();......
  • .net 学习手册之--创建自己的nuget包
    一、前言在开发过程中经常有这样的场景:一个工具性质的代码会经常被用到,在.net中一般的做法是将这些代码封装成一个类库,让后需要用到这个功能时直接引入类库的dll文件,......
  • MongoDB 单服务器创建用户并授权
    MongoDB单服务器创建用户并授权前言之前使用MongoDB时对于用户的认证和授权一直模模糊糊,各种教程看的半半拉拉,最后勉强能用。现在有时间了来总结一下。基础1.常见......
  • Could not resolve placeholder 'jdbc.password' in string value "${jdbc.password}"
    spring连接数据库时报错org.springframework.beans.factory.BeanDefinitionStoreException:Invalidbeandefinitionwithname'dataSource'definedinclasspathres......
  • Linux怎样创建FTP服务器-修改用户默认目录-完美解决
    在创建FTP服务器之有先命令:ps-ef|grepvsftpd查一下系统有没有安装vsftpd这个服务器,如果出现如下图所示的界面说明没有安装。Linux怎样创建FTP服务器然后再执行:yumi......
  • redis-golang strings 操作
    本文来自于  github.com/go-redis/redis/v9的自带的测试代码commands_test1、Append(ctxcontext.Context,key,valuestring)//如果不存在key,就将keyval......
  • 01 挑战十分钟创建一个新的全栈项目
    接上篇:Vue+Koa+MongoDB从零打造一个任务管理系统话不多说,直接开整。前端使用vite构建相比vuecli的编译打包,vite利用了浏览器原生的module加载,速度极快。执行n......
  • java常用类String
    java常用类String理解String的不可变性packagecom.zx.java;importorg.junit.Test;/***String的使用**@authorzx*@create2022-08-1718:00*/public......
  • Python 创建虚拟环境
    桌面建立一个文件夹,假设为tor打开cmdcddesktopcdtor假设python没有  pipenv包,则pip3installpipenv假设tor文件夹内没有虚拟环境,即没有pipfiel及p......
  • spring框架2:创建第一个spring项目
    创建hello_ssm工程,在工程中创建第一个模块hello_springFile-》new-》module,参照“spring框架1”“3.创建maven工程”,结果如下: 默认的目录结构和这个有差距,请参照上面的......