Stringbuilder只能通过new对象来创建;
*
* Stringbuilder的添加和反转:
* 添加:不管添加什么类型,输出都是字符串
* 链式编程:append返回的是一个对象
* 反转:reverse()
String和Stringbuilder相互转换:
* Stirng转成Stringbuilder用,带参构造方法;
* Stringbuilder转成String用,Stringbuilder的to_String方法。
* Arrary:提供对数组的各种操作方法。
* toString();转成字符串
* sort();数组排序;
JAVA的INT范围查看:Integer.MAX_VALUE
* Int类型和String类型之间的转换:
* int到String:String s = ""+ a;//a为int类型
* int到String: Integer.parseInt("String");
* String到int:String.valueof("");//可以把字符串转换为各种类型
* 自动装箱:基本数据类型自动转换成对应的包装类。 Integer i = 100;
* 把包装类型自动转换成基本数据类型。 i += 200;
* Date类:
* 构造方法:
* Date(long date)
* 分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。
常用方法:
* long getTime()
* 返回自1970年1月1日以来,由此 Date对象表示的00:00:00 GMT的毫秒 数 。
*
* setTime(long time)
* 设置此 Date对象以表示1970年1月1日00:00:00 GMT后的 time毫秒的时间点。
SimpleDateFormat类:
* 目的:文本到日期,日期到文本。
*
* 构造方法:
* SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)
* 使用给定的模式和日期格式符号构造一个 SimpleDateFormat 。
* SimpleDateFormat(String pattern, Locale locale)
* 构造一个 SimpleDateFormat使用给定的模式和给定的区域设置的默认日期格式符号。
学过的容器:StringBuilder,数组
* StringBuilder结果是字符串,数组的长度是固定的,不能作为对象的容器。
引出集合Collection:
ArrayList的方法:
a.add(<E>); 添加元素,源码永远返回true
* c.remove(<E>); 移除成功返回true,失败false
* c.clear(); 清空集合
* c.isEmpty();判断集合是否为空
* c.size();集合元素的个数
集合迭代器:
Iterator:迭代器
* 创建方法:
* Iterator<String> i = c.iterator();
迭代器使用:
hasNext();判断是否有下个元素
* next();获取下一个元素
List集合的特点:有序,可重复 又被称为序列。
*
* List集合的特有成员方法:
* add(int index, E element);在指定位置添加元素,后面的元素后移
* remove(int index);删除指定位置元素
* get(int index);获取指定位置元素
* set(int index,E element);修改指定位置元素
列表迭代器ListIterator<>
* 继承于普通迭代器。
* 特有方法有:反向遍历,Previous,hasPrevious;反向遍历的前提是要先正向遍历一便(所以一般用不到)
* List集合特点:
* ArrarList:底层是数组,查询快,增删慢
* LinkList:底层是链表,查询慢,增删快
Set集合的特点:
* 不包含重复元素的collection;
*
* HashSet的特点:
* 不保证set集合的迭代顺序;特别是他不保证这个顺序恒久不变。
*
* HashSet保证元素唯一性的原理:
* add的过程中,进行了hashCode和equal的判断。
* 判断流程:首先比较hashCode如果不同,再比较equal方法。元素重复就不再添加
* 使用要点:
* 使用HashSet时,如果要保证元素的唯一性必须重写hashCode方法和equal方法。
Map集合:
* 将键映射到值的对象。一个映射不能包含重复的键,一个键映射一个值。
*
* Map集合不使用add方法,使用自己的put方法put();
*
* Map的常用成员方法:
* put(K,V);加入集合
* remove(Object K);删除
* clear();清空
* m.containsKey(Object K);判断键是否存在
* m.containsValue(Object V);判断值是否存在
* isEmpty();判断集合是否为NULL
* size();返回键值对数
Map集合的获取方法:
* get(K);
* keySet();返回一个所有键的Set集合
* values();返回一个所有值的Set集合
* Map集合的遍历:
* 方法1:通过键的集合keySet()遍历用get方法获取值;
* 方法2:通过Map返回一个Set键值对数组,对数组进行遍历 Set<Map.Entry<String,String>> s = m.entrySet();
File的创建功能:
* createNewFile()
* 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
* 成功返回true,文件存在创建失败返回false
* boolean mkdir()
* 创建由此抽象路径名命名的目录。
* 成功返回true,目录存在创建失败返回false
* boolean mkdirs()
* 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
* 成功返回true,目录存在创建失败返回false
*
* 创建多级目录下的文件要先创建目录再创建文件
*
*相对路径和绝对路径:
* 相对路径是对于项目的基础路径来说的。
*
*File的删除delete
* A.目录和文件都是用delete删除;
* B.多级目录删除要先删文件,才可以删除目录
*
*File的判断和获取
* A.判断
* a.f3_1.isDirectory();判断是否是目录
* b.f3_1.isFile();判断是否是文件
* c.f3_1.exists();判断是否存在
* B.获取
* a.f3_1.getAbsoluteFile();获取绝对路径
* b.f3_1.getPath();获取相对路径
* c.f3_1.getName();获取文件名字
String编码解码:
编码:byte[] bys = str.getBytes(StandardCharsets.ISO_8859_1);
* 解码:new String(bys,StandardCharsets.UTF_8)
输入输出流编码解码:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("aa.txt"),“US_ASCII”);
* InputStreamReader isr = new InputStreamReader(new FileInputStream("aa.txt"),"UTF-8");
字符流写入:
osw.write(97);
* osw.write('b');
* osw.write(new char[]{'a', 'b', 'c', 'd', 'e'});
* osw.write(new char[]{'a','b','c','d','e'},1,3);
* osw.write("abcde");
* osw.write("abcde",0,3);
osw.flush();
*
* osw.close();关闭字符流里默认调用了flush();
字符流读取
int i;
// while(-1!=(i=isr.read())){
// System.out.print((char)i);
// }
char[] cs = new char[1024];
int len;
while(-1 != (len = isr.read(cs))){
System.out.print(new String(cs,0,len));
}
isr.close();
字符流缓冲区写入特有功能:newLine();
// bw.write("Hello"+i);
// bw.newLine();//根据操作系统自动加上换行
// bw.flush();//一般写一行刷新一下,方便确认数据
最终使用这两个来完成日常字符流的读写:名字比较短;
BufferedReader bw = new BufferedReader(new FileReader("cp_test04"));
BufferedWriter br = new BufferedWriter(new FileWriter("cp_test04"));