String,
  首先,String有字面值常量的概念,这个字面值常量是在编译期确定下来的,类加载时直接存入常量池(注意,常量池是类的常量池,类与类之间隔离)。
  而运行时生成的字符串,是不在常量池中的。如果想放入常量池中,使用intern()方法即可。
    
  其次,像字面量字符串,因为存放在常量池里边,被常量池引用着,是没法被GC的。

其他知识:

  常规上,字符串都是不可变的(imutable),所以线程安全。

  但是,可以通过反射手段修改字符串!!!因为底层是char[],获取到之后可以强行修改。

/**
* 修改字符串!!!
* @throws NoSuchFieldException
* @throws IllegalAccessException
*/
@Test
public void run6() throws NoSuchFieldException, IllegalAccessException {
String s1 = "abcdefg";
System.out.println("修改前:s1=" + s1);
Field value = String.class.getDeclaredField("value"); //value是String内部字段:private final char value[];
value.setAccessible(true);
char[] cs = (char[]) value.get(s1);
// cs = "ent".toCharArray(); //这样是引用变了,但字符串内部可没变(private final char value[];)
cs[0] = 'A';
System.out.println("修改后:s1=" + s1);
}

需要注意的是,不能修改引用,而要直接修改数组元素!!!

最新文章

  1. egret GUI 和 egret Wing 是我看到h5 最渣的设计
  2. SSIS 对数据排序
  3. surge for mac出测试版本了
  4. SPRING + THYMELEAF 配置
  5. mysqld.exe 占了400M内存的问题
  6. wordpress安装,创建配置文件无反应
  7. Matlab绘图高级部分
  8. CodeForces 707A Brain's Photos (水题)
  9. FIREDAC TFDCONNECTION连接MYSQL数据库
  10. 解决error:could not open ...jvm.cfg
  11. TCP/IP-入门
  12. PHP MySQL 连接数据库 之 Connect
  13. Hyper-v 安装CentOS
  14. UVa202 Repeating Decimals
  15. iOS JsonModel
  16. Java课程设计 学生基本信息管理系统 团队博客
  17. IntelliJ IDEA(五) :Settings(中)
  18. Spring Boot系列——如何集成Log4j2
  19. Android之ListView,AsyncTask,GridView,CardView,本地数据存储,SQLite数据库
  20. Hades:移动端静态分析框架

热门文章

  1. python 中hive 取日期时间的方法
  2. bs-web项目时会经常打断点跟踪信息,可是循环时总是F10、F10的按,那么把所数据打印出来查看会更方便
  3. 整理了一份招PHP高级工程师的面试题(转)
  4. nginx服务器下 PHP 出现 502 解决方案(转)
  5. unity 获得子节点
  6. cocos2dx 3.x designResolutionSize须主动设置
  7. Andriod Studio中setText输出中文在AVD中显示乱码的解决方法
  8. NPOI之Excel——自动筛选、数字格式
  9. OPENGL NEHE Lesson11 11课的计算公式推导
  10. read pread write pwrite open