1. 不变性; 2. 针对常量池的优化; 3. 类的 final 定义。 不变性指的是 String 对象一旦生成,则不能再对它进行改变。String 的这个特性可以泛化成不变 (immutable) 模式,即一个对象的状态在对象被创建之后就不...
分类:
其他好文 时间:
2015-08-27 13:42:48
阅读次数:
122
【JavaSE】day01_ API文档 、 字符串基本操作
--20150820
1.String及其常用API
1)java中String对象为不可变对象,一旦在内存中创建,内容不能发生变化,若要对字符串内容改变,那么就会创建新对象。这样做的目的是可以最大程度的重用相同内容的字符串以减小系统资源的开销。
2)String常量池
当我们通过字面量,常量来初始化一个字...
分类:
编程语言 时间:
2015-08-20 22:35:20
阅读次数:
318
程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据:
(1) 寄存器这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹。(2) 栈(stack)存放基本类型的变量数据和对象的引用,但对象本身不...
分类:
编程语言 时间:
2015-08-20 18:58:54
阅读次数:
119
Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。
Java中的String类型
在JAVA语言中,String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在JAVA中字符串常量都是存在常量池中的...
分类:
编程语言 时间:
2015-08-18 16:24:08
阅读次数:
144
java方法区【名词解析】 --->和java堆一样,方法区是一块所有线程共享的内存区域。 --->保存系统的类信息,比如,类的字段,方法,常量池等。 --->方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出的错误 --->jdk1.6和jdk...
分类:
编程语言 时间:
2015-08-16 19:47:11
阅读次数:
182
java虚拟机中的内部数据结构,虚拟机栈、堆、运行时方法区、运行时常量池...
分类:
编程语言 时间:
2015-08-16 12:23:46
阅读次数:
116
String再熟悉不过了,通常考点在常量池上面。
String和StringBuffer的区别,平时也只留意到一个是final类(String),字符串不可变;一个是普通类(stringbuffer),字符串可变。除此之外还有什么区别呢?下面来看看String和StringBuffer的区别,直接上代码:
String s="abc";
String t=new String("abc");...
分类:
其他好文 时间:
2015-08-16 00:46:45
阅读次数:
97
a.在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。?? 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当该变量退出该作用域后,Java会自...
分类:
其他好文 时间:
2015-08-10 00:35:33
阅读次数:
129
JVM在执行java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途和创建、销毁时间。有些区域随着虚拟机的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范1.7》规定,Java虚拟机所管理的内存分为以下几个区域:
程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存
程序计数器
是一块较小的内存...
分类:
其他好文 时间:
2015-08-09 20:47:15
阅读次数:
132
网上关于String和文章太多了,很多一知半解的作者都在误导大众,本人也是深受其害啊,直到今天看了这篇文章(http://www.wtoutiao.com/a/1023451.html),才拨开层层迷雾,发现JDK6和7的实现还不一样呢,发帖纪录一下。1 一定要注意String s1=new Str...
分类:
其他好文 时间:
2015-08-06 23:59:38
阅读次数:
629