【*】Objets类
(1)JDK7 添加的工具类
(2)常用的方法
Objects.equals([Object]a, [Object]b);//可以防止空指针
【*】Date
(1)时间原点/格林威治[英国]时间:1970.01.01 00:00,中国在东八区,所以中国的时间原点是1970.01.01 08:00
(2)Date:精确到毫秒
(3)重要的方法
Date date = new Date();//无参构造方法;获取当前系统时间
Date date2 = new Date([long]param);//long类型参数的构造方法,将毫秒值转化成时间
date.getTime();//将系统当前时间转化为毫秒值的成员方法
date.before(date2);//比较时间大小,返回布尔值date是否在date2之前
date.after(date2);//比较时间大小,返回布尔值date是否在date2之后
【*】DateFormat
(1)是日期/时间格式化子类的抽象类
(2)方法
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定时间的格式
String str = format.format([Date]date);//将日期格按照式转化为文本
Date date = format.parse(str);//将文本按照格式解析成日期
【*】Calendar
(1)Calendar为抽象类,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象
Calendar calendar = Calendar.getInstance();//创建日期类
(2)常用的方法
public int get(int field):返回给定日历字段的值。
public void set(int field, int value):将给定的日历字段设置为给定值。
public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
get方法
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);//获取年
int month = c.get(Calendar.MONTH) + 1;//获取月,国外的月份是0-11月,国内是1-12,所以要加1
int date = c.get(Calendar.DATE);//获取日
set方法
c.set(Calendar.YEAR,9999);//设置年为9999
c.set(Calendar.MONTH,9);//设置月为9月
c.set(Calendar.DATE,9);//设置日9日
c.set(8888,8,8);//同时设置年月日,可以使用set的重载方法
add方法
calendar.add(Calendar.YEAR,2);//把年增加2年
calendar.add(Calendar.MONTH,-3);//把月份减少3个月
calendar.add(Calendar.DATE,-3);//把天减少3天
【*】System
(1)获取与系统相关的信息或系统级操作
(2)常用的方法
System.currentTimeMillis();//格林威治时间到当前系统时间经历了多少毫秒
/*
src - 源数组。
srcPos - 源数组中的起始位置(起始索引)。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
*/
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)//将数组中指定的数据拷贝到另一个数组中。
【*】StringBuilder
(1)字符串缓冲区,字符串是不能变化的,每次拼接都是在创建新的对象,但是StringBuilder是可以变化的,所以可以提升效率
(1)String类:字符串是常量,在创建后不能改变,底层是一个被final修饰的数组,不能改变
private final byte[] value;
进行字符串的相加,就会在内存中创建多个对象
String str = "a" + "b" + "c"
会创建五个byte[],分别存储"a","b","c","ab","abc"
(2)StringBuilder又称为可变字符序列,是个字符串的缓冲区,即它是一个容器,它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。原(默认16字符空间,超过自动扩充)
(2)常用的构造方法
public StringBuilder():构造一个空的StringBuilder容器。
public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。
(3)常用的方法
public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。
public String toString():将当前StringBuilder对象转换为String对象。
(4)简单使用
StringBuilder builder = new StringBuilder();
// 可以添加任何类型
builder.append("hello");
builder.append("world");
builder.append(true);
builder.append(100);
//输出结果helloworldtrue100,可以将其他类型转化成字符串
// 链式创建
StringBuilder sb = new StringBuilder("Hello").append("World").append("Java");
//输出HelloWorldJava
【*】包装类
基本类型 | 对应的包装类(位于java.lang包中) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:
-
装箱:从基本类型转换为对应的包装类对象。
-
拆箱:从包装类对象转换为对应的基本类型。
用Integer与 int为例:(看懂代码即可)
基本数值---->包装对象
Integer i = new Integer(4);//使用构造函数函数
Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法
包装对象---->基本数值
int num = i.intValue();
【*】基本数据类型与字符串之间的相互转化
(1)最简单的方式:其他类型转化为字符串
基本类型直接与””相连接即可;如:34+""
(2)字符串转化成其他类型
public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。
public static short parseShort(String s):将字符串参数转换为对应的short基本类型。
public static int parseInt(String s):将字符串参数转换为对应的int基本类型。
public static long parseLong(String s):将字符串参数转换为对应的long基本类型。
public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。
public static double parseDouble(String s):将字符串参数转换为对应的double基本类型。
public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean基本类型。
【*】Collection集合
(1)Collection是所有单列集合的父接口 ,单列集合java.util.Collection和双列集合java.util.Map,他有两个中要的子接口java.util.List和java.util.Set
(2)Collection常用的集合
* `public boolean add(E e)`: 把给定的对象添加到当前集合中 。
* `public void clear()` :清空集合中所有的元素。
* `public boolean remove(E e)`: 把给定的对象在当前集合中删除。
* `public boolean contains(E e)`: 判断当前集合中是否包含给定的对象。
* `public boolean isEmpty()`: 判断当前集合是否为空。
* `public int size()`: 返回集合中元素的个数。
* `public Object[] toArray()`: 把集合中的元素,存储到数组中。
(3)使用示例
public class Demo1Collection {
public static void main(String[] args) {
Collection<String> coll = new ArrayList<String>();
// 添加功能 boolean add(String s)
coll.add("扫地僧");
// 包含
System.out.println("判断 扫地僧 是否在集合中"+coll.contains("扫地僧"));
// 删除
System.out.println("删除石破天:"+coll.remove("石破天"));
// 集合大小
System.out.println("集合中有"+coll.size()+"个元素");
Object[] objects = coll.toArray();
// 清空集合
coll.clear();
// 判断集合是否为空
System.out.println(coll.isEmpty());
}
}
【*】Iterator迭代器
Iterator`接口也是Java集合中的一员,Iterator主要用于迭代访问(即遍历)Collection中的元素,Iterator对象也被称为迭代器,Collection继承了Iterator接口
(1)相关的方法
//获取迭代器:获取集合对应的迭代器,用来遍历集合中的元素的。
public Iterator iterator()
//判断集合中是否有下一个元素,如果仍有元素可以迭代,则返回 true
public boolean hasNext()
//返回迭代的下一个元素
public E next()
(2)代码案例
public class IteratorDemo {
public static void main(String[] args) {
// 使用多态方式 创建对象
Collection<String> coll = new ArrayList<String>();
// 添加元素到集合
coll.add("串串星人");
coll.add("吐槽星人");
coll.add("汪星人");
//遍历
//使用迭代器 遍历 每个集合对象都有自己的迭代器
Iterator<String> it = coll.iterator();
// 泛型指的是 迭代出 元素的数据类型
while(it.hasNext()){ //判断是否有迭代元素
String s = it.next();//获取迭代出的元素
System.out.println(s);
}
}
}
(3)注意事项
在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会发生java.util.NoSuchElementException没有集合元素的错误,蓄意需要使用hasNext()方法判断是否有下一个元素
(4)迭代器的实现原理
(1)首先通过调用集合的iterator()方法获得迭代器对象,
然后使用hashNext()方法判断集合中是否存在下一个元素,
如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,
停止遍历元素
(2)在调用Iterator的next方法之前,迭代器的索引位于第一个元素之前,
不指向任何元素,当第一次调用迭代器的next方法后,
迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,
当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,
依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历
(5)图示
(6)删除元素不可以使用集合对象直接调用remove()方法,会报错,需要使用迭代器自带的remove()方法进行删除
【*】泛型
创建对象时就明确使用什么数据类型,避免代码运行时因为集合存储的数据类型不一致,导致类型转换异常,将运行时异常提升到了编译期
(1)使用方式
//规定了向ArryList中存放的元素只能是String类型
ArrayList<String> list = new ArrayList<String>();
//自定义泛型:这里的P是一个自定义的对象,ArryList中只能存储Person对象
ArrayList<Person> list = new ArrayList<Person>();
(3)创建含有泛型的方法
//参数类型是L,只有方法指定了泛型L,才可以在方法的参数中使用L,否则会报错
public <L> void show(L l){
System.out.println(l);
}
//使用泛型方法,传递何种数据类型,参数就是何种数据类型
show(1);
show("LBY");
show(Person);
(4)创建含有泛型的接口
//定义含有泛型的接口
public Interface myInterface<I>{
void method(I i);
}