public static void main(String[] args){

String a=new String("ddy");
String b=new String("ddy");
System.out.println("a:"+a.hashCode());
System.out.println("b:"+b.hashCode());
System.out.println("equals:"+(a.equals(b)));
System.out.println("a==b:"+(a==b));

}

输出为:

a:99321
b:99321
equals:true
a==b:false

String a = new String("段丁阳")创建了两个对象,一个是在常量池中,一个是在堆内存中,常量池的为"ddy";堆内存中为new String();而该对象又指向在常量池中的字符串常量。

而a==b比较的正是new String()的内存地址,a的new String()与b的new String()内存地址显然是不同的,所以a==b返回false

但是a.hashCode与b.hashCode相等,hashCode并不能代表内存地址

String a = "aa";与String a = new String("aa");最根本的区别是:
String a = "aa";创建了一个字符串变量。a 是指向栈中的"aa";
而String a = new String("aa");创建的是一个对象。a 是指向堆中"aa"的地址。

最新文章

  1. C语言 内存四大存储区域
  2. python_way ,day1 编译安装python3、基础及流程控制
  3. Windows Internals学习笔记(二)系统架构
  4. 文件系统层次标准FHS的详细介绍
  5. ubuntu16.04 编译安装mysql5.7.x,以及配置使用
  6. Centos7 安装redis3.2.3 过程
  7. office2013发布博客
  8. Java_.jar .war .ear 详解
  9. FCKeditor插件开发实例:uploadify多文件上传插件
  10. 关闭并且禁用ECSHOP缓存
  11. 基于zigbee与tiny4412开发板的环境监测系统
  12. progressbar样式
  13. Array数组方法的总结
  14. XLSReadWrite控件简介
  15. Redis集群_3.redis主从自动切换Sentinel(转)
  16. 想要见识外太空?一款VR头显就能帮你实现梦想
  17. PHP 时间与字符串的相互转化
  18. C++:new 和 delete
  19. 【Recorder.js+百度语音识别】全栈方案技术细节
  20. [Android] QPST,解BL锁,刷Recovery,备份系统,root,刷框架.

热门文章

  1. Big Data Mindmap
  2. saltstack 源码安装
  3. (一) Docker in Docker
  4. 北京区域赛I题,Uva7676,A Boring Problem,前缀和差分
  5. Python3基础教程(十七)—— Virtualenv
  6. uva1609 Foul Play
  7. app自动化配置信息
  8. v8引擎详解
  9. net core 使用ef生成实体类(SqlServer)
  10. JS第三方中间件的延伸