java中的字符串问题!

来源:互联网 发布:淘宝联盟app怎么返利 编辑:程序博客网 时间:2024/06/05 03:46

  1.Java内置对字符串的支持;

  所谓的内置支持,即不用像C语言通过char指针实现字符串类型,并且Java的字符串编码是符合Unicode编码标准,这也意味着不用像C++那样通过使用string和wstring类实现与C语言兼容和Unicode标准。Java内部通过String类实现对字符串类型的支持。

  这意味着:我们可以直接对字符串常量调用和String对象同样的方法:

  //可以再"abc"上直接调用String对象的所有方法

  int length="abc".length();

  以及

  String abc=new String("abc");

  int length=abc.length();

  2.Java中的字符串值是constant(常量的)

  这里的意思是字符串类型在创建完成之后,是不能改变其中的值的,从String的成员方法也可以看出没有能改变值的方法接口;并且像"abc",new String("def")中的”abc","def"存放于Java虚拟机中的常量池。

  以下的代码中的"abc"存放于常量池中,因此变量a,ab指向的地址均为常量池中同一个"abc"。

  public class StringTest {

  public static void main(String[] args) {

  String a="abc";

  String ab="abc";

  String abc=new String("abc");

  System.out.println(ab==a);

  System.out.println(a==abc);

  }

  }

  /*程序输出:

  * true

  * false

  * */

  那么动态生成的、可变的字符串又是如何实现的呢?Java中提供StringBuffer和StringBuilder类实现这一需求;Java中字符串连接可以使用“+”操作符; 如:"abc"+"def";这里的内部实现也可以使用StringBuilder类或者StringBuffer类实现;那么StringBuilder和StringBuffer内部又是如何实现呢?是通过字符数组存储字符串。以下是从JDK附带的源码中找到的片段,可以看出StringBuffer内部使用char数组对字符串进行存储,其中的AbstractStringBuilder是StringBuffer的父类:

0 0
原创粉丝点击