[TOC]
必须使用双引号来定义Java字符串,否则会报错
substring
,左闭右开public class FirstSample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = str1.substring(0,3);
System.out.println(str2);
}
}
和js中的substring()很像,不过这种情况js我们大部分用slice
直接写 + 号
public class FirstSample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "World";
System.out.println(str1 + str2);
}
}
返回值时true或者false
一定不能用==来检查两个字符串是否相等
public class FirstSample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "World";
System.out.println(str1.equals(str2));
}
}
charAt()
函数和js类似:
public class FirstSample {
public static void main(String[] args) {
String str1 = "Hello";
System.out.println(str1.charAt(1));
}
}
public class FirstSample {
public static void main(String[] args) {
String str1 = "Hello";
System.out.println(str1.length());
}
}
统计字符串的长度,就可得到某个文章的总长度。还可以过滤其中的某些字符,然后计算长度。由于字符编码,许多完成度不高的程序,对中文的字数统计往往不正确。 codePointAt()
public class FirstSample {
public static void main(String[] args) {
String str1 = "Hello 中国 💪";
//输出H的Unicode码,在0-128区间内,Unicode码和ASCII码相同
System.out.println(str1.codePointAt(0));
//输出“中”的Unicode码
System.out.println(str1.codePointAt(6));
//输出emoji符号“💪”的Unicode码
System.out.println(str1.codePointAt(9));
}
}
public class FirstSample {
public static void main(String[] args) {
String str1 = "Hello";
System.out.println(str1.charAt(0));
}
}
//输出H
public class FirstSample {
public static void main(String[] args) {
String str1 = "Hello";
System.out.println(str1.codePointAt(0));
}
}
//输出H的ASCIIA码
//前三个和代码点预计代码单元有关系,之后再细看
public class FirstSample {
public static void main(String[] args) {
String str1 = "banana";
System.out.println(str1.compareTo("apple")); //banana大于apple,返回一个正数
System.out.println(str1.compareTo("car")); //banana小于car,返回一个负数
System.out.println(str1.compareTo("banana")); //相同字符串,返回0
}
}
有点类似于C语言的strcmp
函数,C语言的strcmp(str1, str2)
,str1 > str2 返回正, str1 < str2 返回负,str1 = str2 返回0
可以把java中的str1.compareTo(str2)
public class FirstSample {
public static void main(String[] args) {
String str1 = "banana";
System.out.println(str1.endsWith("na")); //以na结尾,返回true
System.out.println(str1.endsWith("ba")); //否则,返回false
}
}
如果字符串与other相等,返回true,否则返回false
忽略大小写,如果相等返回true,否咋返回false
返回与字符串str或代码点cp匹配的第一个字串开始的位置。这个位置从索引0或fromIndex开始计算。如果在原始串中不存在str,返回-1
返回与字符串str和代码点匹配的最后字串的开始位置。这个位置从原始字符串的末尾或fromIndex开始计算
返回与字符串的长度
返回一个新字符串,这个新字符串中所有的oldString都会被newString所代替,其中可以用String和StringBuilder作为CharSequence的参数
返回一个新字符串,这个字符串将所有的大写字母变为小写字母
返回一个新字符串,这个字符串将所有的小写字母变为大写字母
返回一个新字符串,这个新字符串删除了原始字符串开头和结尾的空格
有些时候,需要由较短的字符串构建字符串。比如,按键或者来自文件的单词。采用+连接效率就比较低。这时候我们就需要用StringBuilder对象
如下所示:
public class FirstSample {
public static void main(String[] args) {
StringBuilder builder = new StringBuilder();
builder.append("Hello");
builder.append("Java");
System.out.println(builder.toString());
}
}
StringBuilder的常用API列举如下:
StringBuilder() 构建一个空的字符串构建器
int length() 返回构建器或缓冲器的代码单元数量
StringBuilder append(char c) 追加一个代码单元并返回this
StringBuilder appendCodePoint(int cp) 追加一个代码点,将其转换为一个或两个代码单元并返回this
void setCharAt(int i, char c) 将第i个代码单元设置为c
StringBuilder insert(int offset, char c) 在offset位置插入一个代码单元并返回this
StringBuilder delete(int startIndex, int endIndex) 删除偏移量从startIndex到endIndex-1的代码单元并返回this
String toString() 返回一个与构建器内容相同的字符串