特性:

1.字符串的不可改变性

String  s="a"+"b"+"c";

创建了四个对象

在方法常量池中存储   a“,”b“,”c“,三个对象

最后会吧三个拼接到一起在创建一个对象   存储"abc"的对象,a,b,c的对象会被gc在空闲地时候回收

体现了字符穿的不可改变型

2.字符串的底层代码还是字符数组

public String(String original) {
int size = original.count;
char[] originalValue = original.value;
char[] v;
if (originalValue.length > size) {
// The array representing the String is bigger than the new
// String itself. Perhaps this constructor is being called
// in order to trim the baggage, so make a copy of the array.
int off = original.offset;
v = Arrays.copyOfRange(originalValue, off, off+size);
} else {
// The array representing the String is the same
// size as the String, so no point in making a copy.
v = originalValue;
}
this.offset = 0;
this.count = size;
this.value = v;
}

两种创建方式

直接创建   eg:String str="abcd";

new创建    String s=new String();

存储的位置

直接存储   字符串会直接存储在方法区中的常量池中

new 创建     会创建两个对象   首先会创建一个String对象 然后在创建一个字符串对象存储在常量池中,这是堆中存储的是常量池中的地址    常量池中的地址才是字符串真正存储的地址。

内存图

最新文章

  1. 【原】SDWebImage源码阅读(二)
  2. hexo建个人博客
  3. 关于大小型项目如何最大限度提高WebAPi性能
  4. MyEclipse 关闭鼠标悬停提示
  5. 【转】SVN的dump文件导入
  6. java 导出Excel 大数据量,自己经验总结!
  7. linux驱动系列之文件压缩解压小节(转)
  8. 蜂窝移动网络是什么,它和 Wi-Fi 有什么区别? 蓝牙和无线有什么区别?
  9. zookeeper分布式锁避免羊群效应(Herd Effect)
  10. LeetCode OJ 223.Rectangle Area
  11. Xamarin.Android 调用Web Api(通过ListView展示远程获取的数据)
  12. 如何写jquery插件
  13. python-初识python
  14. mac快捷键留存查看
  15. [Android] 仿照 Last App Switcher 写的小程序
  16. 1. SVN clean失败解决方法
  17. 图解Java常用数据结构(一)
  18. oracle入门(1)——安装oracle 11g x64 for windows
  19. 5.linux目录结构介绍
  20. hadoop jar x.jar 执行过程

热门文章

  1. Linux逻辑卷的拉伸和缩小
  2. 迷你MVVM框架 avalonjs 1.3.9发布
  3. 疯狂JAVA——第三章 数据类型和运算符
  4. Servlet Filter 过滤器 对指定页面不拦截
  5. Enterprise Library 企业库
  6. Animation.wrapMode循环模式
  7. html标签的总结-重复
  8. iOS 代码调试
  9. [leetcode]277. Find the Celebrity 找名人
  10. appcache的一个特殊用法