Java基础(十)API之包装类(封箱、自动封箱及自动拆箱)、数学类(Math)和时间类(Date)

包装类

1.概念

为了提高操作基本数据类型的数据便捷性,给基本数据类型提供对应的类,类里定义丰富的信息以及功能,只要创建出类对象就能更加方便和快捷的去操作基本类型数据。

在这里插入图片描述
注意:

1.除了Character以及Integer之外其他包装类都是首字母大写
2.由基本类型数据来构建包装类对象—封箱
3.基本数据类型直接赋值给包装类的对象—自动封箱
包装类.valueOf(基本数据类型)
包装类对象直接赋值给基本数据类型—自动拆箱
包装类对象.xxxValue()

代码演示:

        //定义变量
        int i=1;

        //创建Integer类的对象
        //由基本类型数据来构建包装类的对象--封箱
        //Integer in=new Integer(i);
        //把基本类型数据直接赋值给包装类的对象---自动封箱
        //底层实现Integer in=Integer.valueOf(i);
        //自动封箱底层实现---包装类.valueOf(基本类型数据)
        //自动封箱是jdk1.5的新特性
        Integer in=i;

        //自动封箱
        //底层实现--Character c=Character.valueOf('a');
        Character c='a';
        System.out.println(in);




        Integer in=new Integer(1);
        //包装类对象直接赋值给基本数据类型---自动拆箱
        //底层实现---int i=in.intvalue();
        //自动拆箱底层实现---包装类对象...xxxValue();
        //自动拆箱是jdk1.5新特性
        int i=in;

        Double d=new Double(2.3);

        //底层实现---double d1=d.doubleValue();
        double d1=d;
        System.out.println(i);

4.自动封箱/拆箱是jdk1.5新特性
5.当整型包装类做自动封箱时,在-128 ~ 127之间共享同一个数组,但是如果超过这个范围,每次返回一个新对象(character共享范围是(0~127))
6.包装类的哈希码值是固定值

package cn.tedu.baozhuang;
//输出每个字符出现的次数
public class Test {
    public static void main(String[] args) {
        //包装类的对象的哈希码值是固定值
        System.out.println(new Integer(1).hashCode());
        System.out.println(new Byte((byte)1).hashCode());
        System.out.println(new Short((short)1).hashCode());
        System.out.println(new Character('a').hashCode());
        System.out.println(new Long(1L).hashCode());
        System.out.println(new Float(1.1f).hashCode());
        System.out.println(new Double(1.1).hashCode());
        System.out.println(new Boolean(true).hashCode());

    }
}

数学类(Math):

提供简单的数学运算(所有的属性和方法都是静态的

代码演示:

package cn.tedu.math;

public class MathDemo {
    public static void main(String[] args) {
        //绝对值
        System.out.println(Math.abs(-2.14));//2.14

        //向上取整
        System.out.println(Math.ceil(1.000001));//2.0

        //向下取整
        System.out.println(Math.floor(0.9999));//0.0

        //四舍五入(结果是整数)
        System.out.println(Math.round(3.445));//3

        //第一个参数是底数,第二个参数是次幂
        System.out.println(Math.pow(2.0,3.0));//8.0

        //随机数(从0.0-1.0之间,不包含1.0)
        //底层根据伪随机算法
        System.out.println(Math.random());

        //获取从20到40(包含)之间的随机整数
        System.out.println(20+(int)(Math.random()*21));

        //简易验证码
        //验证码可以出现的内容
        char[] cs={'4','A','只','8','b','2','花','花'};
        //字符串来存储验证码内容
        String str="";
        //循环实现随机获取验证码的内容
        for (int i=1;i<=4;i++){//验证码有四位
            str += cs[(int) (Math.random()*8)];//下标范围(0-7)随机
    }
        System.out.println(str);
}

}

BigDecimal类—支持小数精确运算 (需要参数是字符串形式)

package cn.tedu.math;

import java.math.BigDecimal;

public class BigDecimalDemo {
    //在运算过程中可以提高到80位来运算,但是最终还是以64位来存储
    public static void main(String[] args) {
        //绝大部分小数的二进制补码是无线位数不能精确运算
        double d=2.1-1.9;
        System.out.println(d);//0.20000000000000018

        //只有参数是字符串形式才能进行精确运算
        BigDecimal bd1=new BigDecimal("2.1");
        BigDecimal db2=new BigDecimal("1.9");
        //调用方法操作对象的值
        System.out.println(bd1.subtract(db2));//0.2
    }
}

BigInteger支持超大数之间运算

package cn.tedu.math;

import java.math.BigInteger;

public class BigIntegerDemo {
    public static void main(String[] args) {
        //超大数之间的运算
        BigInteger bi1=new BigInteger("124265476554631231435325176438935436226491");
        BigInteger bi2=new BigInteger("176438926654365324521341543265491");
        //通过调用对象操作对象值
        System.out.println(bi1.multiply(bi2));
    }
}

时间类

Date类:代表时间和日期
SimpleDateFormat类提供日期和字符串的相互转换
parse():把字符串转成日期
format():把日期转成字符串

代码演示:

package cn.tedu.math;

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

public class DateDemo {
    public static void main(String[] args) throws ParseException {
        //创建代表时间和日期的类的对象
        //Date date=new Date();
        //有参构造---在指定的基础上加上1900年1月
        //黑线---代表过时,代表在某个新版本中就会被淘汰
       /* Date date=new Date(2008-1900,8-1,4);
        //CST(中国标准时区)
        System.out.println(date);*///Mon Aug 04 00:00:00 CST 2008

        //字符串转成日期
        String str="2012-12-12 12:12:12";
        //创建对象
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用方法把字符串转成日期
        Date date=sdf1.parse(str);

        //日期转成字符串
        //创建对象
        SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");

        //调用方法把日期转成字符串
        String s=sdf2.format(date);
        System.out.println(s);//2012年12月12日 12时12分12秒
    }
}

Calendar—日历类

package cn.tedu.math;

import java.util.Calendar;
import java.util.Date;

public class CalendarDemo {
    public static void main(String[] args) {
        //获取Calendar类的子类对象
        Calendar c=Calendar.getInstance();
        //设置时间
        //c.setTime(new Date(2012-1900,12-1,12));
        //获取日历信息
        System.out.println(c.get(Calendar.DAY_OF_MONTH));//19  这一月的第19天
        System.out.println(c.get(Calendar.AM_PM));//1
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张艳霞zhangyx

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

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

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

打赏作者

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

抵扣说明:

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

余额充值