java常用类之包装类、Date类

Java常用类之包装类

一、基本数据包装类

  • 局部变量中基本数据类型直接分配在栈中,而对象分配在堆中;
  • 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法来操作该数据;
  • 包装类主要功能:用于基本数据类型与字符串之间的转换;

1.1、Integer类

Integer 类在对象中包装了一个基本类型 int 的值。
此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。

 public Integer(int value) {
        this.value = value;
}

public Integer(String s) throws NumberFormatException {
        this.value = parseInt(s, 10);
}

public byte byteValue() {
        return (byte)this.value;
}

    public short shortValue() {
        return (short)this.value;
}

    @HotSpotIntrinsicCandidate
    public int intValue() {
        return this.value;
}

    public long longValue() {
        return (long)this.value;
}

    public float floatValue() {
        return (float)this.value;
}

    public double doubleValue() {
        return (double)this.value;
}

 public String toString() {
        return toString(this.value);
}

    public int hashCode() {
        return hashCode(this.value);
}

1.2、包装类和基本数据类型和字符串的转化

public class Packtest {
    public static void main(String[] args) {
        /*基本数据类型========>包装类*/
        Integer i1=5;//自动装箱
        Integer i2=new Integer(1);
        Integer i3=Integer.valueOf(3);//手动装箱
        /*包装类<=========基本数据类型*/
        int i4=i1;//自动拆箱
        int i5=i2.intValue();//手动拆箱
        
        /*基本数据类型========>字符串*/
        String s1=5+"";//自动装箱
        String s2=String.valueOf(3);
        /*字符串<=========基本数据类型*/
        //String转换为int值得两种方式:
        int ii1=Integer.parseInt("12");//推荐使用这种,常用
        int ii2=new Integer("12").intValue();
        //字符串转换为其他基本数据类型
        byte b=Byte.parseByte("12");
        float f=Float.parseFloat("12");
        double d=Double.parseDouble("12");
        
        /*包装类===============>字符串*/
        String ia = Integer.toString(5);
        /*包装类<===============字符串*/
        Integer ib = new Integer("3");
    }
}
  • 注:自动拆箱和装箱是JDK 1.5后才有的

再次说明:

/*
 * 不使用构造方法去创建Integer对象(自动装箱)
 *     当值在-128 到 +127之间时,实际返回的是缓冲区中的对象的引用.
 * 反之调用的是valueOf方法-->new Integer(int value)
 *
 */
//案例
public class Packtest01 {
    public static void main(String[] args) {
        Integer i1 = new Integer(10);
        Integer i2 = new Integer(10);
        System.out.println(i1 == i2);//比较的是内存地址 false

        Integer i3 = 200;
        Integer i4 = 200;
        System.out.println(i3 == i4);//超过范围,调用是valueof方法,所以比较结果为false


        Integer i5 = 100;
        Integer i6 = 100;
        System.out.println(i5 == i6);//true
    }
}

1.3、Character类

Character 类在对象中包装一个基本类型 char 的值。

构造方法(只有一个):
Character(char value)
构造一个新分配的 Character 对象,用以表示指定的 char 值。

二、Date类

1.1

  • java.util.Date:表示日期和时间的类;

  • 类Date 表示特定的瞬间,精确到毫秒

  • 毫秒:千分之一秒 1000毫秒=1秒

  • 把日期转换成毫秒:

    • 当前的日期:2019-07-18
    • 时间原点(0毫秒):1970-01-01 00:00:00(英国格林威治)
    • 就是计算当前日期到时间原点之间一共经历了多少毫秒

    注意:
    中国属于东八区,会把时间增加8个小时

    • 1970-01-01 08:00:00

    把毫秒转换为日期:

    • 1天 = 246060 = 86400秒 = 86400*1000=86400000毫秒

    1.2、

    java.util.Calendar类;日历类

    • Calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR)
    • Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象
    • static Calendar getInstance() 使用默认时区和语言环境获得一个日历。

    Calendar类的常用成员方法:

    • public int get(int field);返回给定日历字段的值。
    • public void set(int field,int value);将给定的日历字段设置为给定值
    • public abstract void add(int field, int amount);根据日历的规则,为给定的日历字段添加或减去指定的时间量。
    • public Data getTime();返回一个表示次Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
//Date、SimpleDateFormat、Calendar案例
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Datetest {
    public static void main(String[] args) {
        Date date = new Date();
        //输出格式:dow mon dd hh:mm:ss zzz yyyy
        //表示      :星期  月   日期  时   分   秒   时区 年
        System.out.println(date);
        
        //Format 是一个用于格式化语言环境敏感的信息(如日期、消息和数字)的抽象基类。
        Format format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
        System.out.println(format.format(date));
        
     //public int get(int field);返回给定日历字段的值。
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);

    //public void set(int field,int value);将给定的日历字段设置为给定值
    //设置年为2022
    //设置月为9月
        c.set(Calendar.YEAR,2022);
        c.set(Calendar.MONTH,9);

    //增加年
        c.add(Calendar.YEAR,2);

    //把日历对象,转换为日期对象
        Date d=c.getTime();
    }
}

推荐文章

posted @ 2022-01-19 19:54  Devin-Y  阅读(132)  评论(0编辑  收藏  举报