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

Java中字符串的几个实例的更多相关文章

  1. 三张图彻底了解Java中字符串的不变性

    转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...

  2. java中字符串的非空判断

    问题如下:在java 中 字符串为null 如何判断String str;if(str==null) ??str.equal("null") ?? 答:我觉得应该搞清楚字符串对象和 ...

  3. java中字符串String 转 int(转)

    java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...

  4. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...

  5. Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...

  6. JAVA中字符串函数subString的用法小结

    本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...

  7. Java中字符串的一些常见方法

    1.Java中字符串的一些常见方法 /** * */ package com.you.model; /** * @author Administrator * @date 2014-02-24 */ ...

  8. Java中字符串indexof() 的使用方法

    Java中字符串中子串的查找共有四种方法(indexof())indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置.如果没有找到子字符串,则返回-1.如果 startind ...

  9. Java中字符串string的数据类型

    Java中字符串string的数据类型 时间:2017-07-03 08:01:47 YuanMxy 原文:https://blog.csdn.net/YuanMxy/article/details/ ...

随机推荐

  1. [No000030]程序员节发点别的:中国教育整个把人脑子搞坏了-易中天

    导读 在易中天看来,中国教育和中国文化的问题一样,是弱智化.搞坏的原因是什么?是我们的教育评价目标就是"成王败寇"四个字.他明确提出反对励志,反对培优,反对成功学,反对望子成龙.他 ...

  2. MySQL 基础语句的练习

    -- *** ①.对数据库的操作 *** -- -- 查看所有的数据库 SHOW DATABASES; -- 创建数据库 CREATE DATABASE day1026 DEFAULT CHARACT ...

  3. uva10160 Servicing Stations

    The input consists of more than one description of town (but totally, less than ten descriptions). E ...

  4. HTML-学习笔记(常用标签)

    本篇博客讲一讲HTML中的标签 HTML 标题 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的.<h1> 定义最大的标题.<h6> ...

  5. 苹果IOS开发者账号的区别,企业账号,个人账号,公司团队账号,教育账号

    苹果IOS开发者账号总结 详细地址:https://developer.apple.com/programs/which-program/ 个人账号(Individual): 费用99美金一年, 该账 ...

  6. PHP代码20个实用技巧(转)

    这些技巧特别是封装的,相对路径的还是挺好的,本身来自微信公众号,但是我担心以后删除,所以在我的博客上备份一下(微信公众号为:菜鸟教程) 在这篇文章中我们将看看一些关于PHP开发有用的提示和技巧,可以用 ...

  7. Hadoop: MapReduce2多个job串行处理

    复杂的MapReduce处理中,往往需要将复杂的处理过程,分解成多个简单的Job来执行,第1个Job的输出做为第2个Job的输入,相互之间有一定依赖关系.以上一篇中的求平均数为例,可以分解成三个步骤: ...

  8. Putty颜色设置

    默认的Putty颜色和字体太不好看了,得自己设置: 字体:毫无疑问Consolas, 10-point:看起来非常清新自然 颜色: * Default Foreground: 255/255/255  ...

  9. Theano2.1.11-基础知识之稀疏

    来自:http://deeplearning.net/software/theano/tutorial/sparse.html sparse 通常来说,稀疏矩阵可以和常规矩阵一样提供相同的功能.两者不 ...

  10. 如何在 Apache 中为你的网站设置404页面

    一个好的网站,拥有一个好的 404页面 是标配. 为何要有 404页面?如何设置一个 404页面? why 404 pages? 在本地,比如我打开 localhost/fuck.htm(该文件不存在 ...