java数据工具类

一、数学相关类

1.Math类

介绍:概述数据工具类

作用:主要用于数学运算

特点:构造方法私有了

方法都是静态的

使用:类名直接调用

public class Demo01Math {
    public static void main(String[] args) {
        //求参数绝对值
        System.out.println(Math.abs(-10));
        //向上取整
        System.out.println(Math.ceil(3.6));
        //向下取整
        System.out.println(Math.floor(3.6));
        //四舍五入
        System.out.println(Math.round(3.6));
        System.out.println(Math.round(-2.8));
        //求两数之间的较大值
        System.out.println(Math.max(10,20));
        //求两数之间的较小值
        System.out.println(Math.min(10,20));


    }
}

2.BigInteger类

概述:我们操作数据,将来的数据有可能非常大,大到比long还要大,这种数据我们称之为”对象“

作用:处理超大的整数

构造:BigInteger(String val)->参数个数必须是数字型

方法:

        BigInteger  add(BigInteger  val)  返回值为(this+val)的BigInteger 

        BigInteger  subtract(BigInteger  val)返回值为(this-val)的BigInteger

        BigInteger   multiply(BigInteger  val)返回值为(this*val)的BigInteger

        BigInteger    divide(BigInteger  val)返回值为(this / val)的BigInteger

int intValue()将BigInteger转成int

long longValue()将BigInteger转成long

public class Demo02BigInteger {
    public static void main(String[] args) {
        BigInteger b1=new BigInteger("12122121555555555555555555555");
        BigInteger b2=new BigInteger("12122121555555555555555555555");

        System.out.println(b1.add(b2));

        System.out.println(b1.subtract(b2));

        System.out.println(b1.multiply(b2));

        System.out.println(b1.divide(b2));
    }
}

3.BigDecimal类

概述:我们知道直接用float或者double做运算会出现精度损失的问题,所以将来设计到钱,我们就不能用float或者double直接来做运算,所以我们用BigDecimal

构造方法:BigDecimal(String  val)->val必须要是数字形式

常用方法:

  static  BigDecimal   valueOf(double  val)->此方法初始化小数时可以传入double型整数

       BigDecimal  add(BigDecimal val)  返回值为(this+val)的BigDecimal

       BigDecimal subtract(BigDecimal  val)返回值为(this-val)的BigDecimal

      BigDecimal  multiply(BigDecimal  val)返回值为(this*val)的BigDecimal

      BigDecimal   divide(BigDecimal  val)返回值为(this / val)的BigDecimal

       BigDecimal   divide(BigDecimal  divisor,int  scale,int  roundingMode)

                                                                   divisor:除号后面的那个数

                                                                   scale:指定保留几位小数

                                                                   roundingMode:取舍方式

                                                                             static  int   ROUND_UP->向上加1

                                                                             static  int   ROUND_DOWN->直接舍去

                                                                              static  int   ROUND_HALF_UP->四舍五入

import java.math.BigDecimal;

public class Demo03BigDecimal {
    public static void main(String[] args) {
      //  big01();
      //  big02();
        big03();


    }

    private static void big03() {
        BigDecimal b1=new BigDecimal("3.55");
      BigDecimal b2=new BigDecimal("2.12");
        BigDecimal divide = b1.divide(b2, 2, BigDecimal.ROUND_UP);
        System.out.println(divide);
        double v = divide.doubleValue();
        System.out.println(v);

    }

    private static void big02() {
        BigDecimal b1=new BigDecimal("3.55");
     //   BigDecimal b2=new BigDecimal("2.12");
       BigDecimal b2=BigDecimal.valueOf(2.12);

        BigDecimal add = b1.add(b2);
        System.out.println("add="+add);

        BigDecimal subtract=b1.subtract(b2);
        System.out.println("subtract="+subtract);

        BigDecimal multiply = b1.multiply(b2);
        System.out.println(multiply);

        BigDecimal divide = b1.divide(b2);
        System.out.println(divide);


    }

    private static void big01() {
        float a=3.55F;
        float b=2.12F;

        float result=a-b;
        System.out.println("result="+result);

    }
}

二、日期相关类

1.Date日期类

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

常识:

  1000毫秒=1秒

  时间原点:1970年1月1日 0时0分0秒(UNIX系统起始时间)叫做格林威治时间在0时区上

时区:北京位于东八区,一个时区经度差15度时间相差一个小时所以北京时间比时间原点所在时区差8个小时

Date类使用

Date()->获取当前系统时间

Date(long  time)->获取指定时间,传递毫秒值->从时间原点开始算

Date类的常用方法

Void setTime(long  time)->设置时间,传递毫秒值->从时间原点开始算

Long getTime()->获取时间,返回毫秒值

import java.util.Date;

public class Demo01 {
    public static void main(String[] args) {
        date01();
        date02();


    }

    private static void date02() {
        Date date = new Date();

//        Void setTime(long  time)->设置时间,传递毫秒值->从时间原点开始算

        date.setTime(1000L);
        long time = date.getTime();
//        Long getTime()->获取时间,返回毫秒值
        System.out.println(time);
    }

    private static void date01() {
//        Date()->获取当前系统时间

        Date date = new Date();
        System.out.println("date1="+date);


//        Date(long  time)->获取指定时间,传递毫秒值->从时间原点开始算

        Date date1 = new Date(1000L);
        System.out.println("date2="+date1);
    }
}

2.Calendar日历类

概述:日历类,抽象类

获取:calendar中的方法:

  Static  Calendar  getInstence()

月份对比:

国外:0 1 2 3 4 5 6 7 8 9 10 11

国内:1 2 3 4 5 6 7 8 9 10 11 12

字段值含义
YEAR
MONTH月(从0开始,可以+1使用)
DAY_OF_MONTH月中的天(几号)
HOUR时(12小时前)
HOUR_OF_DAY时(24小时制)
MINUTE
SECOND
DAY_OF_WEEK

周中的天(周几,周日为1,可以-1使用)

常用方法:

   int  get (int  field)->返回给定日历字段的值

  void  set(int  field,int  value):将给定的日历字段设置为指定的值

   void add(int field,int amount):根据日历的规则,为给定的日历字段添加或者减去指定的时间量

  Date  getTime():将Calendar转成Date对象

field:代表的是日历字段->年  月   日   星期等,都是静态的

扩展方法:

    void  set(int  year ,int  month,int  date)->直接设置年月日

需求:键盘录入一个年份,判断这一年是闰年,还是平年

import javax.sql.DataSource;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Demo02Calendar {
    public static void main(String[] args) {
       // calendar01();
       // calendar02();
        calendar03();
    }

    private static void calendar03() {
        Calendar calendar=Calendar.getInstance();

        Scanner sc=new Scanner(System.in);
        int year=sc.nextInt();
        calendar.set(year,2,1);
        calendar.add(Calendar.DATE,-1);

        int day=calendar.get(Calendar.DATE);

        if (day==29){
            System.out.println("闰年");
        }else {
            System.out.println("平年");
        }


    }

    private static void calendar02() {
        Calendar calendar=Calendar.getInstance();//多态
        int year = calendar.get(Calendar.YEAR);
        System.out.println("YEAR="+year);
//        calendar.set(Calendar.YEAR,2028);
//        System.out.println(calendar.get(Calendar.YEAR));

        calendar.add(Calendar.YEAR,-1);
        System.out.println(calendar.get(Calendar.YEAR));

        Date date=calendar.getTime();
        System.out.println("date="+date);


    }

    private static void calendar01() {
        Calendar calendar=Calendar.getInstance();
        System.out.println(calendar);
    }
}

3.日期格式化类

SimpleDateFormat日期格式化类

构造:SimpleDateFormat(String  pattern)

pattern代表的是什么:代表的是我们自己指定的日期格式

字母不能改变但是中间的连接符我们可以改变

yyyy-MM-dd  HH:mm:ss

时间字母表示说明
y
M
d
H
m
s

常用方法:

   String format(Date date)->将Date对象按照指定的格式转成String

  Date  parse(String source)->将符合日期格式的字符串转成Date对象

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

public class Demo03SimpleDateFormat {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String  time1=sdf.format(new Date());
        System.out.println("time1="+time1);

        String time2="2000-10-10 10:10:10";
        Date date = sdf.parse(time2);
        System.out.println("date="+date);


    }
}

4.工具类(System类)

概述:系统相关类,是一个工具类

特点:构造私有,不能利用构造方法new对象

     方法都是静态的

使用:类名直接调用

方法说明
static  long  currentTimeMillis()返回以毫秒为单位的当前时间,可以测效率
static  void exit(int status)终止当前正在运行的java虚拟机
static  void  arraycopy(Object src,int srcPos,Object  dest,int destPos,int length)

数组复制

src:源数组

srcPos:从源数组的哪个索引开始复制

dest:目标数组

destPos:从目标数组哪个索引开始粘贴

length:复制多少个元素

public class Demo01System {
    public static void main(String[] args) {
      //  currentTimeMills();

       // exit();

        arraycopy();


    }

    private static void arraycopy() {
        int[] arr={1,2,3,4,5};
        int[] arr1=new int[10];
        System.arraycopy(arr,0,arr1,0,5);
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i]+" ");
        }

    }

    private static void exit(){
        for (int i=0;i<100;i++){
            if (i==5){
                System.exit(0);
            }
            System.out.println("helloworld"+i);
        }


    }

    private static void currentTimeMills() {
        long time=System.currentTimeMillis();
        System.out.println(time);
    }
}

三、Arrays数组工具类

特点:构造私有、方法静态

使用:类名直接调用

方法说明
static  String  toString(int[] a)按照格式打印数组元素[元素1,元素2,.....]
static void sort(int[] a)升序排序
static int  binarySearch(int[]a,int key)二分查找
static  int[]coptOf(int[] original,int  newLength)数组扩容
import java.util.Arrays;

public class Demo02Array {
    public static void main(String[] args) {
        int[] arr={1,2,8,22,5,8};
        System.out.println(Arrays.toString(arr));

        System.out.println("=============");
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));

        System.out.println("====================");
       int[] arr1={1,2,3,4,5,67};
        int index = Arrays.binarySearch(arr1, 3);
        System.out.println(index);

        System.out.println("===============");
        int[] arr2={1,2,3,4,5};
        int[] ints = Arrays.copyOf(arr2, 10);
        System.out.println(Arrays.toString(ints));
    }
}

四、包装类

基本数据类型对应的引用数据类型(包装类)

概述:就是基本类型对应的类(包装类),我们需要基本类型转成包装类,从而让基本类型拥有类的特性(说白了,将基本类型转成包装类之后,就可以使用包装类中的方法操作数据)

为什么要学包装类:

   将来有一些特定场景,特定操作,比如调用方法传递包装类。比如:ArrayList集合,里面有一个方法add(Integer i),此时我们不能调用add方法之后传递基本类型,因为引用类型不能直接接收基本类型的值,就需要先将基本类型转成包装类,传递到add方法中

  将来我们还可以将包装类转成基本类型:包装类不能直接使用+-*/,所以需要将包装类转成基本类型,才使用+-*/

基本类型

包装类

byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharactor
booleanBoolean

1.Integer基本使用(其他包装类运用和这个一样)

概述:Integer时int包装类

构造:

  Ingeter(int value)

Ingeter(String s)S必须时数字形式

import java.util.ArrayList;

public class Demo01integer {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);//这里发生了类型转换,自动将基本类型转成了包装类
    }
}
public class Demo02Ingeter {
    public static void main(String[] args) {
        Integer integer = new Integer(10);
        System.out.println(integer);


        Integer integer1 = new Integer("10");
        System.out.println(integer1);


        Boolean aTrue = new Boolean("true");
        System.out.println(aTrue);


    }
}

装箱:将基本类型转成对应的包装类(推荐使用)

拆箱:将包装类转成基本类型,方法:int  intvalue();

public class Demo03Integer {
    public static void main(String[] args) {
        Integer integer = Integer.valueOf(10);
        System.out.println(integer);

        Integer integer1 = Integer.valueOf("100");
        System.out.println(integer1);


        int i = integer.intValue();
        System.out.println("(i+10)="+(i+10));
    }
}

拆箱和装箱很多时候都是自动完成的

public class Demo04Integer {
    public static void main(String[] args) {
        Integer i=10;//发生了自动装箱
        Integer sum=i+10;//自动发生了拆箱
        System.out.println(sum);
    }
}

2.基本类型和String之间的转换

方式1:+ 拼接

方式2:String中的静态方法    static  String  valueOf(int  i)

String转成基本数据类型

每个包装类都有一个类似的方法:parsexxxx

public class Demo05Parse {
    public static void main(String[] args) {
        method01();

        method02();
    }

    private static void method02() {
        int number=Integer.parseInt("111");
        System.out.println(number+1);


    }

    private static void method01() {
        int i=10;
        String s1=i+"";
        System.out.println(s1+1);

        System.out.println("============");

        String s=String.valueOf(10);
        System.out.println(s+1);
    }
}

拓展:

在实际开发中,怎么定义一个标准的javaBean

定义javabean一般会将基本类型的属性定义成包装类型

举例:如果uid为Integer型,默认值是null

将来javabean中的数据都是和数据库表联系起来,我们可以将javabean中的数据添加到表中,如果表中的uid为主键自增此时添加语句时uid的数据不用我们单独维护赋值了添加语句的sql语句就可以这样写:

        insert  into  user (uid,username,password)values(NULL,'名和怡','999999');

到时候,我们需要javabean中封装的数据获取出来放到sql语句中,如果uid为主键自增,而且javabean中的uid为包装类型,默认值为null这样就不用单独维护uid的值了,也不用先给javabean中的uid赋值,然后在保存到数据库中了,咱们就可以直接使用uid的默认值,将默认值放到sql语句中的uid中

而且将javabean中的属性变为包装类型,还可以使用包装类型方法去操作属性值

public class User {
   // private int uid;//用户id
    private Integer uid;//用户id


    private String username;
    private String password;

    public User() {
    }

    public User(Integer uid, String username, String password) {
        this.uid = uid;
        this.username = username;
        this.password = password;
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

”苦尽甘来终有时,一路向阳待花期“,加油,少年!

/** * @project: WebProjectUtil * @class: NumberUtil * @describe: 此工具类用来处理数字方面的逻辑, * 如返回指定位数的随机数字、Double的加减乘除精确运算、指定位数数字用“0”补齐 * @autho: Administrator * @date: 2013-6-7 下午02:26:27 * @alter: Administrator * @alterDate: 2013-6-7 下午02:26:27 * @alterRemark: * @version V1.0 */ public class NumberUtil { private static final int DEF_DIV_SCALE = 2; /** * @return 返回12位随机数 */ public static String randomNumber() { } /** * @param parm * @return 返回指定位数随机数 */ public static String randomNumber(int parm) { } /** * * 两个Double数相加 * * @param v1 * @param v2 * @return Double */ public static Double add(Double v1, Double v2) { } /** * * 两个Double数相减 * * @param v1 * @param v2 * @return Double */ public static Double sub(Double v1, Double v2) { } /** * * 两个Double数相乘 * * @param v1 * @param v2 * @return Double */ public static Double mul(Double v1, Double v2) { } /** * * 两个Double数相除 * * @param v1 * @param v2 * @return Double */ public static Double div(Double v1, Double v2) { } /** * * 两个Double数相除,并保留scale位小数 * * @param v1 * @param v2 * @param scale * @return Double */ public static Double div(Double v1, Double v2, int scale) { } /** * 返回指定Double的负数 * @param v1 * @return */ public static Double neg(Double v1) { /** * @Title: toFixdLengthString * @Description: 将字符串用符号填充位数 * @param str 源字符串 * @param fixdlenth 位数 * @return String * @throws */ public static String toFixdLengthString(String str, int fixdlenth) { } /** * @Title: toFixdLengthString * @Description: 将数字用“0”填充位数 * @param num * @param fixdlenth * @return String * @throws */ public static String toFixdLengthString(int num, int fixdlenth) { } /** * @Title: generateSpaceString * @Description: 得到指定位数占位符 * @param length * @return String * @throws */ public static String generateSpaceString(int length) { } /** * @Title: generateZeroString * @Description: 得到指定位数的“0”的占位符 * @param length * @return String * @throws */ public static String generateZeroString(int length) { } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值