什么是字符串

Java中的字符串(string)class String的object,可以用来储存一系列字符(如a、b、c、$等)。可以回忆一下之前的内容,想一想Java的class是如何定义其所有object的数据/属性(在Java中称为field)和行为(在Java中称为method)的。

声明和创建字符串

你可以将一个变量定义为String类型。注意Java中class名都是首字母大写的,而所有的诸如intdoubleboolean等基本类型则以小写开头。这是区分基本数据类型和class的简便方法。

String greeting;
System.out.println(greeting);

以上代码声明了一个名为greeting的对象变量,其值暂时为null,表示还没有指向任何一个实际的object。因此这一语句System.out.println(greeting);将输出null。对象变量通过引用(reference)来指向内存中实际的object,这和微信通讯录让你找到想找的人异曲同工。greetingnull,因为实际的String object还没有被创建。

在Java中有两种方式可以创建class String的object。你可以使用new操作符后跟空格,再加上class名以及括号()中用来初始化object的值。这是Java中创建新object的标准办法。

greeting = new String("Hello");

Java中你还可以使用字符串文本(string literal),即双引号"里的一串字符,来创立String object。

greeting = "Hello";

在以上两种情况下,class String的一个object都会在内存中创立,变量greeting的值则会被设置为指向该object的引用。现在既然greeting已经指向了实际的object,我们可以看看是哪个class创建了它。

String greeting = "Hello";
Class currClass = greeting.getClass();
System.out.println(currClass);
Class parentClass = currClass.getSuperclass();
System.out.println(parentClass);

上述代码会先打印出class java.lang.String,因为greeting是由class String所创建的,class java.lang.String是其全名而多出的java.langString所处的包(package)名。Java的每个class都在某个包里,而像String这样的标准class则位于java.lang里。Java的每个object里都有创建它的class的引用,此外每个class还有对其parent class的引用。在Java中,每个class只能有一个parent,并能从parent处继承object的field和method。上述代码之后打印出的是class java.lang.Object,因为ObjectString的parent。所有Java class的祖先归根结底都可以追溯到Object上。


陈 欣

AADPS创始人

发表评论