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中常用方法

  1. 获取
  • int length():获取长度。
  • char charAt(int index):根据位置获取位置上某个字符。
  • int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
  • int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。
  • int lastIndexOf(int ch) :获取ch最后的的索引
  1. 判断
  • 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();判断内容是否相同,并忽略大小写。
  1. 转换
  • 将字符数组转成字符串。
    • 构造函数: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)
  1. 替换
  • String replace(oldchar,newchar);
  1. 切割
  • String[] split(regex);
  1. 子串。获取字符串中的一部分
  • String substring(begin);
  • String substring(begin,end);
  1. 转换,去除空格,比较。
  • 将字符串转成大写或则小写。
    • String toUpperCase();
    • String toLowerCase();
  • String trim();将字符串两端的多个空格去除
  • int compareTo(string);对两个字符串进行自然顺序的比较。

3. StringBuffer 与 StringBuilder

StringBuffer是字符串缓冲区。是一个容器。
特点:

  • 长度是可变化的。
  • 可以字节操作多个数据类型
  • 最终会通过toString方法变成字符串
  1. 存储
  • StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
  • StringBuffer insert(index,数据):可以将数据插入到指定index位置。
  1. 删除
  • StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
  • StringBuffer deleteCharAt(index):删除指定位置的字符。
  1. 获取
  • char charAt(int index)
  • int indexOf(String str)
  • int lastIndexOf(String str)
  • int length()
  • String substring(int start, int end)
  1. 修改
  • StringBuffer replace(start,end,string);
  • void setCharAt(int index, char ch) ;
  1. 反转
  • StringBuffer reverse();

JDK1.5 版本之后出现了StringBuilder.

区别:

  1. StringBuffer是线程同步,效率低。StringBuilder是线程不同步,效率高。
  2. 都是一个缓存区,底层都维护了一可变的字符序列,而String的底层是一个final修饰的不可变的字符序列
  3. 以后开发,建议使用StringBuilder原因
  • 提高效率
  • 简化书写
  • 提高安全性