Java字符串
字符串类型是用双引号括起来的,而char类型是用单引号。这点和C是一样的。
char c = 'a';
String str = "abc";
PHP程序员在学习java的时候一个常见错误就是用单引号将字符串括起来。
String str = "hello java";
其实上述的代码与下列代码是一样的:
String str = new String(new char[] {'h', 'e', 'l', 'l', 'o', ' ', 'j', 'a', 'v', 'a'});
因为字符串实在太常用了,所以就有了字面量的表示方法。
子串
String类中的substring方法可以从一个较大的字符串中提取一个子串。它的用法和php中的substr函数有些区别。主要区别在于第二个参数,substring的第二个参数表示某尾的位置,并且不能使用负数。
所以下面在Java中是有问题的:
String str = "language";
String s2 = str.substring(3,2); // 错误,后面的数必须比前面的大
String s3 = str.substring(0,-1); // 错误,不可以为负数
下面看在java中该方法是如何使用的
- 第一个参数表示截取的开始位置,是必须的
- 第二个桉树表示截取的某尾位置,不是必须的。如果没有,则从开头位置截取到最后。
String str = "PHP JAVA C++";
String s1 = str.substring(4); // JAVA C++
String s2 = str.substring(4,8); // JAVA
拼接
和js一样,java可以使用“+”操作符来连接两个字符串.
String str = "hello" + " world";
和js一样,当一个字符串与一个非字符串进行拼接时,会返回一个字符串类型。
String name = "JAMES";
int age = 36;
String nameAge = name + age; // JAMES36
除了使用“+”操作符外,还可以使用静态方法join来将多个字符串用一个定界符来连接。
System.out.println(String.join("", "php", "java", "c++"));
//phpjavac++
System.out.println(String.join("/", "php", "java", "c++"));
//php/java/c++
空串与null
空字符串和null不相同。检测空串的方法有两种:
if (str.equals("")) {}
// or
if (str.length() == 0) {}
而检测一个字符串是否为null,可以如下
if (str == null) {}
有时候需要检查一个字符串既不为null也不为空
if (str != null && str.length() > 0) {}
需要注意的是,必须先检测不为null,因为在一个null值上调用方法,会出现错误。
码点与代码单元
常用的字符使用一个代码单元表示,而辅助字符则需要两个代码单元表示。所以绝大情况下,一个字符串的代码单元数量等于码点数量。可以将码点看成字符串中的字符,字符串中码点数量等于字符数量。如果字符串中含辅助字符的话,那么代码单元的数量就比码点数要大。
String str = "𝕆 is the set of octonions";
int n = str.length(); // 代码单元数量 26
int cp = str.codePointCount(0, n); // 字符数(码点数)25
因为字符串中含一个辅助字符𝕆,所以该字符串的码点数比代码单元数少1。
调用s.charAt(n)将返回位置n的代码单元,n介于0~s.length()-1之间,例如:
char i = str.charAt(3); // i
char last = str.charAt(n-1); // s