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