关于string内容
时间:2011-10-19
来源:互联网
public static void main(String[]args){
System.out.println("\"hello\"equals\"hello\"-->"+("two".equals("two")));
}
}谁能详细讲解一下语句中string匿名对象啊,详细的给高分!!!
作者: xfsunxiaolong 发布时间: 2011-10-19
作者: ioe_gaoyong 发布时间: 2011-10-19
一个经典的例子:String str = new String("abc");
以上的语句中其实系统创建了2个String的对象,一个就是楼主所说的匿名对象"abc"喽,还有一个就是一般对象的创建方法,即使用new关键字来显式的创建一个对象,这里str只是引用的new出来的那个对象,而那个直接在heap中创建的匿名对象则在String池中,并不是str所引用的,但是以后如果有String str2 = "abc";的语句,则是直接使用这个String池中的对象,不必重新创建(这里注意一下:如果是以String xxx = “xxxxxxxx”之类的申明,只要所申明的字符串的内容一样,则不会再heap中重新开辟空间,而是多个引用都引用一个heap中的那个String对象)
额……说了这么多,我语言表达能力不是很好哈,希望楼主能够明白我到底在说些什么……>_<
作者: Listening_music 发布时间: 2011-10-19
两个引号之间 是完全输出 \为后面的" 是说明"也是打印内容
字符串equals比较的是内容
这个跟匿名对象有啥关系
经典例子
Stirng str="abc";
String str1=new String("abc");
str==str1 // FALSE 两个对象的内存地址不一样 ~~ 这才是匿名对象
作者: nizhicheng 发布时间: 2011-10-19
两个"two" 这里两个String
最后+了 拼接后又是一个String
作者: kiss601459202 发布时间: 2011-10-19
"hello"equals"hello"-->true
作者: xiongyu2006 发布时间: 2011-10-19
2.String str2 = "abc"
你所说的匿名字符串是不是后者
给你说下这两种定义在内存中的分布
1. 首先在栈空间有一个引用str
关键是赋值 号右边, new String(""); 看原代码会发现,这括号里面的字符串,实现上是一个char【】数组
并不是有些人说的 “在字符串池中的"abc"”
new String("abc") 执行完成后,会在堆空间中有一块区域 : 是char类型的数组:它里面放着 a b c
而string 自己的内存空间中有一个value的成员变量指向了char类型数组的空间
内存指向为: str -- 指向string 对象(string 内存中有value成员变量 ---指向char[] 数组的内存区域)
2.而第二种情况 就会简单一些:
栈空间str2 ,字符串池中 存放着 "abc" 对象 str2指向这块区域
作者: s394500839 发布时间: 2011-10-19
看完了你就都明白了
作者: mengxiangyue 发布时间: 2011-10-19
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28