还剩5页未读,继续阅读
文本内容:
Java中的String源码分析众所周知,在Java中,String类是不可变的下面是分享的Java中的String源码分析,欢迎大家参考1如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变区分对象和对象的引用对于Java初学者,对于String是不可变对象总是存有疑惑看下面代码[java]viewplaincopyStrings=ABCabc;System.out.printlns=+s;s=123456;System.out.printlns=+s;打印结果为s=ABCabcs=123456首先创建一个String对象s,然后让s的值为“ABCabc”,然后又让s的值为“123456”从打印结果可以看出,s的值确实改变了那么怎么还说String对象是不可变的呢其实这里存在一个误区s只是一个String对象的引用,并不是对象本身对象在内存中是一块内存区,成员变量越多,这块内存区占的空间越大引用只是一个4字节的数据,里面存放了它所指向的对象的地址,通过这个地址可以访问对象也就是说,s只是一个引用,它指向了一个具体的对象,当s=“123456”;这句代码执行过之后,又创建了一个新的对象“123456”,而引用s重新指向了这个心的对象,原来的对象“ABCabc”还在内存中存在,并没有改变内存结构如下图所示Java和C++的一个不同点是,在Java中不可能直接操作对象本身,所有的对象都由一个引用指向,必须通过这个引用才能访问对象本身,包括获取成员变量的值,改变对象的成员变量,调用对象的方法等而在C++中存在引用,对象和指针三个东西,这三个东西都可以访问对象其实,Java中的引用和C++中的指针在概念上是相似的,他们都是存放的对象在内存中的地址值,只是在Java中,引用丧失了部分灵活性,比如Java中的引用不能像C++中的指针那样进行加减运算为什么String对象是不可变的要理解String的不可变性,首先看一下String类中都有哪些成员变量在JDK
1.6中,String的成员变量有以下几个[java]v...。