今天我们来聊聊字符串。
字符串,在Java中一个最接近与8大数据类型的存在。甚至于由于它太好用了,以至于在编写代码的时候都快忘了有个叫char的基本数据类型了。我记得,当年刚能独立写一些小型代码的时候,被老师问到8大基本的数据类型有哪些,便脱口而出了String,int, boolean……(当然这个回到是错误的)
为什么会出现这种情况呢,因为String有一个非常特殊的功能——可以不用new直接新建。这种能力与基本数据类型的能力比较相像,之前几篇我提过int的使用,简单来说就是int i=3;。再看看String的方式String s="abc";,它们都没有通过new就直接赋值了。
说道String的这个功能,就让我想起了另外一个测试题(如果是初学者,可以选择性跳过)——在Java中,为什么测量一个字符串长度的时候用的.length(),而测量一个数组的长度直接用 .length 就可以了。也就是前者为什么会多一个括号,而后者没有。我不知道你心中有没有什么答案,反正我当年脱口而出的回答就是,这是API规定的,至于API为什么这么规定,这可能是编写API的那个人的习惯吧。
看到这儿你肯定已经知道这并不是习惯使然,而是一种必然。而真正的原因是,数组的就像一个有了规定大小的座位的教室一样,自然的,我们会对了解教室里面的座位总个数,座位号有需求。因此,对数组来说,长度就是它内在的一个属性。相较于数组,字符串更倾向于显示内容,而且纵观Java的API,String类是没有属性的,像得到它的hashcod,length这些结果都是用方法去得到的。而在Java中,调用方法时就会有有括号出现,于是就出现了字符串得到长度的大小时用.length(),而数组的长度是用length。
今天我们初步认识了一下String,聊到了String的性质——它是个类,也聊到了它没有属性只有方法这个特性。希望这对你初识String有帮助。
清单