JAVA API
Application Programming Interface,应用程序接口,JAVA API是一些预定义的函数。今天学习了String和StringBuffer。
在C语言中,String作为一种基本数据类型,但在JAVA中,String是一种引用数据类型,String是一种类。
String与StringBuffer
1、String
1.1、String类的初始化
1.1.1、使用字符串常量直接初始化
String虽然是一种类,但在声明String类型变量时,却不仅仅只有实例化对象一种方法,一种过程一旦变得频繁,就必定存在简化,String作为一种常用的数据类型,声明它的方法也存在简化,这是我们最初接触的声明方法。
String str="asdasdas";
1.1.2、使用构造方法初始化字符串对象
(1)创建一个空字符串:
String str=new String();
(2)根据指定内容创建字符串
String str=new String("str");
(3)根据指定字符数组创建字符串对象
String str=new String(char[] value);
1.2、String类的常见操作
String类包含的方法非常多,我们可以把String当作字符数组,可以通过索引得到索引对应位置的字符,也可以通过字符,得到对应的索引,可以获得字符串对象的长度。
当然,还包括一些复杂方法,例如判断替换截取分割。String类属于比较重要的API,要通过一些练习逐渐掌握常见操作。
1.2.1、基本操作
String str=new String("STR");
(1)获取字符串长度:str.length();
(2)根据索引获取值:str.charAt(index);
(3)根据值获得索引,需要说明的是,获得的是第一次出现时的索引:str.indexOf(int ch/String str);
(4)与之相反,要获得最后一次出现时的索引,则使用str.lastIndexOf(int ch/String str);
1.2.2、字符串的转换操作
String的构造方法可以直接将字符数组转化为字符串对象,与之对应的,我们也可以将字符串对象转换为字符数组。除此之外,字符的大小写转换,其他数据类型转换为字符串对象等。
(1)字符串转换为字符数组:str.toCharArray();
(2)大小写转换:str.toUpperCase(); 、str.toLowerCase();
(3)基本数据类型转换为String类型:str.valueOf('c'/3/3.0);
1.2.3、字符串的替换和去除空格操作
对用户输入数据进行去除空格和字符串替换处理。
(1)字符串替换:str.replace(oldstr,newstr);
(2)去除空格(只能去除两端的空格,不能去除中间的空格):str.trim();
1.2.4、字符串的判断操作
针对字符串进行判断,是否是空的、是否以某个字符开头或结尾、是否包含某个字符串?
(1)判断是否以指定字符串开头或结尾:str.startsWith("str");、str.endsWith("str");
(2)判断是否包含指定字符串:str.contains("str");
(3)判断是否为空:str.isEmpty();
(4)判断两个字符串是否相等:str.equals(str2);
1.2.5、字符串的截取和分割
(1)字符串的截取:str.substring();
参数为索引,必须有一个起点,如果只有起点,没有终点,将默认终点为最后一个字符。
(2)字符串的分割:str.split();
根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果:
Regex 结果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }
参数:
regex - 定界正则表达式
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
2、StringBuffer
StringBuffer可以称之为字符串缓冲区,虽然String提供了一些方法可以对内容进行更改,但却需要另外声明一个字符串对象,JAVA提供了一个形式上类似于字符数组结构的类,可以改变其本身的内容和长度。
(1)添加操作
1、末尾:str.append(str);
2、指定位置:str.insert(index,str);
(2)删除操作
1、指定位置:str.deleteCharAt(index);
2、指定范围:str.delete(start,end);
(3)修改操作
1、指定位置:str.setCharAt(index);
2、指定范围:str.replace(start,end,str);
3、反转:str.reverse();
3、String类与StringBuffer类的区别
1、String内容长度不可变,StringBuffer可变。
值得注意的是,String类的常用操作并不能改变字符串对象本身,而是重新生成了一个新的字符串对象。
2、String类对象可以使用“+”连接,StringBuffer不行。
3、String类对Object类的equals方法进行了重写,而StringBuffer并没有。
4、总结
String类和StringBuffer各有异同,要根据不同的需求和场景进行选择。
更最要的,是要通过一些有难度的练习增进理解,以便真正掌握。