Object超类
- equals() ==
- toString 类名@地址
包装类
数据类型 | 包装类 | 取值范围 | 占用字符 |
---|---|---|---|
byte | Byte | -128~127 | 1 |
short | Short | -32768~-32767 | 2 |
int | Integer | -2147483648~-2147483647 | 4 |
long | Long | -263 ~-263-1 | 8 |
float | Float | -231 ~-231-1 | 4 |
double | Double | -263 ~-263-1 | 8 |
boolean | Boolean | 1 | |
char | Character | 0~65535 | 2 |
Integer
- public static final int MIN_VALUE 最小值
- public static final int MAX_VALUE 最大值
- public static Integer valueOf(String s)返回Integer类型
- public static int
parseInt
(String s)字符串装换为int
System类
- System.exit(0); 终止java虚拟机 (0正常结束 非零状态异常终止)
- public static native long currentTimeMillis(); 放回值的时间单位为毫秒(当前时间与1970年1月1日之间的毫秒值)
- public final static InputStream in 输入流
- public final static PrintStream out = null; 输出流
Scanner 键盘接受器
Scanner a =new Scanner(System.in);
- public int nextInt()
- public String next()
遇见空格键(tab键)enter键会自动取消获取字符 - public String nextLine()
只有遇见entre键才会自动取消获取字符可以接受空格
String字符串
底层原理字节数组 byte []
构造方法
- new String();
- new String(char [ ]);
- new String(byte [ ]);
(97->a)
使用默认字符集UTF-8 - new String(byte [ ],“GBK”);指点字符集
- public String(byte bytes[], int offset(起始下标), int length(长度))
方法
length 长度
- public String toUpperCase()字符串转大写
- startsWith(“ ”)特定字符开始
- endsWith(“ ”)特定字符结束
- public String substring(int beginIndex, int endIndex) 从beginIndex开始到endIndex结束
- public byte[] getBytes() 返回字符串对应的字节数组
(使用默认的字符编码UTF-8)
- public byte[] getBytes(String charsetName)可以指定字符集
(汉字 GBK->2个字节 UTF-8->3个字节) - public String[] split(String regex) 通过regex分割形成String数组
StringBuilder可变字符串
构造
- StringBuilder()
- StringBuilder(String str)
方法
-append() 添加字符
-reverse() 反转
-tostring()转化为string
Math基本数字的运算
静态方法
代码 | 作用 |
---|---|
public static int abs() | 返回绝对值 |
public static int max(int a, int b) | 返回两个int值中的较大值 |
public static int min(int a, int b) | 放回量个int值中的较小值 |
public static double ceil(double a) | 返回大于或等于参数的最小double值,等于一个整数 |
public static double floor(double a) | 返回大于或等于参数的最大double值,等于一个整数 |
public static int round(float a) | 按四舍五入返回最接近参数的int |
public static double pow(double a, double b) | 返回a的b次幂 |
public static double random() | 返回大于等于 0 小于 1 的一个随机数 |
随机数 Random
Random r=new Random();
int a=r.nextlnt(100);取[0,100)
日期类Date类
构造方法
- 无参构造
date() - 带参构造
-public Date(long date)填入的是毫秒值 1970年1月1日往后date毫秒
方法
- public long getTime() 获取1970年1月1日到现在的毫秒值
- public void setTime(long time) 填入的是毫秒值 1970年1月1日往后time毫秒
SimpleDateFormat日期格式化和解析
- 构造
public SimpleDateFormat(String pattern)
y年 M月 d日 H时 m分 s秒 - 方法
- public final String format(Date date) date转化为String 传入一个日期按照指定格式返回一个String
- public Date parse(String source) (抛异常) String转化为date 传入一个String按照指定格式放回一个date
Date a = new Date();
System.out.println(a);//重写了toString Mon Jul 12 18:04:20 CST 2021
System.out.println(a.getTime());//获取1970年1月1日到现在的毫秒值 1626084260206
a.setTime(10000);//设定时间 填入的是毫秒值 1970年1月1日往后10000毫秒
System.out.println(a);//Thu Jan 01 08:00:10 CST 1970
System.out.println(a.getTime());//10000
a = new Date(10000);
System.out.println(a);//Thu Jan 01 08:00:10 CST 1970
System.out.println(a.getTime());//10000
SimpleDateFormat b = new SimpleDateFormat("YYYY");//设置格式
String s = b.format(a);//传入一个日期按照指定格式返回一个String
System.out.println(s);
Date date = b.parse("1234");//传入一个String按照指定格式放回一个date
System.out.println(date);
日历类Calendar(抽象类)
子类GregorianCalendar
-
(构造)public static Calendar getInstance() 获取Calendar对象(使用当前日期和时间初始化)
-
对象.get(Calendar.YEAR)获取当前对象的年
MONTH月(从0开始算的)
DATE日
public int get(int field) field获取的字段 -
set(int field,int value):将指定的字段值设置指定的值,字段在类中的都是静态最终常量
-
public final void set(int year, int month, int date) 设置当前对象的年月日
-
abstract public void add(int field, int amount); 对指定的时间量进行添加与减去给定的时间
field 获取的字段 amount进行加减
Calendar.YEAR 表示年
Calendar.MONTH 表示月
字段 | 意思 | 字段 | 意思 | 字段 | 意思 |
---|---|---|---|---|---|
YEAR | 年 | MINUTE | 分 | DAY_OF_WEEK_IN_MONTH | 某月中第几周 |
MONTH | 月 | SECOND/MILLISECOND | 秒/毫秒 | WEEK_OF_MONTH | 日历式的第几周 |
DATE | 日 | DAY_OF_MONTH | 和DATE一样 | DAY_OF_YEAR | 一年的第多少天 |
HOUR_OF_DAY | 时 | DAY_OF_WEEK | 周几 | WEEK_OF_YEAR | 一年的第多少周 |
Calendar c = Calendar.getInstance();//获取Calendar对象(使用当前日期和时间初始化)
System.out.println(c);
//ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=12,DAY_OF_YEAR=193,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=8,HOUR_OF_DAY=20,MINUTE=13,SECOND=18,MILLISECOND=970,ZONE_OFFSET=28800000,DST_OFFSET=0]
System.out.println(c.get(Calendar.YEAR)+""+c.get(Calendar.MONTH)+""+c.get(Calendar.DATE));
//2021612 获取当前对象的年月日
c.set(2048,2,1);//设置当前对象的年月日
System.out.println(c.get(Calendar.YEAR)+" "+(c.get(Calendar.MONTH)+1)+" "+c.get(Calendar.DATE));//2048 3 1
c.add(Calendar.DATE,-1);
System.out.println(c.get(Calendar.YEAR)+" "+(c.get(Calendar.MONTH)+1)+" "+c.get(Calendar.DATE));
集合类Collection接口
- add()添加
- isEmpty 判断集合里面是否有元素
- remove() 删除元素
- contains()集合里是否有这个元素
- size() 集合个数
- clear() 清空集合
迭代器Iterable
- .iterator()方法
- .hasNext()是否有下一个元素
- .next获取当前元素
- .remove删除元素
List集合
- add(下标,元素) 指定下标插入元素
- remove(下标) 根据下标删除元素
- set(下标,元素) 修改指定下标处的元素
- get(下标) 根据下标删除元素
- indexof(元素)元素第一次出现的下标、
- lastindexof(元素)元素最后一次出现的下标
ArrayList(数组)
LinkdList(链表)
- getFirst()第一个元素
- getLast()最后一个元素
- addFirst() 添加第一个元素
- addLast() 添加最后一个元素
- removeFirst() 删除第一个元素
- removeLast()删除最后一个元素
Listlterator
- add()指定位置加入元素
- hasPrecious() 判断前面是否还有元素
- nextIndex() 元素下标
set接口
没有重复值(保证元素的唯一性)(底层equals与hashcode)
HashSet(无序,hash表)
TreeSet(自动排序,红黑树)
构造方法
- 1 TreeSet()
- 2 TreeSet set = new TreeSet(new Comparator() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
Comparable接口
1自己编写的类实现此接口 重写compare方法 等于0时表示相同
2利用内部类的方式
TreeSet<String> set = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
})
Map集合
- put()添加元素
- get(key) 返回指定key对应的value
- clear()删除该map对象中所以键值对
- containsKey(key) 是否包含指定的key
- containsValue(value)是否包含指定的value
- isEmpty()该map集合是否为空 为空返回true
- KeySet()返回Map中所有key组成的set集合
- remove(key,value)删除指定键值对
- remove(key)
- values()返回该map所有value组成的callection
- entrySet()返回map中包含的键值对所组成的Set集合,每个集合都是Map.Entry对象
- size()集合长度
HashMap
Treemap
集合工具类 Collections
- Collections.sort(List list); 按照指定顺序 升序排列
- Collections.sort(List list, Comparator c); 自己加入自动排序
- Collections.shuffle(List<?> list);将元素随机进行排序
- Collections.reverse(List list); 反转指定列表中元素的顺序
数据流 File文件
File文件(java.io)
文件和路径目录名的抽象表示
- 文件和目录通过File封装成对象
- 对于File而言,封装的只是一个路径(可以存在也可以不存在)
默认地址在与当前模块同级别
构造方法
// public File(String pathname)传入一个字符串
File f = new File("E:\\java\\java.txt");
System.out.println(f);//E:\java\java.txt
//public File(String parent, String child) parent目录
File f1 = new File("E:\\java","java.txt");
System.out.println(f1);//E:\java\java.txt
//public File(File parent, String child)
File f2 = new File("E:\\java");
File f3 = new File(f2,"java.txt");
System.out.println(f3);//E:\java\java.txt
File类创建功能
- public boolean createNewFile() throws IOException 以文件新建
当文件夹找不到时报 java.io.IOException: 系统找不到指定的路径。 - public boolean mkdir() 以文件夹新建
- public boolean mkdirs() 以多级目录(文件夹)的形式兴建
当文件夹的名字与文件名相同时会创建失败
删除功能
- public boolean delete()删除文件或目录
如果目录下有内容则无法删除 返回false 不回报错
判断与获取
- public boolean isDirectory() 测试此抽象路径名表示的File
是否为目录(文件夹)
- public boolean isFile() 测试此抽象路径名表示的File
是否为文件
- public boolean exists() 测试测抽象路径名表示的File
是否存在
- public String getAbsolutePath() 放回此抽象路径名的
绝对路径名
字符串 - public String getPath() 将测抽象路径名装换为路径名字符串(
File里面写什么就是什么
) - public String getName() 返回此抽象路径名表示的
文件或目录的名称
- public String[] list() 放回此抽象路径名表示的
目录中
的文件
和目录
的名称字符串数组
- public File[] listFiles() 返回此抽象路径名表示的目录中的文件和目录的File对象数组
- public String toString() {return getPath();}
File里面写什么就是什么
IO流
数据在设备间的传输
数据的流向:输入流 输出流
数据的类型:字节流(万能的) 字符流(用记事本打开可以读懂内容的)
字节输出流OutputStream
- public abstract class OutputStream字节输出流的超类
FileOutputStream
构造方法
- public FileOutputStream(String name) throws FileNotFoundException传入一个地址
- public FileOutputStream(File file) throws FileNotFoundException传入一个File对象
- public FileOutputStream(String name, boolean append)
append为true表示追加字符 而不去每一次写入都清空
- public FileOutputStream(File file, boolean append)
执行的操作
- 调用系统功能创建文件
- 创建了字节输出的对象
- 让字节输出流对象指向创建好的文件
写的方法
- public void
write(int b)
throws IOException将指定字节写入此文件输入流97->a
- public void write(byte b[]) throws IOException 一次性写入一个数组
- public void write(byte b[], int off, int len) off开始位置 len长度 指定数组中的内容
- public void
close()
throws IOException关闭数据流 每一次使用完数据流时 都要关闭数据流 不浪费资源
抛异常
- 平常使用
- 在外部定义
- 判断是否为空
- 不为空则关闭数据流
- 结束时会自动关闭数据流
try (FileOutputStream fileOutputStream = new FileOutputStream("jasdasdava.txt",true)){
byte[] a={65,66,67,68,69};
fileOutputStream.write(a,2,2);
}catch( Exception e){
e.printStackTrace();
}
字节缓冲流BufferedOutputStream
- public BufferedOutputStream(OutputStream out)
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("jasdasdava.txt",true));
bufferedOutputStream.write(123);
bufferedOutputStream.close();
字节输入流 InputStream
- public abstract class InputStream 字节输入流的超类
FileInputStream
- public FileInputStream(String name)
构造方法
- public FileInputStream(String name) throws FileNotFoundException 传入一个字符串
- public FileInputStream(File file) throws FileNotFoundException传入一个File类
读的方法
- public int read()
返回为当前字节 当没有字节的时候则放回为-1
FileInputStream inputStream = new FileInputStream("jasdasdava.txt");
int r;
while (( r=inputStream.read()) != -1 ){
System.out.print(r);
}//95656667686967686768
FileInputStream inputStream = new FileInputStream("jasdasdava.txt");
int r;
while (( r=inputStream.read()) != -1 ){
System.out.print((char) r);//_ A B C D E C D C D
}
- public int read(byte b[])
放回读取的个数 不可读时返回-1
FileInputStream inputStream = new FileInputStream("jasdasdava.txt");
byte[] a=new byte[2];
int r;
while (( r=inputStream.read(a)) != -1 ){
System.out.print(new String(a,0,r));
}
字节缓冲流BufferedInputStream
public BufferedInputStream(InputStream in)
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("jasdasdava.txt"));
int a;
while ((a=bufferedInputStream.read())!=-1){
System.out.println((char)a);
}
字符流
只能复制文本数据
出现的原因 汉字使用字节流读取会出现乱码 (字节流读取不方便)
字节流复制文本文件时:文本文件中也有中文,但没有问题,因为底层操作自动进行字符串拼接成中文
如何识别中文:无论哪种编码存储,第一个字节都是负数。
字符输出流Writer
public abstract class Writer 字符输出流的抽象类
OutputStreamWriter(可指定字符集)
public class OutputStreamWriter extends Writer
可以指定字符集
构造方法
- public OutputStreamWriter(OutputStream out)
- public OutputStreamWriter(OutputStream out, String charsetName)
charsetName指定字符集
默认utf-8
写的方法
与字节流一样
有的时候只是写入一个字符时有可能在缓冲区中没有写出来,需要使用flush刷新一下
- public void write(int c) 写入一个字符
- public void write(char cbuf[]) 写入一个数组
- public void write(char cbuf[], int off, int len)off开始 len长度
- public void write(String str) 写入一个字符串
- public void write(String str, int off, int len) 底层把string转化为了char[]
- public void close() 关闭数据流
(先刷新在关闭)
- public void flush()
刷新
FileWriter(无法指定字符集)
优点 可以快速的使用
public class FileWriter extends OutputStreamWriter
构造方法
- public FileWriter(String fileName) 写路径
- public FileWriter(String fileName, boolean append)为true时进行添加
- public FileWriter(File file)
- public FileWriter(File file, boolean append)
BufferedWriter
字符输出流
构造方法
- public BufferedWriter(Writer out)
- public BufferedWriter(Writer out, int sz) sz指定容量大小
特有方法
- public void newLine() 写一个行分割符 会根据系统的不同从而进行调整
- 使用 1 write读 2 newline换行 3 flush刷新
字符输入流Reader
public abstract class Reader字符输入流的抽象类
InputStreamReader(可指定字符集)
构造方法
- public InputStreamReader(InputStream in)
- public InputStreamReader(InputStream in, String charsetName)
指定字符集
读的方法
与字节流一样
- public int read()
- public int read(char cbuf[], int offset, int length)
FileReader(无法指定字符集)
public class FileReader extends InputStreamReader
可以直接构造 使用的长度减少了
构造方法
- public FileReader(String fileName)
- public FileReader(String fileName)
BufferedReader 字符缓冲流
public class BufferedReader extends Reader
构造方法
- public BufferedReader(Reader in)
- public BufferedReader(Reader in, int sz) sz指定容量大小
特有方法
- public String readLine() 读取一行文字 (不包含结尾的换行符)如果数据流到达结尾则为null
打印流
只负责输出数据,不负责读取数据,有自己特有的方法
字节打印流 PrintStream
- public class PrintStream extends FilterOutputStream
构造方法
- public PrintStream(String fileName)
- public PrintStream(File file)
方法
- public void write(int b) (会进行转码 97->a)
- public void print(int i) (不会转码)
- public void println(int x)(不会转码)
字符打印流PrintWriter
- public class PrintWriter extends Writer
构造方法
- public PrintWriter(String fileName)
- public PrintWriter(File file)
- public PrintWriter (Writer out)
- public PrintWriter(Writer out, boolean autoFlush) boolean为true时print方法println方法format方法将刷新输出缓冲区(自动刷新flush)
方法
- public void write(int c)
- public void print(int i)
- public void println()
对象序列化
将对象保存到磁盘中或者在网络中传输对象
需要实现public interface Serializable {}(标识接口 里面没有任何方法 序列化必须实现此接口)
private static final long serialVersionUID=0;、
序列化码 一个无关字母发生变化导致序列化码不同 从而反序列化失败 (所以建议自动写出来)
对象序列化流ObjectOutputStream
- protected ObjectOutputStream()
- public ObjectOutputStream(OutputStream out)
- public final void writeObject(Object obj) 将对象写出
对象反序列化流ObjectInputStream
- protected ObjectInputStream()
- public ObjectInputStream(InputStream in)
- public final Object readObject() 读取对象
如何不被序列化
private transient
int age;原来数据被隐藏 变成初始值 0
Properties(无泛型)
public class Properties extends Hashtable<Object,Object>
a==b 写入到里面
- map体系的集合
- 可以保存到流中或从流中加载
特有方法
- public synchronized Object setProperty(String key, String value) 添加元素
- public String getProperty(String key)通过key获取value
- public Set stringPropertyNames() 将key生成一个set集合
IO流的结合
-
public synchronized void load(InputStream inStream)读
-
public synchronized void load(Reader reader)
-
public void store(Writer writer, String comments)写
-
public void store(OutputStream out, String comments)comments描述信息 不想写可以写null
FileWriter fileWriter = new FileWriter("untitled\\java\\2.txt");
porp.store(fileWriter, null);
FileInputStream inputStream = new FileInputStream("untitled\\java\\2.txt");
porp.load(inputStream);