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

String str=“i”与 String str=new String(“i”)一样吗?

微信搜索《Java鱼仔》,每天一个知识点不错过

(一)每天一个知识点

String str=“i”与 String str=new String(“i”)一样吗?

(二)结论

不一样,使用String str=“i”,java虚拟机会把它分配到常量池中,而 String str=new String(“i”)创建了一个对象,会被分到堆内存中。

(三)再多学一点

Java为了避免产生大量的String对象,设计了一个字符串常量池。工作原理是这样的,创建一个字符串时,JVM首先为检查字符串常量池中是否有值相等的字符串,如果有,则不再创建,直接返回该字符串的引用地址,若没有,则创建,然后放到字符串常量池中,并返回新创建的字符串的引用地址。

所以,当你创建一使用String str="i"创建一个字符串时,str指向的是常量池中的这个字段。

String str=new String(“i”)使用的是标准的对象创建方式
一个对象创建时,在虚拟机中的执行过程如下:

Object obj = new Object() 

Object obj会反映到java虚拟机栈的变量表中,作为一个引用类型数据出现,“new Object()”会反映到java堆中,在java堆上创建一个Object类型的实例数据值的结构化内存,这块内存的长度是不固定的。在java堆中还存放了了能查到此对象类型数据(对象类型、父类、接口、方法等)的地址信息,这些信息存放在方法区中。

简单来讲,String str=new String(“i”)把对象分到了堆内存中,String str="i"将对象分配到了字符串常量池中。

相关文章:

  • ajaxStart()和ajaxStop()方法
  • 如何让多个线程按顺序执行?
  • 泛型设计实现反向比较器
  • 说一下 HashMap 的实现原理?
  • 两个对象的 hashCode()相同,则 equals()也一定为 true吗?
  • 抽象类必须要有抽象方法吗?抽象类能使用 final 修饰吗?
  • CLion 2016.1新增Python、Swift支持,并改进了C++支持
  • SpringBoot如何实现异步、定时任务?
  • Java中BIO、NIO、AIO 有什么区别?
  • 网络协议系列之二:HTTP(2)
  • redis和mysql数据不一致问题如何解决?
  • Spring中的资源加载策略
  • 你知道迭代器 Iterator 是什么吗?
  • 什么是乐观锁、什么是悲观锁,两种锁在Java中的具体应用场景有哪些
  • Error: Out of memory! attempting SFTP connectio
  • 【译】JS基础算法脚本:字符串结尾
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • DataBase in Android
  • Javascript弹出层-初探
  • js面向对象
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SQLServer之创建数据库快照
  • Windows Containers 大冒险: 容器网络
  • 给新手的新浪微博 SDK 集成教程【一】
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • #DBA杂记1
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $().each和$.each的区别
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (多级缓存)多级缓存
  • (二)JAVA使用POI操作excel
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .cfg\.dat\.mak(持续补充)
  • .Net 8.0 新的变化
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 中创建支持集合初始化器的类型
  • .NET开发者必备的11款免费工具
  • /usr/bin/env: node: No such file or directory
  • :=
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [Android] Amazon 的 android 音视频开发文档
  • [Android]常见的数据传递方式
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [FT]chatglm2微调
  • [GN] Vue3快速上手1
  • [Interview]Java 面试宝典系列之 Java 多线程
  • [ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup
  • [JS] node.js 入门