Java常用的工具类

【*】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包中)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:

  • 装箱:从基本类型转换为对应的包装类对象。

  • 拆箱:从包装类对象转换为对应的基本类型。

用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);
}    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperLBY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值