接口 interface
interface(接口名){代码……}
接口的特点
1. 通过interface定义接口
2. 通过implement实现接口
3. 接口中方法的都是抽象方法,可以简写
4. 描述一类事物的属性与方法,暴露的是规则
5. 不可以创建对象,不可以实例化
6. 可以多实现,多继承
注:接口不是类!
API (应用程序接口),一些预先定义的函数,一种通用的功能集。
toString() 返回对应对象的字符串表示 hashCode() 返回哈希码值 equals() 是否相等 注:hashCode()与equals()对于引用类型来讲,重写前返回的是地址值,重写后返回属性加属性值
String是封装char[]数组的对象,字符串不可变 创建方式: char[] value={'a','b','c'} String str=new String(char[] value) String str="abc"; 注:String类已经默认重写了equals(),因此在比较时比较的是字符串的字符内容 String常用方法 int hashCode() 哈希码值 boolean equals 比较== String toString 返回本身 int length() 返回字符串的长度 String toUpperCase() 转成大写字母 String toLowerCase() 转成小写字母 boolean startsWith(String prefix) 是否以指定元素开头 boolean endsWith(String suffix) 是否以指定元素结束 char charAt(int index) 返回索引char的下标值 int indexOf(String str) 返回此字符第一次出现的索引值 int lastIndexOf(String str) 返回此字符最后一次出现的索引值 String concat(String str) 拼接到字符串结尾 String []split(String regex) 根据指定元素分割此字符串 String trim() 去除字符串首尾空格 byte[] getBytes() 把字符串储存到一个新的byte数组中 String substring(int beginIndex) 返回一个新字符串,从指定下标开始一直到结束 String subString(int beginIndex,int endIndex) 返回一个新字符串,从指定下标到开始,到指定位置结束,[开始,结束) static String valueOf(int i) 把int转成String
StringBuffer()/StringBuilder() 都使用工具类对象append()进行拼接 StringBuffer 线程安全 StringBuilder 线程不安全 执行效率:StringBuilder>StringBuffer>String
常用语法
k 必须匹配指定字符k abc 必须匹配指定字符abc [abc] 只匹配单个的字符 [abc][123] 两个里面各取一个进行组合 [a-z] 匹配26个小写字母 [a-zA-Z0-9] 三种符合的都可以单一存在 [^a-zA-Z] 排除英文字母 \d 数字,相当于[0-9] \D 排除数字,相当于[^0-9] \s 空白字符 \S 排除空白字符 \w 字母数字下划线,相当于[a-zA-Z0-9_] \W 排除字母数字下划线 . 单个匹配任意字符 [abc]? ?表示,出现0次或1次 [abc]?[123] 组合:如1,2,3,a1,a2,a3,b1,b2,b3,c1,c2,c3 [abc]* *表示,可以出现0到多次 [abc]+ +表示,出现的次数要>=1次 [abc]{3} 元素可以出现3次, aaa,bbb,ccc,cab……
String提供的正则表示方法
Matches(正则):当前字符串能否匹配正则表达式 replaceAll(正则,子串):替换子串 split(正则):拆分字符串 String regex="\\d{17}{o-9X}" 定义格式 input.matches(regex) 判断是否符合格式
Integer 创建方式: 1.new Integer(5); 新建对象 2.Integer.valueOf(5); 新建后缓存对象,范围-128~127 int parseInt(String s) 字符串转化为整数型 Double 创建方式: 1.new Double(3.14); 2.Double.valueOf(3.14); 两者创建方法效果相同 double parseDouble(String s); 字符串转化为浮点型
自动装箱 基本类型-->包装类型 Integer a=5; //Integer a=Integer.valueOf(5); 自动拆箱 包装类型-->基本类型 int i=a; //int i=a.intvalue();
常用方法:
add(BigDecimal bd): 加法运算 subtract(BigDecimal bd):减法运算 Multiply(BigDecimal bd):乘法运算 Divide(BigDecimal bd): 除法运算 Divide(BigDecimal bd, 保留位数,舍入方式):除不尽时使用 setScale (保留位数,舍入方式):同上 pow(int n): 求数据的几次幂
舍入方式:
ROUND_HALF_UP 四舍五入 ROUND_HALF_DOWN 五舍六入 ROUND_HALF_EVEN 公平舍入 ROUND_UP 直接进位 ROUND_DOWN 直接舍弃 ROUND_CEILING 向上取整 ROUND_FLOOR 向下取整
流,英文为Stream,按流的方向有输入流(in)和输出流(out),按处理数据类型有字节流和字符流
输入指的是程序的读入,输出指的是程序的输出
File常用方法速查表:
File file=new File(String pathname);
file.length();//文件字节量 file.exists();//是否存在 file.isFile();//是否为文件 file.isDirectory();//是否为文件夹 file.getName();//获取文件/文件夹名 file.getParent();//获取父级文件夹路径 file.getAbsolutePath();//获取完整的路径 file.createNewFile();//新建文件 file.mkdir();//新建不存在的文件夹 file.mkdirs();//新建不存在的多个文件夹 file.delete();//删除文件(空文件/空文件夹) file.list();//返回String[],包含文件名,不可操作对象(不常用) file.lietFiles();//返回File[],包含文件对象,可对文件对象做进一步操作(常用)
1字节流输入 InputStream抽象类 字节输入流的所有类的超类/抽象类 FileInputStream子类 (操作文件的字节输入流) 直接插在文件上读取文件 BufferedInputStream子类(缓冲字节输入流) BufferedInputStream(InputStream in) BufferedInputStream(new FileInputStream(String pathname)) 2字节流输出 OutputStream抽象类 FileOutputStream 子类 FileOutputStream(String name) BufferedOutputStream 子类 BufferedOutputStream(OutputStream out)
1字符流输入 Reader抽象类 FileReader--子类 (操作文件的字符输入流) FileReader(String fileName) BufferedReader--子类 (缓冲字符输入流) BufferedReader(Reader in) BufferedReader(new FileReader(String fileName)) 2字符流输出 Writer抽象类 FileWriter--子类 FileWriter(String fileName) BufferedWriter--子类 BufferedWriter(Writer out)
序列化:ObjectOutputStream 程序中的对象输出到文件中 方法: out.writerObject(); 反序列化:ObjectInputStream 序列化后文件读入程序 方法: in.readObject(); 注:序列化与反序列化UID需要保持一致 编码转换 OutputStreamWriter 字符流-->字节流 InputStreamReader 字节流--->字符流
Collection接口 List ArrayList LinkedList Set HashSet TreeSet Map HashMap TreeMap
collection方法表
add() 添加 addAll() 添加 remove() 移除 isEmpty() 是否为空 size() 元素个数 contains() 包含 toArray() 转为数组 iterator() 迭代
在方法的返回值之前声明了一个,表明后面出现的E是泛型,而不是普通java变量
public class TestStudent<Student>{ } public interface Collection<E>{ } public <E> void print(E e){ }
常用名称
E-element在集合中使用,因为集合中存放的是元素 T-Type(java类) K-Key(键) V-Value(值) N-Number(数据类型) ?-表示不确定的java类型
高效for循环
for(数据类型 遍历所起数据名称i:需要遍历的数据){方法体}
List方法速查表 get() 获取索引位置的元素 set() 修改指定位置元素 add() 添加 addAll()添加 subList() 返回列表中的指定起始元素[ ) listIterator() 列表迭代器
ArrayList 底层是数组结构,查询快,增删慢,适合查询较多的场景
LinkedList 底层是链表结构,查询慢,增删块,适合增删较多的场景