APIday04

包装类

包装类(Wrapper Class):

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的。基本类型的数据不具备"对象"的特性(没有成员变量和成员方法可以调用),因此,java为每种数据类型分别设计了对应的类,即包装类。
在这里插入图片描述
创建对象

Integer(int value) 

构造一个新分配的 Integer 对象,它表示指定的 int 值。
方法:

 int intValue() 

以 int 类型返回该 Integer 的值。

static int parseInt(String s) 

将字符串参数作为有符号的十进制整数进行解析。
Integer.parseInt("");

static Integer valueOf(String s) 

返回保存指定的 String 的值的 Integer 对象。

package day02;

/**
 * @author wangpl
 */
public class IntegerDemo {
    public static void main(String[] args) {
        //byte的最大值和最小值
        byte a=Byte.MAX_VALUE;
        byte b=Byte.MIN_VALUE;
        int c=Integer.MAX_VALUE;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        //1.创建Integer对象 把基本类型的5 变成包装类型的in--用包装类in提供的各种方法
        Integer in=new Integer(5);
        //2.常用方法
        int x=in.intValue();//把in这个对象包裹的数值取出来
        System.out.println(x);//5
        int y=Integer.parseInt("123");//将字符串类型的整数 解析成int类型
        System.out.println(y);//123

        Double d=new Double(9.9);
        Double d2=Double.valueOf(9.9);//不高效 底层也是通过new创建的
        //Double valueOf(String s)
        //返回保存用参数字符串 s 表示的 double 值的 Double 对象
        Double d3=Double.valueOf("9.9");
        System.out.println(d2);
        System.out.println(d3);
        double m=d.doubleValue();
        System.out.println(m);
        double n=Double.parseDouble("9.9");
        System.out.println(n);
        //1. 什么是包装类,为什么要有包装类
        //java分为基本类型和引用类型,但是基本类型是无法调用方法和属性的,为了解决这个问题
        //我们将对应的基本类型转化为引用类型,并提供了一系列的方法,这样的类被称之为包装类
        //因为我们java是面向对象的语言,对象里面有属性和行为,转换为包装类之后我们才可以访问
        //对象对应的属性和方法,进行转型String转int或者double
//        Integer in2=new Integer(500);
//        Integer in3=new Integer(500);
//        System.out.println(in2==in3);//false

        Integer in4=127;
        Integer in5=127;
        System.out.println(in4==in5);//true

        Integer in6=128;
        Integer in7=128;
        System.out.println(in6==in7);//false
        /*
        在Integer类装载进内存中时,会把-128 127范围内的整数数据包装成Integer类
        并且将其对应的引用放入一个cache数组中
        valueof(i)在返回之前,会进行判断,判断当前i的值是否在-128到127之间
        如果在范围中,则直接返回引用,不再开辟内存空间
        如果不在范围中,则创建一个新的对象
        利用缓存,这样即能提高程序执行效率又能节约内存
        Integer in4=127  Integer in5=127 因为IntegerCache中已经存在了此对象
        直接返回引用,引用相等并且都指向缓存中的数据所以in4==in5 为true
        Integer in6=128 Integer in7=128因为in6和in7不在范围内,虚拟机会重新new一个
        Integer对象来存放128,创建两个对象就会产生两个不同的内存空间,两个空间的
        地址不同,返回到栈中的引用值也就不同,所以in6==in7 为false
         */

    }
}

在这里插入图片描述

日期类Date

概述:
存在于java.util.Date包
用来封装一个毫秒值,表示一个精确的时间点
从1970-1-1 0点开始的一个毫秒值

创建对象

new Date(); 封装的是系统当前时间的毫秒值
new Date(9000000000000000L)封装指定的时间点

package day02;

import java.util.Date;

/**
 * @author wangpl
 */
//测试 日期工具类 Date
public class DateDemo {
    public static void main(String[] args) {
        //1.创建对象
        Date d=new Date();
        System.out.println(d);//默认是当前系统时间
        //2.调用方法
        System.out.println(d.getTime());//从1970-1-1 0到现在的毫秒值
        System.out.println(d.getDate());//今天是几号
        System.out.println(d.getDay());//今天星期几
        System.out.println(d.getHours());//现在是几点
        System.out.println(d.getMinutes());//现在是哪分钟
        System.out.println(d.getYear());//从1900年到现在是多少年了
        System.out.println(d.getSeconds());//现在是多少秒
        
    }
}

时间格式转换 SimpleDateFormat

概述:
日期格式化工具,可以把date对象格式化成字符串,也可以将日期字符串解析成date对象
new SimpleDateFormat(格式)
格式:yyyy-MM-dd HH:mm:ss
常用的方法
format(Date date)

package day02;



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

/**
 * @author wangpl
 */
public class SimpleDemo {
    public static void main(String[] args) throws ParseException {
       // method();
        method2();//接收用户输入的出生日期,计算存活天数 1969-01-24
    }

    public static void method2() throws ParseException {
        //接收用户输入的出生日期
        String str=new Scanner(System.in).nextLine();
        //创建日期格式化对象
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date date=sdf.parse(str);
        long birth=date.getTime();//出生时的毫秒值
        long now=System.currentTimeMillis();//当前的毫秒值
        System.out.println((now-birth)/1000/60/60/24);
    }

    //日期数据互转
    public static void method() throws ParseException {
        String date="2021-7-30";
        //创建SimpleDateFormat对象 参数是日期格式
        //y表示年 M表示月 d表示日 -是分隔符
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date d=sdf.parse(date);//parse 将String转成Date
        System.out.println(d);
        System.out.println(d.getYear());
        System.out.println(d.getMonth());
        System.out.println(d.getDate());
        System.out.println(d.getDay());
        Date da=new Date();
        String str=sdf.format(da);//将date转为String
        System.out.println(str);//2021-07-30

        System.out.println(sdf.format(new Date()));
    }
}

自动拆装箱

自动装箱:把基本类型包装成包装类对象
Integer a=Integer.valueOf(5);

自动拆箱:从包装类对象中,自动取出基本类型值
int i=a.intValue();
包装类的默认值都是null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值