java进阶--常用API
一、Scanner 类
1、位于Java.util包中
2、作用:用于接收键盘录入数据
3、格式:Scanner sc = new Scanner(System.in)
4、常用方法:hasNextXxx():用于比较输入类型是否相匹配
nextXxx():用于获取数据
二、String类
1、位于Java.lang包中
2、字符串:就是多个字符组成的一串数据,也可以看成一个字符数组;
API:A:字符串面值 ”abc“,也可以看成一个字符串对象;
B:字符串是常量,一旦被赋值,不能被改变
3、 构造方法: public String () 空参构造
public String (byte [] bytes) --把字节数组转成字符串
public String (char [] chars) --把字符数组转成字符串
public String (byte [] bytes , int index ,int length) --把字节数组的一部分转成字符串
public String (char [] chars , int index,int count) --把字符数组的一部分转成字符串
public String (String original) --把字符串常量转成字符串
4、常用方法:分成三大块
A:Striing类的判断功能
Boolean equals(Obiect obj)--比较字符串中内容是否相等(区分大小写)
Boolean equalsIngoreCase(String str)--比较字符串内容是否相等(不区分大小写)
boolean contains(String str) --判断大的字符串中是否包含小的字符串
boolean startsWith(String str) --判断字符串是否以指定字符串开头
boolean endsWith(String str)--判断字符串是否以指定字符串结尾
Boolean isEmpty() --判断字符串是否为空(内容为空)
注:String str = "";--表示为内容为空即字符串为空
String str = null;--表示对象为空,无法调用方法。
B:String类的获取功能
int length() --获取字符串的长度;
char charAt(int index) --获取指定索引处的字符
int indexOf(int ch) --返回指定字符在此字符串中第一次出现位置的索引
int indexOf(String str) --返回指定字符串在此字符串中第一次出现位置的索引(首字符)
int indexOf(int ch , int formIndex) --返回指定字符在此字符串中指定位置后首次出现的位置的索引
int indexOf(String str , int formIndex) --返回指定字符串在此字符串中指定位置后首次出现的位置的索引
String substring(int start) --从指定位置开始截取字符串
String substring(int start , int end)--截取指定开始位置到指定结束位置的字符串(包含开始位置的字符,不包含结束位置的字符)
C:String类的转换功能
byte [] getBytes() -- 把字符串转成字节数组
char[] toCharArray() --把字符串转成字符数组
static String valueof( char [] chs)--把字符数组转成字符串
static String valueof( int i)--把int型数据转成字符串
注:此方法可以将任意类型数据转成字符串
String toLowCase() --将字符串全部转成小写
String toUpperCase() --将字符串全部转成大写
String concat(String str)--拼接两字符串
D:String类的其他功能
替换功能:
String replace(char old , char new) -- 新的字符替换字符串中所有指定字符
String replace(String old, String new) --新的字符串替换字符串中指定的字符串
去除前后两端空格
String trim()
按字典顺序比较两个字符串
int compareTo(String str) 区分大小写
int compareToIngoreCase(String str) 不区分大小写
注:此处比较逻辑为:字符串会自动转成字符数组,获取两个字符数组长度,取最小者作为循环比较次数,从第一位开始比较若遇到第一个字符不同即输出前字符的ascall码值 - 后者字符的ascall码值的差数,若没有不同,即输出前字长度 - 后者长度之差。
三、StringBuffer类
1、位于Java.lang包中
2、StringBuffer是线程安全的可变字符串
格式:StringBuffer sb = new StringBuffer(); --相当于一个有一定容量的水杯
3、String和StringBuffer类的区别
A:后者长度和内容可变,前者不可变
B:使用后者做字符串拼接,可以不浪费资源
4、构造方法
public StringBuffer() --无参构造 该容量为默认容量16个字符
public StringBuffer(int capacity) --指定容量的字符串缓冲区对象,该容量取当前传入的大小
public StringBuffer(String str) --指定字符串内容的字符串缓冲区对象,该容量取当前字符串长度和默认容量之和
5、常用方法
public int length() --返回字符串的长度
public int capacity() --返回当前字符串缓冲区对象的容量大小
StringBuffer类的添加功能
public StringBuffer append(String str) --该方法可以将任意类型的数据添加到字符串缓冲区里,并返回字符串缓冲区本身
public StringBuffer insert(int offest, String str)--该方法在指定位置将任意类型的数据添加到字符串缓冲区里,并返回字符串缓冲区本身
注:第一个方法是在末尾依次添加,第二个方法是指定位置添加,原有数据后移
StringBuffer类的删除功能
public StringBuffer deleteCharAt(int index) --删除指定位置的字符,并返回字符串缓冲区本身
public StringBufffer delete(int start,int end) --删除从指定位置开始到指定位置结束的字符,并返回字符串缓冲区本身
注:sb.delet(0,sb.length()) --清空字符串缓冲区内容
StringBuffer类的替换功能
public StringBuffer replace(int start , int end ,String str) --从指定开始到结束的字符串用str替换
StringBuffer类的反转功能
public StringBuffer reverse()
StringBuffer类的截取功能
public String substring(int start)
pulbic String substring(int start , int end)
注:该方法返回的是String类型,字符串缓冲区本身不改变
String类和StringBuffer类的转换
String ---------------StringBuffer
方法1:通过StrngBuffer的构造方法
StringBuffer sb = new StringBuffer(String str);
方法2:通过append()方法
sb.append(String str);
StringBuffer----------------String
方法1:通过构造方法
String s = new String(StringBuffer sb);
方法2:通过toString()方法 --任何对象都可以通过此方法转换成字符串
String s = sb.toString();
四、String、StringBuffer、和StringBuilder
1、String、StringBuffer、和StringBuilder的区别
A:String是内容长度都不可变的,StringBuffer和StringBuilder都是可变的
B:StringBuffer是同步的,数据安全,效率低,StringBuilder是不同步的,数据不安全,效率高
这些都是相对于多线程来说的,一般单线程用StringBuilder比较多。
2、StringBuffer 和数组的区别
二者都可以看作是一个容器, 装其他数据;
StringBuffer的数据最终是一个字符串数据,而数组可以放置多种数据,但必须是同一种数据类型的。
3、Sting和StringBuffer作为形式参数
注意:String作为形成传递,效果跟基本类型作为参数一样。
实例实现
1、数组拼接
2、字符串反转
3、判断字符串是否对称
分析:只需要比较第一个和最后一个,第二个和倒数第二个,依次比较长度的1/2次;
StringBuffer做法,将字符串添加到StringBuffer缓冲区,然后反转,再转成字符串,使用equals()方法比较;