zoukankan      html  css  js  c++  java
  • Java中字符串内存位置浅析

    String内存位置说明

    1. 显式的String常量

    String a = "holten";
    String b = "holten";
    • 第一句代码执行后就在常量池中创建了一个值为holten的String对象;
    • 第二句执行时,因为常量池中存在holten所以就不再创建新的String对象了。
    • 此时该字符串的引用在虚拟机栈里面。
    1. String对象

    String a = new String("holtenObj");
    String b = new String("holtenObj");
    • Class被加载时就在常量池中创建了一个值为holtenObj的String对象,第一句执行时会在堆里创建new String("holtenObj")对象;
    • 第二句执行时,因为常量池中存在holtenObj所以就不再创建新的String对象了,直接在堆里创建new String("holtenObj")对象。

    验证一下

    /**
     * Created by holten.gao on 2016/8/16.
     */
    public class Main {
        public static void main(String[] args){
            String str1 = "高小天";
            String str2 = "高小天";
            System.out.println(str1==str2);//true
            
            String str3 = new String("高大天");
            String str4 = new String("高大天");
            System.out.println(str3==str4);//false
        }
    }

    返回结果:

    true
    false
  • 相关阅读:
    oracle 大文本由clob来存
    merge into 语法缺陷
    基本元素的增加 jquery
    报表 jquery
    购物车的高级实现 逻辑结构清晰
    购物车的实现 js
    定时器的制作与清除
    div的大小设置
    二级菜单联动(自定义框架)
    编写数组删除模板
  • 原文地址:https://www.cnblogs.com/little-fly/p/9363263.html
Copyright © 2011-2022 走看看