Java题-直接赋值与重新创建内存
发布日期:2021-06-30 10:51:58 浏览次数:2 分类:技术文章

本文共 491 字,大约阅读时间需要 1 分钟。

今天去面试了,其中有几个笔试题,印象深刻(因为我不会,所以印象深刻)

代码如下:

package my;public class main {	public static void main(String[] args) {		String a="hello";		String b="hello";				String c=new String("hello");		String d=new String("hello");				System.out.println(a==b);		System.out.println(c==d);		System.out.println(a==c);	}}

运行结果如下:

造成这个结果的原因是(百度的):

如果是直接赋值的是取常量池的数据, 如果是new的,永远都是重新创建内存. 所以 s == d  因为在object比较中 ==比较的是内存地址, 而new String()是告诉jvm重新创建一块内存.
"hello"就是一个匿名对象, 引用的还是常量池的 你只需要理解 对象中==比较的是内存地址即可, new就是开辟一块内存

转载地址:https://it1995.blog.csdn.net/article/details/79418096 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java题-如何递归遍历一个文件夹下的所有文件
下一篇:struts2在Action中访问Session,管理员删除用户

发表评论

最新留言

不错!
[***.144.177.141]2024年04月09日 10时54分13秒