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
Java中字符串的几个实例的更多相关文章
- 三张图彻底了解Java中字符串的不变性
转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...
- java中字符串的非空判断
问题如下:在java 中 字符串为null 如何判断String str;if(str==null) ??str.equal("null") ?? 答:我觉得应该搞清楚字符串对象和 ...
- java中字符串String 转 int(转)
java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...
- 【转】Java中字符串中子串的查找共有四种方法(indexof())
原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...
- Java中字符串中子串的查找共有四种方法(indexof())
Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...
- JAVA中字符串函数subString的用法小结
本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...
- Java中字符串的一些常见方法
1.Java中字符串的一些常见方法 /** * */ package com.you.model; /** * @author Administrator * @date 2014-02-24 */ ...
- Java中字符串indexof() 的使用方法
Java中字符串中子串的查找共有四种方法(indexof())indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置.如果没有找到子字符串,则返回-1.如果 startind ...
- Java中字符串string的数据类型
Java中字符串string的数据类型 时间:2017-07-03 08:01:47 YuanMxy 原文:https://blog.csdn.net/YuanMxy/article/details/ ...
随机推荐
- poj 2892
Tunnel Warfare Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 7725 Accepted: 3188 D ...
- XML操作类
using System; using System.Data; using System.IO; using System.Xml; namespace DotNet.Utilities { ...
- apt-get update更新源时,出现“Hash Sum mismatch”问题
当使用apt-get update更新源时,出现下面"Hash Sum mismatch"的报错,具体如下:root@localhost:~# apt-get update.... ...
- Javascript备忘复习笔记1
一.字符串操作 1.大小写 var s = "hello"; undefined g = s.toUpperCase(); "HELLO" g; "H ...
- sqlserver 通用分页存储过程
来源:http://www.jb51.net/article/19936.htm CREATE PROCEDURE commonPagination ), --要显示的列名,用逗号隔开 ), --要查 ...
- C#计算文件的MD5值实例
C#计算文件的MD5值实例 MD5 是 Message Digest Algorithm 5(信息摘要算法)的缩写,MD5 一种散列(Hash)技术,广泛用于加密.解密.数据签名和数据完整性校验等方面 ...
- C#加密解密大全
1.方法一 (不可逆加密) public string EncryptPassword(string PasswordString,string PasswordFormat ) { ...
- swift导航栏导航按钮添加多个按钮事件
//导航左边返回按钮 let button1 = UIButton(frame:CGRectMake(0, 0, 18, 18)) button1.setImage(Constant.Image.Na ...
- vue.js+boostrap最佳实践
一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostrap优雅的样式和丰富的组件使得页面开发变 ...
- 无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支
无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支.发布此分支将导致远程存储库中的分支发生非快进更新. 第一次用oschina的git设置完远程仓库后提交出现 ...