BigDecimal类

BigDecimal类

概述:float类型和double很容易丢失精度,为了能精确地表示计算浮点数,java提供了BigDecimal

构造方法:public BigDecimal(String val)
成员方法:
public BigDecimal add(BigDecimal augend)//加
public BigDecimal subtract(BigDecimal subtrahend)//减
public BigDecimal multiply(BigDecimal multiplicand)//乘
public BigDecimal divide(BigDecimal divisor)//除法
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)//scale 小数点后面保留几位
// roundingMode 取舍模式 比如四舍五入
package com.itheima.demo8;

import java.math.BigDecimal;

public class test1 {
    public static void main(String[] args) {
        BigDecimal b1 = new BigDecimal("11");
        BigDecimal b2 = new BigDecimal("300");
        BigDecimal d = b2.divide(b1,3,2);
        System.out.println(d);


    }
}

Date类

概述:类Date表示特定的瞬间,精确到毫秒

构造方法:
public Date()
public Date(long date)  //把一个long类型的毫秒值转换成一个日期对象
public long getTime():	获取一个日期对象毫秒值
	
public void setTime(long time):	给一个日期对象设置上指定的毫秒值 例:date.setTime(1000 * 60 * 60) ;
package com.itheima.demo8;

import java.util.Date;

public class test3 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        //Sun Aug 02 16:48:28 CST 2020
        // 给 1970 年 1 月 1 日 00:00:00 计算机元年加上相应的时间量。
        Date date1 = new Date(1000 * 60 * 60);
        System.out.println(date1);//Thu Jan 01 09:00:00 CST 1970


    }
}

Date ---- long 的转换

调用getTime方法

long — Date 的转换

可以使用构造方法
setTime(long time)

package com.itheima.demo8;

import java.util.Date;

public class test4 {
    public static void main(String[] args) {
        Date date = new Date();
        //Date ---- long 的转换
        long time = date.getTime();
        System.out.println(time);
//long --- Date 的转换

        date.setTime(10000);
        System.out.println(date);

    }
}

SimpleDateFormat类实现日期和字符串的相互转换

SimpleDateFormat:可以把一个日期对象格式化成一个文本(字符串),也可以把一个日期对象解析成一个日期对象

构造方法:
public SimpleDateFormat():使用默认的模式来创建一个SimpleDateFOrmat对象
public SimpleDateFormat(String pattern):使用指定的模式(规则比yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象
规则的定义
y
M
d
H
m
s
成员方法:
public String format(Data date):把一个日期对象格式化成一个字符串
public Data Parse(String dateStr):把一个日期字符串解析成一个日期对象,注意要以指定格式解析
package com.itheima.demo8;


import java.text.SimpleDateFormat;
import java.util.Date;

public class test5 {
    public static void main(String[] args) {

        Date date = new Date();
        SimpleDateFormat sd = new SimpleDateFormat();//空参构造,按照默认格式进行转换。
//format(date)  把日期格式化成一个指定字符串
        String s = sd.format(date);
        System.out.println(s);
        SimpleDateFormat sd1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//有参构造,根据自己指定的模式进行转换
        String s1 = sd1.format(date);
        System.out.println(s1);

    }
}

package com.itheima.demo8;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

//	需求:算一下你来到这个世界多少天?
//分析:键盘录入一个生日
//把这个日期字符串对象解析成一个日期对象
//获取日期对象的毫秒值
//获取当前系统的毫秒值
//获取差值
//把差值转换成对应的天数   差值/1000/60/60/24;
package com.itheima.demo8;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

//	需求:算一下你来到这个世界多少天?
//分析:
public class test6 {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的生日");
        String s = sc.nextLine();
        SimpleDateFormat sd = new SimpleDateFormat("yyyy/MM/dd");
        Date p = sd.parse(s);
        long time = p.getTime();
        long now = System.currentTimeMillis();
        long l = (now - time) / 1000 / 60 / 60 / 24;
        System.out.println("您已经来到世界上"+l+"天了");

    }
}

calendar类

calendar类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象。它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

成员方法
public static Calendar getInstance()使用默认时区和语言环境获得一个日历对象
public int get(int field)	获得给定日历字段对应的值 field通过Calendar提供的字段来拿
package com.itheima.demo8;

import java.util.Calendar;

public class test7 {
    public static void main(String[] args) {
        Calendar instance = Calendar.getInstance();
       // System.out.println(instance);
        int year = instance.get(Calendar.YEAR);
        //System.out.println(year);
        int month = instance.get(Calendar.MONTH);
        int day = instance.get(Calendar.DAY_OF_MONTH);
        int hour = instance.get(Calendar.HOUR);
        int second = instance.get(Calendar.SECOND);
        int minute = instance.get(Calendar.MINUTE);
        System.out.println(year+"年"+month+"月"+day+"日 "+hour+"时"+second+"分"+minute+"秒");



    }
}

calender类的add()和set()方法
成员方法
public void add(int field,int amount)		根据日历的规则,为给定的日历字段添加或减去指定的时间量
public final void set(int year,int month,int date)	设置日历时间 年月日
package com.itheima.demo8;

import java.util.Calendar;
import java.util.Scanner;

//需求:键盘录入任意一个年份,获取任意一年的二月有多少天
       
public class test8 {
    public static void main(String[] args) {
        //键盘录入一个年份
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个年份");
        //获取键盘录入的数据
        int year = sc.nextInt();
        //创建calender对象
        Calendar instance = Calendar.getInstance();
        //把这个calendar的时间设置为a中录入的年的3月1号
        instance.set(year,2,1);
        //向前推算一天
        instance.add(Calendar.DAY_OF_MONTH,-1);
        //获取月中的天
        int day = instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);
 if(year%4==0&&year%100!=0||year%400==0){
            System.out.println(year+"年是闰年");
        }


    }
}

BigInterger可以让超过long范围内的数据进行运算
构造方法
public BigInteger(String val)
成员方法
public BigInteger add(BigInteger val)//+
public BigInteger subtract(BigInteger val)//-
public BigInteger multiply(BigInteger val)//*
public BigInteger divide(BigInteger val)//除
public BigInteger[] divideAndRemainder(BigInteger val)//取除数和余数


package com.itheima.demo8;

import java.math.BigInteger;

public class test9 {
    public static void main(String[] args) {
        BigInteger bi1 = new BigInteger("300");
        BigInteger bi2 = new BigInteger("20");
        BigInteger add = bi1.add(bi2);
        BigInteger subtract = bi1.subtract(bi2);
        BigInteger multiply = bi1.multiply(bi2);
        BigInteger divide = bi1.divide(bi2);
        BigInteger[] bigIntegers = bi1.divideAndRemainder(bi2);
        System.out.println(add);
        System.out.println(subtract);
        System.out.println(multiply);
        System.out.println(divide);
        System.out.println(bigIntegers);


    }
}

对象数组

package com.itheima.demo9;

public class student {
    private String name;
    private int age;

    public student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
package com.itheima.demo9;
//我有3个学生,请把这个3个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息。
public class test {
    public static void main(String[] args) {
        student s1 = new student("cherry", 22);
        student s2 = new student("布莱妮", 30);
        student s3 = new student("Lisa", 25);
       student[] arr = new student[]{s1,s2,s3};
        for (int i = 0; i < arr.length; i++) {
            student student = arr[i];
            System.out.println(student);

        }



    }
}
//对象数组即可以存储基本数据类型也可以存储引用数据类型
//数组容器的不好之处:就是对容器的元素,进行操作时,不够方便,比如增删数组中的元素,不太方便,因为数组一旦定义,长度就不能改变

集合框架

面向对象对事物的体现都是以对象的形式,为了方便对多个对象的操作,java提供了集合类。

数组和集合的区别
  1. 数组的长度一旦定义了就是固定的,而集合的长度可变。
  2. 数组既可以存储基本数据类型也可以存储引用数据类型;而集合只能存储引用数据类型。
  3. 数组只能存储同种数据类型的元素,而集合可以存储不同类型的元素。
Collection集合

Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection
元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 SetList)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

添加功能:
boolean add(Object obj):添加一个元素
boolean addAll(Collection c):添加一个集合的元素  (给一个集合添加进另一个集合中的所有元素)
删除功能
void clear():移除所有元素
boolean remove(Object o):移除一个元素
boolean removeAll(Collection c):移除一个集合的元素(移除一个以上返回的就是true) 删除的元素是两个集合的交集元素 如果没有交集元素 则删除失败 返回false
判断功能
boolean contains(Object o):判断集合中是否包含指定的元素	
boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(这个集合 包含 另一个集合中所有的元素才算包含 才返回true)
比如:1,2,3 containsAll 12=true   1,2,3 containsAll 2,3,4=false
boolean isEmpty():判断集合是否为空
获取功能
Iterator<E> iterator()
长度功能
int size():元素的个数
交集功能
例如:A集合对B集合取交集,获取到的交集元素在A集合中。返回的布尔值表示的是A集合是否发生变化 
boolean retainAll(Collection c):获取两个集合的交集元素(交集:两个集合都有的元素)
把集合转换为数组
Object[] toArray()
package com.itheima.demo9;

import java.util.ArrayList;
import java.util.Collection;

public class test1 {
    public static void main(String[] args) {
        //定义一个集合
        Collection collection = new ArrayList();
        //往集合中添加元素

        collection.add("Lisa");
        collection.add("Rose");
        collection.add("Jennie");
        collection.add("Jisoo");
        //删除元素
        collection.remove("Lisa");
        //清除集合中的所有元素
       // collection.clear();
        //判断集合中是否包含指定元素
        boolean s = collection.contains("lias");
        System.out.println(s);
        //判断集合是否为空
        boolean s2 = collection.isEmpty();
        System.out.println(s2);
        //获取集合长度
        int i = collection.size();
        System.out.println(i);

        System.out.println(collection);

    }
}

package com.itheima.demo9;

import java.util.ArrayList;
import java.util.Collection;

public class test2 {
    public static void main(String[] args) {
        Collection collection1 = new ArrayList();
        //往集合中添加元素

        collection1.add("Lisa");
        collection1.add("Rose");
        collection1.add("Jennie");
        collection1.add("Jisoo");


      Collection collection2 = new ArrayList();
      collection2.add("杨幂");
        collection2.add("林允儿");
      collection2.add("cherry");
        collection2.add("Lisa");
//判断两个集合中的元素是否归并到了一个里面
        boolean b = collection1.addAll(collection2);
        System.out.println(b);
        //移除一个集合的交集元素, 删除的元素是两个集合的交集元素
        boolean b1 = collection1.removeAll(collection2);
        System.out.println(b1);
        System.out.println(collection1);//[Rose, Jennie, Jisoo]
        System.out.println(collection2);//[杨幂, 林允儿, cherry, Lisa]
        //判断一个集合中是否包含另一个集合中的所有元素,这个集合 包含 另一个集合中所有的元素才算包含 才返回true
        boolean b2 = collection1.containsAll(collection2);
        System.out.println(b2);

        boolean b3 = collection1.retainAll(collection2);
        System.out.println(b3);
        //A集合对B集合取交集,获取到的交集元素在A集合中。返回的布尔值表示的是A集合是否发生变化 ,获取两个集合的交集元素(交集:两个集合都有的元素)
        System.out.println(collection1);
        System.out.println(collection2);

    }
}

集合中定义数组定义成object类

package com.itheima.demo9;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class test3 {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        //往集合中添加元素

        collection.add("Lisa");
        collection.add("Rose");
        collection.add("Jennie");
        collection.add("Jisoo");
        Iterator it = collection.iterator();//定义一个迭代器
        //  返回在此 collection 的元素上进行迭代的迭代器。
        while (it.hasNext()) {
            Object o = it.next();
            System.out.println(o);
        }
    }
}

Object object = collection.toArray() //把集合转换成数组。

//将集合元素转换成数组元素
Object[] objects = collection.toArray();

List

概述:元素有序,并且每一个元素都存在一个索引,元素可以重复,

List集合的特有功能概述
	void add(int index,E element):	在指定索引处添加元素
	E remove(int index):移除指定索引处的元素  返回的是移除的元素
	E get(int index):获取指定索引处的元素
	E set(int index,E element):更改指定索引处的元素 返回的而是被替换的元素
	int indexOf(Object o) 
          返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。 
    int lastIndexOf(Object o) 
          返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。       
package com.itheima.demo9;

import java.util.ArrayList;
import java.util.List;

public class test6 {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("lisa");
        list.add("cherry");
        list.add("sh");
        list.add("lisa");
        list.add(0,"hahah");//在指定索引处添加元素
        list.remove(1);//移除指定索引处的元素  返回的是移除的元素
        Object o = list.get(0);//获取指定索引处的元素
        System.out.println(o);
        list.set(0,"java");//更改指定索引处的元素 返回的而是被替换的元素
        int i = list.lastIndexOf("lisa");// 返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。
        System.out.println(i);
 Object obj = list.get(list.size() - 1);//获取最后一个位置处的元素
        System.out.println(list);
    }
}

ListIterator

ListIterator 继承自Iterator  可以使用Iterator中的方法
ListIterator的特有功能
boolean hasPrevious():			是否存在前一个元素
E previous():					返回列表中的前一个元素
以上两个方法可以实现反向遍历 但是注意 要完成反向遍历之前 要先进行正向遍历  这样指针才能移到最后
如果直接反向遍历是没有效果的  因为指针默认位置就在最前面 他前面没有元素
package com.itheima.demo9;

import java.util.ArrayList;
//案例演示
       // 需求:我有一个集合,请问,我想判断里面有没有 "world" 这个元素,
        //如果有,我就添加一个 "javaee" 元素,请写代码实现。*/
public class test5 {
    public static void main(String[] args) {
        ArrayList<Object> list = new ArrayList<>();
        list.add("word");
        list.add("aa");
        list.add("bb");
        if (list.contains("word")) {
            list.add("javaee");
            System.out.println(list);
        }
    }
}

并发修改异常
package com.itheima.demo9;
import java.util.ArrayList;
import java.util.ListIterator;

public class test7 {
    public static void main(String[] args) {
        ArrayList<Object> list = new ArrayList<>();
        list.add("word");
        list.add("aa");
        list.add("bb");
        //ConcurrentModificationException
        ListIterator iterator =list.listIterator();

        while(iterator.hasNext()){
            Object next = iterator.next();
            if(next.equals("word")){
                iterator.add("javaee");
                System.out.println(list);
            }

        }
    }
}
//ConcurrentModificationException:出现这个的原因:迭代依赖于集合,当我们往集合中添加好了元素之后获取迭代器,那么迭代器就已经知道了集合的元素个数,在遍历的时候又给集合中添加元素,用的是集合的方法,那么迭代器就会报错,,我们用listiterator迭代器遍历,用迭代器自带的元素添加元素,就不会报错了

桟和队列

数据结构其实就是存储数据的格式。

分类:桟,队列,数组,链表。树,哈希表

桟 的特点:先进后出

堆的特点:先进先出

数组和链表

数组的特点:查询快,增删慢

链表的特点:查询慢,增删块。

List的三个子类的特点
ArrayList:
		底层数据结构是数组,查询快,增删慢。
		线程不安全,效率高。
Vector:
		底层数据结构是数组,查询快,增删慢。
		线程安全,效率低。
LinkedList:
		底层数据结构是链表,查询慢,增删快。
		线程不安全,效率高。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值