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

为什么会输出上边的结果呢,String x = "Hello" 的方式,Java 虚拟机会将其分配到常量池中,而常量池中没有重复的元素,比如当执行“Hello”时,java虚拟机会先在常量池中检索是否已经有“Hello”,如果有那么就将“代理”的地址赋给变量,如果没有就创建一个,然后在赋给变量;而 String z = new String(“Hello”) 则会被分到堆内存中,即使内容一样还是会创建新的对象。

 

上面程序中的"==“是判断两个对象引用的地址是否相同,也就是判断是否为同一个对象,a1与a2 返回为true,a1与a3返回则是false。说明a1与a2引用的同一个对象的地址,a3则与其它两个引用不是同一个对象地址。
Java为了避免产生大量的String对象,设计了一个字符串常量池。工作原理是这样的,创建一个字符串时,JVM首先为检查字符串常量池中是否有值相等的字符串,如果有,则不再创建,直接返回该字符串的引用地址,若没有,则创建,然后放到字符串常量池中,并返回新创建的字符串的引用地址。所以上面a1与a2引用地址相同。
那为什么a3与a1、a2引用的不是同一个字符串地址呢? String a3=new String(“代理Hello); JVM首先是在字符串常量池中找"Hello” 字符串,如果没有创建字符串常量,然后放到常量池中,若已存在,则不需要创建;当遇到 new 时,还会在内存(不是字符串常量池中,而是在堆里面)上创建一个新的String对象,存储"Hello",并将内存上的String对象引用地址返回,所以a3与a1、a2引用的不是同一个字符串地址。内存结构图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点程序员最喜欢的15个网站

程序员作为一个经常和互联网打交道的人群,他们喜欢浏览哪些网站呢?不爱敲代码的程序猿整理了以下网站供大家参考,排名不分先后: 0. Google https://google.com 这个不用多说了吧。 1.GitHub 开发者最最最重要的网站:h…

简单的反射 把datatable 转换成list对象

/// <summary>/// 把datatable 转换成list对象/// </summary>/// <typeparam name"T"></typeparam>/// <param name"dt"></param>/// <returns></returns>public List<T> SelectsAll<T>(Data…

mysql 取 映射数据库中_JAVA与数据库MySQL相连接

JDBC(Java数据库连接体系结构)&#xff1a;是Java实现数据库访问的应用程序编程接口&#xff0c;主要功能是管理存放在数据库中的数据。通过接口对象&#xff0c;应用程序可以完成与数据库的连接&#xff0c;执行SQL语句&#xff0c;从数据库中获取结果&#xff0c;获取状态以及…

抽象类必须要有抽象方法吗?

答案是&#xff1a;不必须。 这个题目主要是考察对抽象类的理解。 说一下我个人的理解吧。 1.如果一个类使用了abstract关键字修饰&#xff0c;那么这个类就是一个抽象类。 2.抽象类可以没有抽象方法 3.一个类如果包含抽象方法&#xff0c;那么这个类必须是抽象类&#xf…

python序列化和反序列化_Python 中 json 数据序列化和反序列化

1.Json 定义定义&#xff1a;JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。JSON 的数据格式其实就是 python 里面的字典格式&#xff0c;里面可以包含方括号括起来的数组&#xff0c;也就是python里面的列表。特点&#xff1a;简洁和清晰的层次…

重写navigationController的push方法后,出现卡顿现象

在使用navigation的pushViewController进行push的时候&#xff0c;两个页面间的动画会出现卡顿一下再推出的效果&#xff0c;是因为iOS7 viewController背景颜色的问题&#xff0c;看到大神的博客上说&#xff1a;其实不是卡顿&#xff0c;是由于透明色颜色重叠后视觉上的问题&…

硬件:RS232基础知识笔记

个人计算机上的通讯接口之一&#xff0c;由电子工业协会&#xff08;ElectronicIndustriesAssociation&#xff0c;EIA&#xff09;所制定的异步传输标准接口。通常RS-232接口以9个引脚&#xff08;DB-9&#xff09;或是25个引脚&#xff08;DB-25&#xff09;的型态出现&#…

普通类和抽象类有哪些区别?

抽象类不能被实例化抽象类可以有抽象方法&#xff0c;抽象方法只需申明&#xff0c;无需实现含有抽象方法的类必须申明为抽象类抽象类的子类必须实现抽象类中所有抽象方法&#xff0c;否则这个子类也是抽象类抽象方法不能被声明为静态static抽象方法不能用 private 修饰&#x…

正则表达式格式化日期

var str "2016年4月11日";str str.replace(/[\u5e74|\u6708]/g,"-").replace(/\u65e5/g,""); 转载于:https://www.cnblogs.com/smght/p/5379514.html

硬件:RS422基础知识笔记

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

mysql和php数据交互_php mysql交互

1.接受数据if($_POST){$uname trim($_POST[‘uname‘]);$pasd md5($_POST[‘pasd‘]);2.查询数据库$conn new mysqli(‘localhost‘,‘root‘,‘root‘,‘qiye‘);$sql "select * from admin where uname ‘$uname‘ and pasd ‘$pasd‘ ";$res $conn->que…

硬件:串口握手基础知识笔记

RS-232通行方式允许简单连接三线&#xff1a;Tx、Rx和地线。但是对于数据传输&#xff0c;双方必须对数据定时采用使用相同的波特率。尽管这种方法对于大多数应用已经足够&#xff0c;但是对于接收方过载的情况这种使用受到限制。这时需要串口的握手功能。在这一部分&#xff0…

PyV8

待完善 pyv8是个js解析引擎&#xff0c; PyV8 是 V8 引擎的 Python 语言封装&#xff0c;这是 Python 和 JavaScript 对象之间的桥&#xff0c;支持在 Python 脚本中调用 V8 引擎。 # -*- coding: cp936 -*-import PyV8class Test():def js(self):ctxt PyV8.JSContext()ctxt.e…

抽象类能使用 final 修饰吗?

抽象类就是要被继承的&#xff0c;不能用final声明&#xff0c;final声明的类不可继承

python高斯求和_二、算法分析

一、什么是算法分析程序和算法的区别&#xff1a;算法是对问题解决的分步描述程序是采用某种编程语言实现的算法&#xff0c;同一个算法通过不同的程序员采用不同的编程语言&#xff0c;能产生很多程序算法分析的概念&#xff1a;算法分析主要就是从计算资源消耗的角度来评判和…

硬件:交换机基础知识

1、交换机的概念交换机&#xff08;Switch&#xff09;意为“开关”&#xff0c;是一种用于电&#xff08;光&#xff09;信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交…

PhantomJS 与python的结合

待完善 一.简介 PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能&#xff0c;使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器 做的事情&#xff0c;它都能做到。它不仅是个隐形的浏览器&#xff0c;提供了诸如CSS选…

mysql对数据库的操作_MySQL数据库对数据库的操作

1.创建数据库mysqlgt; create database if not exists tongcheng; Query OK, 1 row affected (0.01 sec) mysqlgt; 2.查看创建数1.创建数据库mysql> create database if not exists tongcheng;Query OK, 1 row affected (0.01 sec)mysql>2.查看创建数据库时的选项mysql&g…

static用途

static关键字的用途 一句话描述就是&#xff1a;方便在没有创建对象的情况下进行调用(方法/变量)。 显然&#xff0c;被static关键字修饰的方法或者变量不需要依赖于对象来进行访问&#xff0c;只要类被加载了&#xff0c;就可以通过类名去进行访问。 static可以用来修饰类的…

硬件:宽带猫(光猫)的基础知识

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…