Java进阶

1.Date类空参数构造方法,Date()获取的是当前的日期和时间
带参数的构造方法:Date(long date),传递的是毫秒值,把毫秒值转化为日期时间
成员方法:long getTime() 把当前日期转化成毫秒

2.构造方法:SimpleDateFormat(String pattern)
String pattern:传递指定的模式
y:年;M:月;d:日;
H:时;m:分;s:秒
①String format(Date date);
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date = new Date();
String text = sdf.format(date); (Format方法用来根据上面的构造方法来输出具体的格式)
②Date parse(String source);(需要处理异常)
把字符串转化成对应的Date类型的时间

3.日历类:
通过getInstance方法来获取日历类对象
Calendar c = Calendar.getInstance();//多态
Calendar类的成员方法:
在这里插入图片描述
静态成员变量的获取作为参数使用:Calendar.YEAR

4.System类
在这里插入图片描述
在这里插入图片描述

5.String类:
字符串是常量,它们的值在创建后不能被改变,底层是一个被final修饰的数组,不能改变是一个常量
StringBuilder类:
是一个字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串),底层没有被final修饰,可以改变长度,初始长度16
构造方法:
①StringBuilder()
②StringBuilder(String str)
成员方法:
①append()在这里插入图片描述
②toString()
在这里插入图片描述
6.包装类(类似int与Integer)
在这里插入图片描述
JDK1.5之后出现自动装箱和自动拆箱
在这里插入图片描述
7.基本类型和字符串类型之间的相互转化:
在这里插入图片描述
注意是包装类的静态方法,使用:Integer.parseInt(“100”)

8.集合的框架
在这里插入图片描述
9.Collection集合常用的方法
在这里插入图片描述
10.可以使用Iterator接口来遍历集合
在这里插入图片描述
①先获取一个迭代器的实现类对象
在这里插入图片描述
②使用while或者for循环
在这里插入图片描述
11.增强for循环
在这里插入图片描述
比如定义一个数组:
int[] arr = {1,2,3,4,5};
for(int i : arr) {
System.out.println(i);
}
定义一个集合:
在这里插入图片描述
12.使用泛型的话
①定义含有泛型的类的时候不指定数据类型,而改为创建对象的时候再指定数据类型
在这里插入图片描述
②定义含有泛型的方法,在调用方法时候再指定泛型
在这里插入图片描述
③泛型通配符<?>
在不确定泛型的时候可以在定义方法时候使用参数类似于(ArrayList<?> list)
在这里插入图片描述
13.List有两个重要的接口实现类ArrayList和LinkedList(都是多线程,所以快)还有一个Vector(单线程)
①ArrayList中有add,get,set,remove…方法,可以使用多态创建,底层是数组
List <?> list = new ArrayList<> ();//多态

②LinkedList中有很多自己独有的方法,故不能使用多态创建,底层是链表
在这里插入图片描述
14.可变参数的使用:
当知道参数的类型,但是不知道有多少参数的时候,可以使用可变参数,类似于(数据类型…变量名),如(int…arr),其实是一个数组接收传进来的参数。比如求和方法,只写一个方法,定义2-无穷个参数的和的时候就可以使用可变参数。
public static int add(int…arr){
int sum = 0;
for(int i:arr){
sum += i;
}
return sum;
}

15.Collections是一个集合工具类,有addAll(list,…),和shuffle(list),sort(list)静态方法很重要
①addAll(list,…)
在这里插入图片描述
②shuffle(list)
在这里插入图片描述
③sort(list)
在这里插入图片描述
进阶
在这里插入图片描述

16.Map集合是双列集合,Collection集合是单列集合
Map集合的特点:
在这里插入图片描述
HashMap和LinkedHashMap的特点:
在这里插入图片描述
17.Map接口中的常用方法:
①put(key,value),对比Set中放的时候用的是add(),因为Set中只要加一个单元素,而Map加的是一个键值对
在这里插入图片描述
②remove(key)
在这里插入图片描述
③get(key)
在这里插入图片描述
④containsKey(key)
在这里插入图片描述
18.Map集合遍历的两种方式:
①通过Map集合的一个keySet()方法,把map的键返回到一个set集合中,然后按照set集合的遍历方法,得到key,并通过get(key)得到value
在这里插入图片描述
在这里插入图片描述
②使用Entry对象遍历,通过Map集合中的方法entrySet()返回包含键值对关系的Set视图,然后遍历这个视图,得到每个Entry对象,把键和值分别取出来
在这里插入图片描述
在这里插入图片描述
19.Map集合中为了保证key唯一,必须重写hashCode方法和equals方法
在这里插入图片描述
20.Map集合有个子实现类Hashtable,不允许存储null值,null键。但是Hashtable有个子类Properties依然在用。
在这里插入图片描述
21.JDK9中List,Set,Map中新增了可以一次性(添加完以后不能再次添加新元素)添加多个元素的静态方法of()
在这里插入图片描述
22.异常的处理
Java异常处理的五个关键字:try,catch,finally,throw,throws
①throw
在这里插入图片描述
在这里插入图片描述
可以用Objects.requireNonNull(obj)简化判断是否为null
在这里插入图片描述
在这里插入图片描述
②throws
在这里插入图片描述
③try…catch
在这里插入图片描述
catch中可以使用Throwable类的三个方法来对这个异常信息进行显示(如e.getMessage()),直接写e等同于e.toString();
在这里插入图片描述
如果执行try以后出现异常执行catch以后还有代码想执行,可以放在finally中
在这里插入图片描述
因为finally语句一定会执行,所以如果finally里面有return语句,一定会执行,所以要避免在finally里面写return语句
异常注意事项: 子父类异常
在这里插入图片描述

自定义异常类
在这里插入图片描述
构造方法可以直接调用父类带异常信息的构造方法,让父类来处理
在这里插入图片描述
23.创建多线程程序的两种方式:
①创建Thread类的子类,重写run方法,然后建立这个子类对象,调用start方法
在这里插入图片描述
获取线程名称的方式:
在这里插入图片描述
在这里插入图片描述
设置线程的名称
在这里插入图片描述
第二种设置名字方式
在这里插入图片描述
main方法,start方法调用的run方法里就是输出这个线程的名字
在这里插入图片描述
Thread类的常用静态方法sleep()
在这里插入图片描述
直接Thread.sleep(1000),需要处理异常
②实现Runnable接口来创建多线程
在这里插入图片描述
在这里插入图片描述
24.Thread和Runnable的区别(使用Runnable的好处)
在这里插入图片描述
25.匿名内部类实现线程的创建
在这里插入图片描述
①Thread
在这里插入图片描述

②Runnable
在这里插入图片描述
简化
在这里插入图片描述

26.解决线程安全问题的三种方式:
①使用同步代码块(synchronized(锁对象))
在这里插入图片描述
在这里插入图片描述
②使用同步方法
在这里插入图片描述
在这里插入图片描述
还有一种静态的同步方法,和普通的同步方法的区别是锁不同
在这里插入图片描述
③Lock锁
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
27.线程的等待和唤醒
在这里插入图片描述
28.线程池
在这里插入图片描述
在这里插入图片描述
29.Lambda表达式的标准格式
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值