zoukankan      html  css  js  c++  java
  • Java中字符串的几个实例

    String str=new String("abc");new 对象时,位于堆中,同时看字符串常量中是否有字符串"abc",如果没有,则进行添加,同时进行关联;

    如果有,则直接进行关联。

    String str="abc";对应于JVM内存模型中的方法区,方法区位于JVM内存模型的堆中,可叫做字符串常量区。

    public class synchronizedArrayList {
    
        //位置:存储在JVM内存模型的方法区中,而方法区位于JVM内存模型的堆中
        //字符串常量区,static和不是static都是存储在常量区中
        public static String str_static="good";
        public static void main(String[] args) {
    //存储在常量区中
            String str1 = "abc";         
            //当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),
            //则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。 
            //它遵循以下规则:对于任意两个字符串 s 和 t ,
            //当且仅当  s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true 。
            String str2 = new String("abc").intern();         
            System.out.println(str1==str2);  //true
            
            //intern首先常量区中没abcd,则把对象添加进去,然后返回的是字符串常量区中的abcd的引用
            String str3=new String("abcd").intern();
            //常量区中
            String str4="abcd";
            System.out.println(str3==str4);//true 
            
            //位于堆中
            String str_all=new String("good");
            //位于常量区中
            String ss="good";
            String str5="goo";
            String str6="d";
            //由于有变量的相加,则会创建新的变量,实际创建Stringbuilder进行append
            String str7=str5+str6;
            System.out.println(str7==ss);//false
            System.out.println(str7==str_all);//false
            System.out.println(str_static==str_all);//false,一个堆中,一个常量区中
            System.out.println(str_static==str_all.intern());//true,intern返回的是常量区中的引用
            System.out.println(str_static==ss);//true,static修饰与否,都位于常量区中
        }


    运行结果为:

    true
    true
    false
    false
    false
    true
    true

  • 相关阅读:
    G++与VS2015在变量作用域上的差异性
    SO_REUSEADDR与SO_REUSEPORT平台差异性与测试
    带着SMART原则重新出发
    动态语言的灵活性是把双刃剑 -- 以Python语言为例
    程序员必知的Python陷阱与缺陷列表
    MySQL添加字段和修改字段
    java poi给sheet表格中的某个单元格添加批注
    Maven入门:使用Nexus搭建Maven私服及上传下载jar包
    Linux上两种网络连接方式
    linux创建账户并自动生成主目录和主目录下的文件
  • 原文地址:https://www.cnblogs.com/Berryxiong/p/6195460.html
Copyright © 2011-2022 走看看