Java中直接赋值和new有何不同?
来源:互联网 发布:洛天依软件下载 编辑:程序博客网 时间:2024/05/24 02:48
在 Java 开发中, 下面的代码
String a ="abc";
String b = new String("abc");
System.out.println(a==c);
这样打印出来的结果是"false "
这是为什么呢。
java 对对象的管理是维护一张 hashcode 内存表的。
但 第一行 String a = "abc" 时, java 虚拟机会先查看 栈内存是否
存在着一样内容的 变量, 如 果没有, 则在栈内存中开辟一个临时的栈内存, 用来
存储 a 的内存。 如果存在同样的内容, 则虚拟机开辟一个b 变量并将 b 的引用指向 a
所以我们用 System.out.println(a==c); 实际是比较其引用地址是否一样的。
第二句 String b = new String("abc"); 则是在 堆内存中开辟存储空间。
用 new 出来的空间, 交由虚拟机 动态回收.
因此这里的 比较引用就是 false 的。
内容的比较可以用 equals() 函数.
0 0
- Java中直接赋值和new有何不同?
- Java中Ear、Jar、War文件之间有何不同
- Java中Ear、Jar、War文件之间有何不同?
- Java中Ear、Jar、War文件之间有何不同?
- Java中Ear、Jar、War文件之间有何不同
- Java中Ear、Jar、War文件之间有何不同
- Java中Ear、Jar、War文件之间有何不同
- Java中Ear、Jar、War文件之间有何不同
- 【Hibernate】Hibernate中save、persist和saveOrUpdate有何不同?
- java和javac的-classpath选项有何不同
- c++模板和java泛型之间有何不同
- java : spring roo 和 spring boot 有何不同
- java中String new和直接赋值的区别
- java中String new和直接赋值的区别
- Java中String直接赋值和使用new的区别
- java中String new和直接赋值的区别
- java中String通过new和直接赋值的区别
- Java中String直接赋值和使用new的区别
- Linux 下安装python软件包(pip、nose、virtualenv、distribute )
- 分治系列——315. Count of Smaller Numbers After Self[hard]
- CentOS6.5 Linux安装mysql5.6数据库 针对64位系统
- 考研路上-漫漫考研路(记在清明节)
- MQTT协议、mosquitto安装体验
- Java中直接赋值和new有何不同?
- BZOJ 2594 [Wc2006]水管局长数据加强版
- 基础练习——01子串
- 模拟退火算法——概率法解全局优化
- B. The Meeting Place Cannot Be Changed
- 基础练习——字母图形
- hdu 2285 Cup(二分,求圆台的体积)
- linux下python的easy_instal安装l
- cartographer(2)安装