day16_Calendar类 System类 StringBuilder类 包装类
今日内容
-
Calendar类
-
System类
-
StringBuilder类
-
包装类
Calendar类
在java.util.Calendar包下,需要导包,是个日历类,抽象类。该类将所有可能用到的时间信息封装成静态成员变量,通过类名.静态成员变量获取时间字段值。
Canlendar类不是直接创建对象来获取时间属性字段值,而是通过静态方法创建返回子类对象。
方法:
1. pubic static Calendar getInstence(): 使用默认时区和默认的语言环境获取一个日期对象
例如: public class Demo01Calendar{ public static void main(String[] args){ Calendar calendar =Calendar.getInstance();//获取一个日历的对象 } }
常用的方法:
- public int get(int field)
- public void set(int field,int value): 将给定的字段设定为给定的值
- public abstract void add(int field ,int value): 根据日历规则,将给定的日历字段添加或者减少指定的时间值
- public Date getTime(): 把日历对象转换成日期对象
- public long getTimeInMollos(): 获取日历对象对应的毫秒值
Calendar类中提供了很多个成员变量,代表给定的日历字段值:
字段值 | 含义 |
YEAR | 年 |
MOUTH | 月份 |
DATE | 月中的某一天(几号) |
DAY_OF_MONTH | 月中的第几天 |
HOUR | 时(24小时制) |
HOUR_OF_DAY | 时(12小时制) |
MINUTE | 分 |
SECOND | 秒 |
DAY_OF_WEEK | 一周中的第几天(周几,周日为1) |
备注:1.在西方的星期,开始为周日
2.在Calendar类中,月份表示以0-11代表我们的1-12月
3.日期是有大小关系的,时间靠后,代表越大。
System类
java.lang.System类中提供了大量的静态方法,主要是用来获取与系统相关的信息或者是进行系统级操作
他不能被实例化,也不能被继承。
常用的API方法:
- public static long currentTimeMills():获取当前系统时间对应的毫秒值
- public static void arrayaopy( Object src, int srcPos,Object dest,int destPos,int length):将数组中指定的数据拷贝到另一个数
- (不常用)public static void exit(int status): 终止当前正在执行的java虚拟机
currentTimeMills()方法
它获取的是从1970年1月1日 0时0分0秒到当前时间的毫秒差值
arraycopy()方法
将一个数组中的元素复制到另一个数组中。性能高
arraycopy方法当中涉及到5个参数:
参数列表 | 参数名称 | 参数类型 | 参数的含义 |
1 | src | Object | 源数组 |
2 | srcPro | int | 源数组索引的起始位置 |
3 | dest | Object | 目标数组 |
4 | destPos | int | 目标数组索引的起始位置 |
5 | length | int | 复制元素的个数 |
StringBuilder类
String:是常量,值不能被改变 底层是被final修饰的数组不能改变 它是以字节的形式存在内存当中
进行字符串相加的时候,会占用空间,效率低下
String str = "a"+"b"+"c"//开辟三个空间 String str = “ab”+“c”//每运算依次开辟一个新空间
StringBuilder类:字符串缓冲区,长度可变的字符串,底层是一个数组,没有被final修饰,可以改变长度,其初始长度为16
1.范围
在内存中始终是一个数组,空间小,效率高,超出String的范围会自动扩容,每次扩容为:length*2+2;超出的话会直接扩充到有多少字符是多大内存。最大是int的范围。
2.构造方法
他有空参构造和有参构造
空参是构造了没有内容的16个字符,
StringBuilder()
有参构造可以在参数位置指定其字符
StringBuilder(CharSequence seq)
它包含与指定的 CharSequence 相同的字符。
也可以指定其初始容量
StringBuilder(int capacity) 构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定。
3.常用方法
public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象本身,返回的容量至少与给定的最小容量一样大
4.相互转换
String-->StringBuilder:可以使用StringBuilder的带参构造方法 StringBuilder(String str) 构造一个字符生成器,并初始化为指定的字符串内容 StringBuilder-->String : 可以使用StringBuilder类中的toString()方法 public String toString():将当前的StringBuilder对象转换成String对象
5.强制特点
public StringBuilder insert(int offset,...)根据指定的位置插入任意类型数据的字符串形式,返回的是当前对象不管存储什么类型的数据,进入字符串缓冲区都变成了字符值(所有类型都可以)
包装类
分为装箱和拆箱(包装类属于引用类型)
装箱:把基本数据类型包装到包装类中(Integer,Double)
拆箱:从包装类中取出基本数据类型的数据
装箱:(弃用)
构造方法: Integer (int value ) : 构造一个新分配的Integer对象 它表明指定的int类型值 Integer(String s)构造一个新分配的Integer对象,他表示的String参数指定的int值 “123”可以 “abc”不可以 静态方法: static Integer calueOf(int i): 将指定的int类型值转换成Integer实例 static Integer valueOf(String s):将String类型的int值转换成Integer对象
拆箱:(弃用)
在包装类中取出基本数据类型的数据(包装类型--->基本数据类型) 成员方法: int intValue():将指定的包装类型的对象转换成int类型
JDK1.5之后出现的自动装箱和自动拆箱
自动装箱:
直接把int类型值赋值给包装类 如: Integer int =123; 相当于Integer int = new Integer(123);
自动拆箱:
包装类无法直接参与运算 自动拆箱后: int + 2就相当于int.intValue()+2
基本数据类型和字符串之间的自由切换
基本数据类型--->字符串 1. 基本数据类型值+“” -->最简单的方法(常用) 2.使用Integer类中的toString(int i): 返回的是表示指定整数的String对象+static String toString(int i) 3.String类中的静态方法valueOf(参数) static String valueOf(int i)返回的是int参数的字符串表示形式
字符串 --->基本数据类型
使用包装类中的静态方法parseXxx(字符串);
Integer类: static int parseInt(String s)
Double类:static double parseDouble(String s)