API
概念:
API(Application Programming Interface)应用程序编程接口
解释:
java中的API指的是sun公司为我们提供的一套标准类库,例如String或者集合类或者Random等等都是sun公司给我们提供的类。我们可以通过创建对象或者其他方式进行使用。
(注意和那个我们看的API文档进行区分,我们看的那个是个文档,是对API的一个说明书,我们要使用sun公司提供的类时,就可以去API文档查)
Scanner类的一些需要注意的地方
String next()方法:获取键盘录入的字符串类型。空格,和tab是结束的标记。也就是说,当读取到空格或者tab键的时候就会结束
String nextInt()方法:获取键盘录入的整数类型。
String nextLine()方法:获取键盘录入的字符串类型,回车换行是结束,读到换行就会结束
nextInt()方法和nextLine()方法的冲突:
这两个方法不能同时使用,因为当录完nextInt()时,需要按回车才能进行nextLine()方法的录取,而int类型的变量接收不了回车换行,所以当进行nextLine()录取时,就会首先读到回车换行,而读到回车换行就代表着nextLine()录入的结束,所以nextInt()和nextLine()不能一起用
String字符串的创建的一些细节
首先是字符串对象,java中所有被双引号引起来的都是字符串对象
1.字符串不可变,一旦创建出来就不会被改变,创建出来后会存入到字符串常量区。当下次用到字符串对象时,会先去字符串常量区去寻找有没有该对象。当没有该对象时,就会创建对象存入字符串常量区,当该变量已经存在字符串常量区时,可以直接使用(共享)。(在jdk1.7后字符串常量区由方法区转换到了堆内存。)
2.字符串对象一旦被创建就不能改变,每当字符串内容发生改变时一定是创建了一个新的字符串。(字符串对象指的是被双引号引起来的东西,并不是变量名,那个变量名只是对字符串对象的引用而已。)
3.字符串是由一个个字符所组成的这里涉及到有一点点java常量优化机制的内容。(java常量优化机制)
4.字符串是有索引的,第一个字母的索引是0。
String类的API
成员方法:
(常用方法)
String trim() 去除字符串首的空白和尾的空白。
1.比较相关的方法
boolean equals(Object obj)比较两个字符串是否相等。
boolean equalsIgnoreCase(String str)比较两个字符串是否相等忽略大小写。
2.获取相关的方法
char charAt(int index)根据索引获取到字符串中的字符
3.转换相关的方法
String toUpperCase()将字符串中的小写字符转换为大写字符
String toLowerCase()将字符串中的大写字符转换为小写字符
char [] toCharArray(String str)将字符串转换为字符数组
4.截取相关的方法
String subString(int index)从当前索引截取至最后一个字符
String subString(int beginIndex,int lastindex)从beginIndex索引截取至lastindex索引(包前不包后)
5.替换相关的方法
String replace(String oldString,String newString)将字符串中的oldString替换为newString,并返回新的字符串
6.切割相关的方法
String [] split(String regex)从指定位置进行切割,切割后的字符串将变成字符串数组。(切割后,regex这个参数字符串,将会从原字符串中剔除)
7.获取字符串的长度
int length();获取指定字符串的长度。
8.判断以什么字符串开始和结尾的方法
boolean startsWith(String str)判断是否是以str字符串开头的
boolean endsWith(String str)判断是否是以str字符串结尾的
构造方法:(创建字符串方式)常用
1.通过一个字节数组创建一个字符串对象(两种方法)
String str=new Strring(byte [] bytes);
String str=new Strring(byte [] bytes,Charset charset);//这种可以指定字符集
2.通过一个空参构造创建一个空字符串。
String str=new String();
3.通过一个字符数组创建一个字符串
char [] arr={‘a’,‘b’,‘c’};
String str=new String(arr);
4.通过有参构造创建一个字符串
String str=new String(“abc”);
5.直接通过双引号创建一个字符串对象
String str=“abc”;
注意第四种和第五种在创建时的一些问题:
第四种在创建对象调用构造方法时传入了一个字符串对象,这个字符串对象也会到字符串常量区去寻找。第五种是直接通过双引号创建了一个对象,所以也会先到字符串常量区去寻找有没有该对象。但是第四种由于是通过new关键字创建的对象所以会在堆内存开辟一块内存空间。(理解:所以在这个地方等于有两个对象。)
StringBuilder(字符串缓冲区)(字符串容器)
字符串缓存区是一个可变的字符序列,作用:提高字符串的拼接效率()
StringBuilder的API
构造方法
1.空参构造
StringBuilder stringBuilder =new StringBuilder();
2.创建一个带有字符串的StringBuilder的对象
StringBuilder stringBuilder =new StringBuilder(String str);
成员方法
StringBuilder append(任意类型)调用这个方法会将想要添加的数据添加在StringBuilder的末尾,同时会返回StringBuilder对象本身。
StringBuilder reverse()调用此方法会将StringBuilder中的字符数据进行反转,并返回对象本身。
String toString() : 通过调用toString()就可以实现把StringBuilder转换为String。
这里再提一下StringBuffer和StringBuilder的区别:
StringBuffer因为其所有的公开方法都是synchronized修饰的,所以是线程安全的,但是效率低。
SringBuider的方法并没有用synchronized修饰,效率更高但安全性低,
所以在单线程时推荐使用StringBuilder,在多线程时推荐使用StringBuffer