String,即字符串类型
java里面没有内置的字符串类型,而是在标准的类库里面定义了一个预定一类
字符串都是用双引号括起来的
比如 str = “a”; 这代表的是一个名叫 str 的字符串,而 str = ‘a’ ,则代表一个字符,即char 类型,而不是String,在java里面,字符串类型不可以看成字符类型的一个数组,这点雨C++是有区别的。字符串类型,一定要用双引号括起来
子串
Strin类的substring方法可以从一个较大的字符串提取出一个子串:
String str = "Hello";
String s = str.substring(0,3);
这里, s = “Hel”;substring的第二个参数是不想复制的第一个位置,即只提取了str的前三个字符——Hel;
拼接
我们可以用“+”,直接将两个字符拼接起来:
String str1 = "Hello";
String str2 = "World!";
String str3 = str1 + " " + str2; //中间加了一个空格,让Hello 与World!分开
在这里,str3 = “Hello World!”;
当一个字符串与一个非字符串相加时:
int i = 5;
String str = "value =";
String s = str + i;
这时, s = “value =5”;(在java中任何字符串都可以转换为字符串)
不可变字符串
String 类没有提供可以修改字符串的方法,如果希望将字符串的内容修改,如:吧str 的 “Hello"修改为 “Help”,这时我们不能直接修改最后的 “lo” 改为 “p”,而是可以利用前面的substring方法,和”+"来实现:
str = substring(0,3) + "p";
这样我们就实现了字符串的修改
由于字符串的不可修改性,所以java 文档中将String类对象称为不可修改的字符串,即"Hello"永远都是"Hello",不能修改里面的任一个字符
这样做编译器就可以让字符串共享,因为这项字符串都存放在公共的存储池中,字符串变量指向存储池里面相应的位置,当你重新赋值时,并不是修改了这个字符串,而是相当于修改了该变量的指针,指向了你赋值时的新字符串
判断字符串是否相等
在java里面,判断字符串是否相等,可以使用equals()方法,而不应该用 “==”;因为“==”比较的是两个字符串的值是否相等,且比较两个字符串的地址是否相同,只有地址与值都相同时,才返回true;而equals只是单纯的比较二者的值,当值相等时,就返回true;即str.equals(s);
空串与NULL串
空串 “” 是指长度为0的字符串,可应利用if(str.length() == 0) 或者if(str.length("")) 来检测一个字符串是否为空串,空串是java的一个对象,有自己的长度(0)与内容(空),不过String变量还可以存放一个特殊的值,那就是所谓的 null,null 标识目前没有任何对象与该变量关联检测 null时,可以直接用"=="检测;即if(str == null)
String API
java中的String类包含50多个方法,并且大多数都有用,下面有一些常用的方法:
方法 | 作用描述 | 参数类型 |
---|---|---|
char charAt(int index) | 返回底层的代码单元 | index:索引值 |
int compareTo(String other) | 按照字典顺序,如果字符串位于other之后,返回一个负数,之前,返回一个正数,若两字符串相等,返回0 | other:要比较的字符串 |
boolean equals(Object other) | 如果字符串与other相等,则返回true,否则返回false | other:要比较的字符串 |
boolean equalsIgnoreCase(String other) | 如果字符串与other想的(忽略大小写),返回true | other:要比较的字符串 |
boolean startsWith(String other) | 如果字符串以other开头或者结尾,返回true | other:要比较的字符串 |
boolean endsWith(String other) | ||
int length() | 返回字符串长度 | 无参数 |
int indexof(String str) | 返回与字符串str或者代码点cp相匹配的最后一个子串开始的位置,这个位置从原始串尾端或fromIndex开始计算 | str:需要匹配的字符串;cp:需要匹配的代码点;fromIndex:开始计算的索引 |
int indexof(String str,int fromIndex) | ||
int indexof(int cp) | ||
int indexof(int cp,int fromIndex) | ||
String substring(int beginIndex) | 返回一个新字符串,这个字符串从原始字符串的beginIndex开始到endIndex - 1结束 | beginIndex:开始截取的索引;endIndex:结束截取的索引(不包含endIndex) |
String substring(int beginIndex,int endIndex) | ||
String trim() | 返回一个新字符串,这个字符串删除了原始字符串的头部和尾部的空格 | 无参数 |