java基础类库
一、JAVA常用类
Math类
包含了用于执行基本数学运算的属性和方法。
方法 | 描述 |
---|---|
abs(int i) | 求整数的绝对值 |
max(int i1,int i2) | 求两个整数中最大数 |
round(float f) | 求最靠近f的整数 |
min(int i1,int i2) | 求两个整数中最小数 |
double random() | 产生0~1之间的随机数 |
double floor(double d) | 不大于d的最大整数 |
String类
Java 提供了 String 类来创建和操作字符串。
- 是对象类型不是原始类型.
为不可变对象,一旦被创建,就不能修改它的值.
- 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
- String 是final类,是不可被继承的.
方法 | 描述 |
---|---|
int length() | 长度 |
byte[] getBytes() | String 解码为字节序列 |
boolean equals(Object anObject) | 判断指定对象是否相同 |
int indexOf(String str) | 返回第一次出现的str在此字符串中的索引 |
String substring(int beginIndex, int endIndex) | 字符串截取 |
String[] split(String regex) | 拆分此字符串 |
- 练习
- 获取一个字符串在另一个字符串中出现的次数。
比如:获取“ ab”在 “abkkcadkabkebfkabkskab”
中出现的次数. - 将一个字符串进行反转。将字符串中指定部分进行反转。比如将“abcdefg”反转为”abfedcg”
StringBuffer类
对字符串进行修改。
StringBuffer 线程安全 StringBuilder 线程不安全
方法 | 描述 |
---|---|
strings.append(String s) | 将s追加到strings字符序列。 |
strings.insert(8,“java”) | 将java字符添加到strings字符第八个位置开始,其他的往后移动 |
string.delete(5,8) | 将strings字符从第五个字符删到第八个字符 |
toString() | 转换成String |
setCharAt(int n, char ch) | 将字符序列 n 处的字符用参数 ch 指定的字符替换,n 的值必须是非负的,并且小于当前对象中字符串序列的长度。 |
replace(int n, int m, String str) | 用 str 替换对象中的字符序列,被替换的子字符序列由下标 n 和 m 指定。 |
二、IO
I/O指程序与外部设备或其他计算机进行交互的操作。
流(Stream)是指在计算机的输入输出操作中各部件之间的数据流动。按照数据的传输方向,流可分为输入流与输出流
分类:
- 按操作数据单位不同分为:字符流、字节流。
- 按数据流的流向不同分为:输入流、输出流。
- 按流的角色不同分为:节点流、处理流。
文件(字符)流:
FileInputStream:从一个对象读取出字节数据;
FileOutputStream:将字节数据写入一个对象文件中。
File类
- java.io.File类:文件和目录路径名的抽象表示形式,与平台无关
- File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
- File对象可以作为参数传递给流的构造函数
方法 | 描述 |
---|---|
public File(String pathname) | 创建File类对象,传入完整路径 |
public boolean createNewFile() | 创建新文件 |
public boolean delete() | 删除文件 |
public boolean exists() | 判断文件是否存在 |
public long length() | 返回文件的大小 |
public boolean isDirectory() | 判断给定的路径是否在一个目录 |
public String[] list() | 列出指定目录的全部内容,只是名称 |
public File[] listFiles() | 列出指定目录的全部内容,会有路径 |
public Boolean mkdir() | 创建一个目录 |
public Boolean renameTo(File dest) | 为已有的文件重命名 |
字节输入流
方法 | 功能 |
---|---|
close() | 关闭输入流 |
read() | 从输入流中当前位置读入一个字节的二进制数据,以此数据为低位字节,补足16位的整型量(0~255)后返回,若输入流中当前位置没有数据,则返回-1 |
read(byte b[]) | 从输入流中的当前位置连续读入多个字节保存在数组中,并返回所读取的字节数 |
read(byte b[], int off, int len) | 从输入流中当前位置连续读len长的字节,从数组第off+1个元素位置处开始存放,并返回所读取的字节数 |
void reset() | 将读取位置返回到标记处 |
void mark() | 标记输入流的当前位置 |
字节输出流
方法 | 功能 |
---|---|
void close() | 关闭输出流 |
void flush() | 强制清空缓冲区并执行向外设输出数据 |
void write(int b) | 将参数b的低位字节写入到输出流 |
void write(byte b[]) | 按顺序将数组b[]中的全部字节写入到输出流 |
void write(byte b[], int off, int len) | 按顺序将数组b[]中第off+1个元素开始的len个数据写入到输出流 |
字符输入流
字符输出流
- 练习
自学缓冲流的相关内容然后编写程序,实现文件复制功能;
要求:
- 可以复制TXT文档、音乐、视频文件;
- 100M大小的文件复制的速度不得超过两秒;
三、集合
Java 集合可分为 Collection 和 Map 两种体系
- Collection接口:
1. Set:元素无序、不可重复的集合 —类似高中的“集合”
2. List:元素有序,可重复的集合 —”动态”数组- Map接口:具有映射关系“key-value对”的集合 —类似于高中的“函数” y = f(x) (x1,y1) (x2,y2)
(一)collection
Collection 接口是 List和Set接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 集合。
方法 | 描述 |
---|---|
add(E e) | 确保collection包含指定元素 |
clear() | 移除collection中的所有元素 |
contain() | 如果collextion包含指定元素则返回true |
equals() | 比较此collection与指定对象是否相等 |
hashCode() | 返回此collection的哈希值 |
isEmpty() | 如果此collection不包含元素,则返回true |
remove() | 从此collection中一处指定元素的单个实例 |
size() | 返回此collection中的元素数 |
toArray() | 返回此collection中的所有元素 |
1、List接口
- Java中数组用来存储数据的局限性(为什么?)
- List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。
- List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
- JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。
ArrayList实现类
- ArrayList 是 List 接口的典型实现类
- 本质上,ArrayList是对象引用的一个变长数组
- ArrayList 是线程不安全的,而 Vector 是线程安全的,即使为保证 List 集合线程安全,也不推荐使用Vector
LinkedList实现类
对于频繁的插入或删除元素的操作,使用LinkedList效率较高
- 新增方法:
void addFirst(Object obj)
void addLast(Object obj)
Object getFirst()
Object getLast()
Object removeFirst()
Object removeLast()
2、Set接口
- Set接口是Collection的子接口,set接口没有提供额外的方法
- Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败。
- Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals 方法
HashSet实现类
- HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。
- HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取和查找性能。
HashSet 具有以下特点:
- 不能保证元素的排列顺序
- HashSet 不是线程安全的
- 集合元素可以是 null
- 当向 HashSet 集合中存入一个元素时,HashSet 会调用该对象的 hashCode() 方法来得到该对象的 hashCode 值,然后根据 hashCode 值决定该对象在 HashSet 中的存储位置。
HashSet 集合判断两个元素相等的标准
:两个对象通过 hashCode() 方法比较相等,并且两个对象的 equals() 方法返回值也相等。
LinkedHashSet实现类
- LinkedHashSet 是 HashSet 的子类
- LinkedHashSet 根据元素的 hashCode 值来决定元素的存储位置,但它同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的。
- LinkedHashSet插入性能略低于 HashSet,但在迭代访问 Set 里的全部元素时有很好的性能。
- LinkedHashSet 不允许集合元素重复。
(二)Map
- Map接口的常用实现类:HashMap、TreeMap和Properties。
HashMap是 Map 接口使用频率最高的实现类。
1、HashMap接口
- 允许使用null键和null值,与HashSet一样,不保证映射的顺序。
- HashMap 判断两个 key 相等的标准是:两个 key 通过 equals() 方法返回 true,hashCode 值也相等。
- HashMap 判断两个 value相等的标准是:两个 value 通过 equals() 方法返回 true。
LinkedHashMap
- LinkedHashMap 是 HashMap 的子类
- 与LinkedHashSet类似,LinkedHashMap 可以维护 Map 的迭代顺序:迭代顺序与 Key-Value 对的插入顺序一致
- 练习
- 自学TreeSet内容,并实现功能:从键盘随机输入10个整数保存到List中,并按倒序、从大到小的顺序显示出来
- 自学TreeMap内容,并实现功能:把学生名与考试分数录入到Map中,并按分数显示前三名成绩学员的名字。
- 打印E盘所有文件和文件夹。