摘要: String s = new String("xyz") 创建了几个String Object? 两个! "xyz "作为一个常量字符串首先被创建,它被保存在“串池”中。所谓串池,简单讲就是从程序运行开始,你创建的所有常量字符串被统一保存的地方。在串池中已经存在 "xyz "这个串的情况下,如果你需要一个内容相同的串,你不需要再次创建一个,而是直接用这个就可以,这样当然是为了节省空间。注意,一个字符串是无法被修改的,所以在程序的不同地方用不同变量引用同一个常量串没有任何危险,因为你只能读取它而不能修改它。 当然,使用new Strin 阅读全文
posted @ 2011-03-11 21:09 猪特曼 阅读(1428) 评论(0) 推荐(0) 编辑
摘要: 在讲到String的一些特殊情况时,总会提到String Pool或者Constant Pool,但是我想很多人都不太 明白Constant Pool到底是个怎么样的东西,运行的时候存储在哪里,所以在这里先说一下Constant Pool的内容. String Pool是对应于在Constant Pool中存储String常量的区域.习惯称为String Pool,也有人称为 String Constant Pool.好像没有正式的命名?? 在java编译好的class文件中,有个区域称为Constant Pool,他是一个由数组组成的表,类型 为cp_info constant_pool[] 阅读全文
posted @ 2011-03-11 21:09 猪特曼 阅读(1228) 评论(0) 推荐(0) 编辑
摘要: Property的解释如下:Property一般是指一对get,set方法,可以称为是类的成员属性,它大部分时候用来对类的成员变量进行读取或赋值。Attributes的解释如下:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。说的通俗些Attribute是类,不过是一类比较特殊的类,Attribute必须写在一对方括号中,用来处理net中多种问题:序列化 阅读全文
posted @ 2011-03-11 20:51 猪特曼 阅读(772) 评论(0) 推荐(0) 编辑
摘要: 当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待。但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作都是有效即时的,也即保证其操作的原子性。lock是C#中最常用的同步方式,格式为lock(objectA){codeB}lock(objectA){codeB} 看似简单,实际上有三个意思,这对于适当地使用它至关重要:1. objectA被lock了吗?没有则由我来lock,否则一直等待,直至objectA被释2. lock以后在执行codeB的期间其他 阅读全文
posted @ 2011-03-11 18:39 猪特曼 阅读(503) 评论(0) 推荐(0) 编辑