java properties 大括号_javaSE高级知识总结

1.Object类

1.Object是所有类的父类,所有类都可以用其中的方法

2.常用方法

toString()转换为对象的地址

equals() 比较地址与==相同

hashCode()返回对象的哈希值

3.常用方法使用场景

1.自定义类型

1.toString():要重写toSting方法,因为print()方法调用时Object中的toString方法,会打印对象的地址

2.equals():要重写equals方法,equals只能判断地址,我们要让它能判断内容是否相同

public boolean equals(Object o){

//第一步判断比较的两个地址是否相同,相同直接返回true;

if(this==o){

return true;

}

//第二步,地址不同后,判断参数是否为null,为空就是没有对象,返回false;

两个类的信息是否相同,信息不同内容肯定不同

if(o!=null||getClass()!=o.getClass()){

return false;

}

//第三步内容判断

//类型转换为该类的类型

A a = (A)o;

//基本数据类型直接比较值是否相等;引用数据类型,进行Objects类中的equals()进行比较,

两个参数有一个为空返回false,两个参数都为null返回true;否则进行第一个参数中的equals()进行比较;

如果时字符串的话,进行的就是"".equals(),比较的是内容,相同返回true

return .....&&Object.equals( , ).......;

}

2.Date类

1.Date类是时间类,表示一个瞬时的时间

2.构造方法

new Date();创建一个包含当前时间的对象

new Date();创建一个从1970年1月1日 0:0:0的参照物指定毫秒数

3.常用方法

long getTime();返回当前时刻的毫秒值

3.SimpDateFormat类

1.SimpDateFormat是一个转换日期格式的类

2.构造方法

new SimpDateFormat("日期格式");

3.常用方法

String format(Date date);把日期转换为指定字符串

Date parse(String source);根据指定字符串解析为日期对象

4.Calendar类

1.Calendar类是一个日历类,可以获取日期中的每一个属性

2.没有构造方法,只能通过Calendar.getInstance()获取对象

3.常用方法

int get(int 字段值);

void set(int 字段值,int 设置的值);

void add(int 字段值,int 添加/减去的值);

Date getTime();

5.System类

1.System类中有大量的静态方法

long currentTimeMillis();获取当前的毫秒值

void arrayCopy(原数组,开始索引,目标数组,开始索引,复制长度);

6.StringBuilder类

1.是一个字符串缓冲区,可以高效的拼接字符串,不用每次都要创建对象

2.构造方法

new StringBuilder();创建一个空的容器

new StringBuilder(String str);创建一个容器,并放入字符串

3.常用方法

StringBuilder append(String str);

String toString();把对象中的内容转换为字符串

7.包装类

1.主要作用就是为了让基本数据类型也有一定的功能

2.自动拆箱与装箱

3.每个包装类中共有的方法

xxx parseXxx(String); 把字符串转换为基本数据类型

8.Collection类

1.Collection是单列集合抽象类

2.常用方法(在子类中有些方法会被重写)

boolean add(E e);

void clear();

boolean remove(E e);

boolean contains(E e);

boolean isEmpty();

int size();

Object[] toArray();

9.迭代器

1.Iterator类是一个遍历集合的类

2.使用步骤

Itertor iter = list.Itertor();

while(iter.hasNext()){

Object o = iter.next();

}

10.增强for

1.遍历集合,数组

for(Object o:list){

sout(o);

}

11.泛型

1.泛型的主要作用就是把运行期的异常提升到编译器,我们也可以用泛型使用一些设计模式

2.类泛型

1.修饰符 类名{},这里的泛型是未知的,在创建对象的时候确认泛型的类型;

2.方法想要使用类中的泛型,可以直接使用

3.方法泛型

1.修饰符 返回类型(E e);

2.调用方法是确认泛型

4.接口泛型

1.修饰符 接口名{}

2.实现接口的时候确认泛型

5.泛型的通配符?,可以接收任意类型的泛型

6.泛型的上限与下限

1.上限

extends 类> 只能使用此类和此类的子类

2.下限

super 类> 只能使用此类和此类的父类

12.List

1.List是一个单列集合接口,有索引,有序,可以重复

2常用方法

void add(int index,E e);

E get(int index);

E set(int index, E e);

E remove(int index);

3.List实现类

1.ArrayList

1.底层是数组结构,查询快,增删慢

2.常用方法,与List接口方法相同

2.LinkedList

1.底层是双向链表,查询慢,增删快

2.常用方法

public void addFirst(E e) :将指定元素插入此列表的开头。

public void addLast(E e) :将指定元素添加到此列表的结尾。

public E getFirst() :返回此列表的第一个元素。

public E getLast() :返回此列表的最后一个元素。

public E removeFirst() :移除并返回此列表的第一个元素。

public E removeLast() :移除并返回此列表的最后一个元素。

public E pop() :从此列表所表示的堆栈处弹出一个元素。

public void push(E e) :将元素推入此列表所表示的堆栈。

public boolean isEmpty() :如果列表不包含元素,则返回true。

13.Set

1.Set是一个单列集合,无索引,无序,不能重复

2.常用方法

与Collection接口中的方法相同

3.Set实现类

1.hashSet

1.底层为哈希表(数组+链表/数组+红黑树)结构,都很快

2.常用方法,与Collection接口方法相同

3.注意

1.因为hashSet底层为哈希表,可以去重,但是自定义类型去重,需要重写hashCode()方法,方法中

调用Objects中的hash(,,);里面参数可以写多个,如果hash()判断后不为true,进行内容比较,调用equals()方法

2.LinkedHashSet

1.底层为双向链表+哈希表,有序

2.常用方法,相同

3.TreeSet

1.这个集合可以定义排序规则,

需要实现Compartor();返回0为不添加,返回负数,按照添加顺序,倒叙排列;返回正数,按照添加顺序排序

14.Collections

1.Collections类是一个工具类里面有一些静态方法

2.常用方法

void shuffle(List list);打乱集合

void sort(List list);升序排序

void sort(List list ,Compartor com);定义排序规则

15.Map

1.Map接口是一个双列集合,

2.常用方法

v put(k key,v value);

v remove(k key);

v get(k key);

Set keySet();

Set>entrySet();

3.Map实现类

1.HashMap

1.底层为哈希表,无序

2.方法与接口方法相同

2.LinkedHashMap

1.底层为双向链表+哈希表,有序

2.方法与接口方法相同

16.异常

1.Throwable是异常和错误的父类

2.Error

无法处理,致命的错误

3.Exception

1.可以处理

2.编译时异常,必须处理

1.处理方法,可以使用关键字throw抛出,抛出之后调用该方法的对象也要抛出,最后交给JVM处理,中断程序执行

2.捕获异常并处理

try{

//可能出现异常的代码

}catch(Exception e){

//出现异常后运行的代码

}finally{

//必须执行的代码,就算上面代码有return,这里面的return也会覆盖上面的return;

}

3.运行时异常,可以不进行处理,JVM自己处理,JVM处理永远都是中断程序执行

4.自定义异常

1.需要继承Exception类

1.只需要创建无参构造方法与有参构造方法

2.有参构造方法可以传一个异常的名字,调用父类的有参构造传递这个字符串名字

17.多线程

1.多线程就是开了多个任务

2.并发与并行

并发就是多个进程在同一时间段进行

并行就是多个进程同一时刻一起进行

3.进程与线程

每个程序都会在内存中开辟一个进程,进程中必须有一个线程,可以有多个线程

线程时进程的一个执行单元

4.创建线程类

1.继承Treader

重写run()方法

2.实现Runnable接口

重写run()方法

5.线程安全,线程同步

1.多个线程访问共享资源的时候,会造成结果与单线程结果不同,这就是线程不安全,

2.通过设置线程锁代码块解决synchronized

synchronized(随便一个对象,但多个线程必须使用的的对象相同){

//这里面的程序每次只能有一个进程执行

}

3.线程同步执行流程

1.当一个进程获取到锁对象的时候进入代码块中状态为Runnable,其他线程进入Blocked状态

2.当进程执行的最后一个大括号时释放锁对象,进入Blocked状态,其他对象拿到锁对象,从Blocked状态进入Runnable状态

4.同步方法解决

public synchronized void 方法名()

5.Lock锁

Lock lock = new ReentrantLock()

void lock()加锁

void unlock()释放锁

6.线程状态

NEW 新创建一个线程,并没有调用start()方法

Runnable 运行时状态,获取到锁

Blocked  阻塞状态,没有获取到锁

Waiting  无限等待状态,进入这个状态,要释放锁,并在该位置等待其他线程调用notify()方法

TimedWaiting 限时等待,进入这个状态后,不会释放锁,时间到了之后自动运行

Teminated    死亡状态

18.线程池

提升了性能,不用我们在频繁的创建线程,只需要从线程池中拿去就可以了

1.使用

Executors.newFixedThreadPool(int 线程数量);

创建Runnable接口的实列化对象

sumbit(Runnable run);

19.lambda

1.可以节省代码量

2.使用

1.只能用于函数式接口,类中或者接口中只能有一个抽象方法,否则无法使用,因为要根据上下文判断 参数

2.参数的类型可以不写,

(a,b)->{};

3.如果方法体中只有一行语句,可以不用写大括号分号return

(a,b)->.....;

4.参数只有一个小括号也可以省略

a->......;

a->{};

20.File类

1.把文件抽象为一个对象,

2.构造方法

new File(String pathName);

new File(String parent,String pathName);

new File(File file,String pathName);

3.常用方法

String getAbsolutePath();后去绝对路径

String getPath();写的路径是什么就是什么

String getName();最后一个文件名或文件夹名

long length();文件的长度,不能查看文件夹

boolean exists()File表示的文件是否存在

boolean isFile()查看是否为文件

boolean isDirectory()查看是否为文件夹

boolean createNewFile()文件不存在时创建一个新文件

boolean delete()删除一个文件,只能删除一个,文件夹为空时才能删除

boolean mkdir()创建目录

boolean mkdirs()创建多层目录

String[] list();

File[] listFiles();

21.递归

1.递归主要找f(x)与f(x-1)的关系

2.必须要有出口,否则堆内存会溢出

3.递归次数不能太多,堆内存会溢出

22.过滤器

File[] FileLists(FileFilter);把过滤后的对象存在数组中

要重写FileFilter中的accept()方法,返回true为符合条件,添加进去

23.IO流

1.一切皆为字节

2.字节流

1.输出流OutputStream(抽象类)

1.常用方法

void write(int b);

void write(byte[] bytes);

void write(byte[] bytes,int off,int len);

void close();

vlid flush();

2.子类FileOutputStream

1.构造方法

new FileOutputStream(File file);

new FileOutputStream(String str);

2.常用方法与父类相同

2.输入流InputStream(抽象类)

1.常用方法

void read();

void read(byte[] bytes);

void close();

2.子类FileInputStream

1.构造方法

new FileInputStream(File file);

new FileInputStream(String str);

2.常用方法与父类相同

3.字符流

1.输出流Writer

1.常用方法

void write(int c);

void write(char[] c);

void write(char[] c ,int off,int len);

void write(String str);

void write(String str, int off,int len);

void flush();

void close();

2.子类FileWriter

1.构造方法

new FileWriter(File file);

new FileWriter(String str);

2.常用方法与父类相同

2.输入流Reader

1.常用方法

void read();

void read(char[] c);

void close();

2.子类FileReader

1.构造方法

new FileReader(File file);

new FileReader(String str);

2.常用方法与父类相同

4.IO异常的处理

1.开发中使用捕获异常并处理,比较繁琐,资源都需要手动关闭

2.JDK7的处理不需要手动关闭资源

try(创建的流对象语句用;号分开){

//读写操作

}catch(){

}

5.属性集

1.Properties类

是一个和IO相关的双列集合

2.常用方法

Object setProperty(String key,String value);

String getProperty(String key);

Set stringPropertyNames();

void load(InputStream is); 读取信息

void store(OutputStream os ,String str);写入文件

24.缓冲流

1.字节缓冲流 BufferedInputStream ; BufferedOutputStream

1.是对字节流的加强,使其高效

2.字节输入缓冲流BufferedInputStream

1.构造方法

new BufferedInputStream(InputStream is);

3.字节输出缓冲流BufferedOutputStream

1.构造方法

new BufferedOutputStream(OutputStream os);

2.字符缓冲流

1.字符输入缓冲流

1.构造方法

new BufferedReader(Reader r);

2.特有方法

String readLine();

2.字符输出缓冲流

1.构造方法

new BufferedWriter(Writer w);

2.特有方法

void newLine();

25.转换流

1.编码的转换,是字节流与字符流的桥梁

2.InputStreadReader(InputStream in,"字符集,码表"); 不指定字符集默认为urf-8

OutputStreamWriter(OutputStream os,"字符集");

26.序列化

1.把对象保存到文件中

2.ObjectOutputStream(OutputStream os);

1.常用方法

writeObject(对象);该对象的类必须序列化,也就是继承java.io.Serializable

3.ObjectInputStream(InputStream is);

1.常用方法

readObject();读取的内容不能更改,会报异常,可以定义一个序列版本号 static final long serialVersionUID = ;

27.打印流

1.PrintStream

1.构造方法

new PrintStream(String str);

2.常用方法

void print();

void println();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值