1. API
1.1 什么API
- API全名:Application Programming Interface,API是应用程序编程接口,指一些预先定义好的类。
- 例如我们想要一台电脑,并不需要自己生产每个零件,只要从各个厂商买到组装电脑的零件就可以,然后根据说明书学会使用,将零件安装在一起就得到了电脑。电脑就像是我们要的程序,而零件就是API,说明书就是帮助文档。
- Java API就是Sun公司提供给我们使用的类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用。
- 我们可以通过查帮助文档来了解Java提供的API如何使用
1.2 Java中常用API
- String类
- 对字符串进行操作通常我们使用String类,相关的还有StringBuffer和StringBuilder
- 集合类
- 集合是一种容器,用来存取对象(Collection、Map List Set) 实现类(HashMap,HashTable,treeMap ArrayList LinkedList Vector HashSet,treeSet)
- 包装类
- Java定义了一组包装类对基本数据类型进行了包装(Integer、Double、Boolean)
- 时间对象
- Java定义了一些类方便用户对时间、日期进行处理(Date、Calendar)
- 系统类
- Java定义了一些类针对系统进行操作(System、Runtime)
- IO流
- Java定义了一些类对数据传输进行了封装(输入输出流、File文件对象)
- Socket
- Java定义了一些类方便用户进行网络编程(Socket(tcp)、DatagramSocket(udp))
2. String对象
2.1 String对象的存储
- 字符串是常量,一旦创建不能被修改(不可变字符序列)
- 字符串在程序中经常使用,虚拟机会将其缓存在String池中。
- 了解 String s = “abc” 和 String s = new String(“abc”) 的区别。String s=”abc” s指向的对象在堆中的常量池中而 new String(“abc”)指向的堆中的一个新地址
2.2 String中常用方法
- 获取
- int length():获取长度。
- char charAt(int index):根据位置获取位置上某个字符。
- int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
- int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。
- int lastIndexOf(int ch) :获取ch最后的的索引
- 判断
- boolean contains(str):字符串中是否包含某一个子串。
- indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。if(str.indexOf(“aa”)!=-1)而且该方法即可以判断,有可以获取出现的位置。
- boolean isEmpty(): 原理就是判断长度是否为0.
- boolean startsWith(str);字符串是否是以指定内容开头。
- boolean endsWith(str);字符串是否是以指定内容结尾。
- boolean equals(str);判断字符串内容是否相同。复写了Object类中的equals方法。
- boolean equalsIgnoreCase();判断内容是否相同,并忽略大小写。
- 转换
- 将字符数组转成字符串。
- 构造函数:String(char[])
- String(char[],offset,count):将字符数组中的一部分转成字符串。
- 静态方法:
- static String copyValueOf(char[]);
- static String copyValueOf(char[] data, int offset, int count)
- static String valueOf(char[]):
- char[] toCharArray():将字符串转成字符数组。
- 将字节数组转成字符串。
- String(byte[])
- String(byte[],offset,count):将字节数组中的一部分转成字符串
- byte[] getBytes():将字符串转成字节数组。
- 将基本数据类型转成字符串。
- static String valueOf(int)
- static String valueOf(double)
- 替换
- String replace(oldchar,newchar);
- 切割
- String[] split(regex);
- 子串。获取字符串中的一部分
- String substring(begin);
- String substring(begin,end);
- 转换,去除空格,比较。
- 将字符串转成大写或则小写。
- String toUpperCase();
- String toLowerCase();
- String trim();将字符串两端的多个空格去除
- int compareTo(string);对两个字符串进行自然顺序的比较。
3. StringBuffer 与 StringBuilder
StringBuffer是字符串缓冲区。是一个容器。
特点:
- 长度是可变化的。
- 可以字节操作多个数据类型
- 最终会通过toString方法变成字符串
- 存储
- StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
- StringBuffer insert(index,数据):可以将数据插入到指定index位置。
- 删除
- StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
- StringBuffer deleteCharAt(index):删除指定位置的字符。
- 获取
- char charAt(int index)
- int indexOf(String str)
- int lastIndexOf(String str)
- int length()
- String substring(int start, int end)
- 修改
- StringBuffer replace(start,end,string);
- void setCharAt(int index, char ch) ;
- 反转
- StringBuffer reverse();
JDK1.5 版本之后出现了StringBuilder.
区别:
- StringBuffer是线程同步,效率低。StringBuilder是线程不同步,效率高。
- 都是一个缓存区,底层都维护了一可变的字符序列,而String的底层是一个final修饰的不可变的字符序列
- 以后开发,建议使用StringBuilder原因
- 提高效率
- 简化书写
- 提高安全性