Java中String类new创建和直接赋值字符串的区别
2024-09-04 15:29:24
转自:https://blog.csdn.net/a986410589/article/details/52454492
方式一:String a = “aaa” ;
方式二:String b = new String(“aaa”);
- 两种方式都能创建字符串对象,但方式一要比方式二更优。
- 因为字符串是保存在常量池中的,而通过new创建的对象会存放在堆内存中。
一:常量池中已经有字符串常量”aaa”
- 通过方式一创建对象,程序运行时会在常量池中查找”aaa”字符串,将找到的”aaa”字符串的地址赋给a。
- 通过方式二创建对象,无论常量池中有没有”aaa”字符串,程序都会在堆内存中开辟一片新空间存放新对象。
一:常量池中没有字符串常量”aaa”
- 通过方式一创建对象,程序运行时会将”aaa”字符串放进常量池,再将其地址赋给a。
- 通过方式二创建对象,程序会在堆内存中开辟一片新空间存放新对象,同时会将”aaa”字符串放入常量池,相当于创建了两个对象
测试:
public class StringNewTest {
public static void main(String[] args) {
String a = "aaa";
String b = "aaa";
String c = new String("aaa");
System.out.println("a==b:"+(a == b));
System.out.println("a==c:"+(a == c));
System.out.println("a与b的值相等:"+(a.equals(c)));
}
}
结果:
a==b:true
a==c:false
a与b的值相等:true
最新文章
- ”未在本地计算机上注册“microsoft.et.OLEDB.4.0”提供程序。“解决方案大集合
- [LeetCode] Missing Number (A New Questions Added Today)
- 使用Python脚本进行域名解析
- SQL中使用WITH AS提高性能
- POJ 1014 Dividing 多重背包
- USACO Chapter 1 解题总结
- servlet后台怎样接收对象參数
- java中的GC(gabage collection)如何工作
- Hadoop入门第二篇-MapReduce学习
- Docker的名字空间
- Max Area of Island
- php替换字符串函数strtr()和str_repalce()区别
- [jQuery]判断checkbox是否选中的3种方法
- git特殊命令
- 经常在比特币中看到的merkle树是什么?
- BZOJ4025 二分图 分治 并查集 二分图 带权并查集按秩合并
- Java ee第一周的作业
- 2018-2019-1 20189203《Linux内核原理与分析》第三周作业
- java 三目运算符
- IntelliJ IDEA 2017版 Spring5最基本的bean例子创建
热门文章
- PS:将一个图片变成圆形
- CopyTranslator-复制即翻译的外文辅助阅读翻译解决方案
- MySQL入门很简单: 1 数据库概述
- postman 1—官网下载及安装
- 安装php的memcache扩展
- react里面怎么引入样式
- 学习MyBatis之简单入门HelloWorld
- 使用 NetBackup 命令创建 Hyper-V 策略(命令创建其他策略也是如此)
- numpy+pandas+matplotlib+tushare股票分析
- django.template.exceptions.TemplateSyntaxError: 'article_tags' is not a registered tag library.