当前位置:网站首页>7.29
7.29
2022-08-02 23:58:00 【剑轩~】
日期
获得当前时间戳
System类中的currentTimeMillis() ;
Date类
两个构造器的使用
两个方法的使用:toString() : 显示当前的年、月、日、时、分、秒;
getTime():获得当前Date对象对应的毫秒数;
public void test2() {
//构造器一:创建一个对应当前时间的Date对象
Date date1 = new Date() ;
date1.toString();
date1.getTime();
//创建指定毫秒数的Date对象
Date date2 = new Date(long time) ;
//如何将java.utile.Date 对象转换成 java.sql.Date 对象
Date date6 = new Date();
java.sql.Date date7 = new java.sql.Date(date6.getTime());
}
SimpleDateFormat
格式化--- 解析,格式化的逆过程
按照指定的方式格式化和解析
// 格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Calender 日历类
实例化:调用静态方法:getInstance();
常用方法:
get():
set():
add():
getTime():
setTime():
JDK8 日期api
不可变性
LocalDate();
LocalTime();
LocalDateTime();
now() ; // 获取当前的日期、时间、日期+时间
of(); // 设置指定的年月日时分秒;没有偏移量
Comparble 和Comparator
像String、包装类等实现了Comparable接口,重写了compareTo()方法。
对于自定义类来说,需要排序,我们可以让自定义类实现Comparable方法;
返回正数,前面的比较大
对比:
Comparble 是较为永久的,写在类中的;保证实现类的对象在任何位置都可以比较大小。
Comparator : 匿名的、临时性的比较。
得到系统版本:System.out.println(System.getProperty("os.version"));
大数、四舍五入 BigDecimal ; 属性:ROUND_HALF_UP
枚举
类的对象只有有限个,确定的;
当需要定义一组常量时,建议使用枚举类
如果只有一个对象,则可以作为单例模式的实现方式
如何定义枚举类
方式一:
JDK5.0之前
class Season() {
//1. 声明Season 对象的属性:private final 修饰;
private final String seasonName ;
private final String seasonDesc;
//2. 私有化类的构造器,并给对象属性赋值
private Seanson(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 3.提供当前枚举类的多个对象: public static final 的
public static final Seanson xxx = new Season(xxx,xxx) ;
//4 其他诉求:获取枚举类对象的属性
}
方式二:使用enum 关键字来定义
常用方法:
toString();// 不是继承于Object的,是继承于Enum的toString() 方法
values();// 返回对应的枚举的数组
valueOf(String name ); // 返回枚举类中对象名是name的对象,如果没有,则抛异常。
实现接口:
每个对象都去实现接口中的方法;
enum Season1{
// 1.创建当前枚举类的对象,多个对象之间用”,“隔开,末尾对象”;“结束
SPRING("xxxx","xxx"),
SUMMER("xxxx","xxxx"),
AUTUMN("xxxx","xxxx");
}
注解
生成文档相关的注解
自定义注解
// 参照@SuppressWarnings 定义
1. 注解声明为:@interface
2. 内部定义成员,通常用value表示
3. 可以指定成员的默认值,可以用default定义
4. 如果自定义注解没有成员,表明是一个标识作用
如果注解有成员,在使用注解时,需要指明成员的值
元注解
对现有的注解进行解释说明的注解
Retention : 指定所修饰的Annotation 的生命周期:SOURCE/CLASS(默认行为)/RUNTIME
只有声明为RUNTIME生命周期的注解,才能通过反射获取。
Target:用于指定被修饰的Annotation能用于修饰哪些程序元素。
自定义注解通常都会指定以上两个元注解。
Documented:表示所修饰的注解在被javadoc 解析时,保留下来。
Inherited:被它修饰的Annotation 将具有继承性
JDK8 新特性:
可重复注解:
在MyAnnotation上声明@Repeatable,成员值为@MyAnnotations.class
MyAnnotation的Target和Retention和MyAnnotations相同
类型注解:
ElementType.TYPE_PARAMETER : 表示该注解能写在类型变量的声明语句中(如:泛型声明)
ElementType.TYPE_USE : 表明该注解能写在使用类型的任何语句中
集合
Iterator
集合元素的遍历操作,迭代器
迭代器有remove() 方法:如果还未调用next()或在上一次调用next方法之后已经调用了remove方法,再调用remove都会报illegalStateException ;
List接口
面试题:ArrayList、LinkedList、Vector 三者的异同?
同:三个类都是实现了List接口,存储数据特点相同:存储有序、可重复的数据
ArrayList : 作为List接口的主要实现类,线程不安全的,效率高。底层使用Object[] 存储
LinkedList:底层使用双向链表存储。适用频繁的插入、删除操作。
Vector:作为古老实现类,线程安全的,效率低。底层使用Object[] 存储
ArrayList
jdk7 :
初始化,底层创建了长度是10的Object数组;建议使用带参的构造器
扩容:扩容为1.5倍
jdk8:
new对象时,底层初始化为{},在第一次调用add()方法的时候才造这个对象。延迟了数组的创建,节省了内存。
LinkedList
LinkedList list = new LinkedList<>() ; // 内部声明了node类型的first和last属性,默认值为null
区分List中remove(int index) 和 remove(Object obj) : 如果可以不装箱,那就没有必要去装箱
Set
HashSet:线程不安全,可以存储null值
无序性:不等于随机性;存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定的。
不可重复性:保证添加的元素按照equals()判断时,不能返回true;
向HashSet中添加元素a,首先调用元素a所在类的hashCode()方法,计算元素a的哈希值;此时哈希值接着通过某种算法计算出在HashSet底层数组中的存放位置(即为:索引位置),判断数组此位置上是否已经有元素:
如果此位置上没有其他元素,则元素a添加成功。
如果此位置上有其他元素b(或以链表形式存在的多个元素),则比较元素a与元素b的hash值:
如果 hash值不相同,则元素a添加成功
如果hash值相同,进而需要调用元素a所在类的equals()方法: 返回true,添加失败;
对于添加成功的情况2和情况3而言:元素a与已经存在指定索引位置上数据以链表的方式存储:七上八下
向Set中添加的数据,其所在类一定要重写hashCode()和equals();重写的hashCode()和equals()尽可能保持一致性:相等的对象必须具有相等的散列码
public void test3() {
HashSet set = new HashSet() ;
Person p1 = new Person(1001,"AA");
Person p2 = new Person(1002,"BB");
set.add(p1);
set.add(p2);
p1.name = "CC";
// 将p1的值改变,但是没有重新计算哈希值,其原哈希值仍然是用"AA"算出来的
//修改了属性后,仍然是放在原位置
set.remove(p1);// 此时计算哈希值,用的name是cc,因此,没有删成功
System.out.println(set) ;//输出p1和p2
set.add(1001,"CC"); // 此时加的时候是拿CC计算的哈希值去放的,因此,可以添加成功,且是放在数组上的
System.out.println(set) ;// 输出三个
set.add(1001,"AA"); // 添加成功,此时计算出来哈希值,放在原p1的数组位置上,再调用equals()方法,因为不相等,再用链表挂上
System.out.println(set) ; // 输出四个
}
class Person{
//重写了equals和hashcode
int id;
String name ;
}
LinkedHashSet:作为HashSet的子类:遍历其内部数据时,可以按照添加的顺序遍历;对于频繁的遍历操作,其效率高于HashSet();
TreeSet:可以按照添加对象的指定属性,进行排序。
自然排序中,比较两个对象是否相同的标准为:compareTo() 返回0,不再是equals();
定制排序相同
边栏推荐
- Teach you to locate online MySQL slow query problem hand by hand, package teaching package meeting
- Auto.js special positioning control method cannot perform blocking operations on the ui thread, please use setTimeout instead
- Rasa 3.x 学习系列- Rasa - Issues 4792 socket debug logs clog up debug feed学习笔记
- NLP commonly used Backbone model cheat sheet (1)
- 优秀论文以及思路分析01
- Day117. Shangyitong: Generate registered order module
- 精心整理16条MySQL使用规范,减少80%问题,推荐分享给团队
- 有奖提问|《新程序员》专访“Apache之父”Brian Behlendorf
- DownMusic总结记录
- Understand the next hop address in the network topology in seconds
猜你喜欢
随机推荐
2022 China Eye Expo, Shandong Eye Health Exhibition, Vision Correction Instrument Exhibition, Eye Care Products Exhibition
即席查询—— Kylin使用
德邦科技通过注册:年营收5.8亿 国家集成电路基金为大股东
【QT】自定义工程封装成DLL并如何调用(带ui界面的)
机器学习-特征映射方法
谷歌 Chrome 浏览器 104 正式版发布:加快网页加载,蓝牙 API 改进
vant-swipe adaptive picture height + picture preview
Oracle 暴跌,倒下了!
新公链时代的跨链安全性解决方案
【系统架构设计师】第三章 数据库系统
js基础知识整理之 —— Date和定时器
DataGuard日常维护常见问题之数据同步异常
一套开源的可快速搭建自己的物联网/智能家居系统源码
定了!8月起,网易将为本号粉丝提供数据分析培训,费用全免!
Database auditing - an essential part of network security
DB2数据库-获取表结构异常:[jcc][t4][1065][12306][4.26.14]CharConvertionException ERRORCODE=-4220,SQLSTATE=null
中科磁业IPO过会:年营收5.5亿 吴中平家族持股85%
线性DP
科捷智能冲刺科创板:年营收12.8亿 顺丰与日日顺是股东
HVV红队 | 渗透测试思路整理