- 包装类
- java.util.Calendar日历类
一、包装类: Java是一个面向对象的编程语言,但是Java中的八种基本数据类型却是不面向对象的,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类,包装类均位于java.lang包。
二、
| 基本类型 | 对应的包装类(位于java.lang包中) |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Charater |
| boolean | Boolean |
三、装箱:把基本类型的数据包装到包装类中 即基本类型的数据转换为包装类
四、构造方法:
- Integer(int value):构造一个新分配的Integer对象 他表示指定的int值
- Integer(String s):构造一个新分配的Integer对象 他表示String参数所指示的int值
注意:传递的字符串必须是基本类型的字符串 否则会抛出异常 例如:"100"正确 "a"会报错
public class BaoZhuangLei {
public static void main(String[] args) {
Integer in1 = new Integer(1);
System.out.println(in1);//1 重写了toString方法
Integer in2 = new Integer("1");
System.out.println(in2);//1
}
}
五、静态方法:
- static Integer valueOf(int i):返回一个表示指定的int值的Integer实例
- static Integer valueOf(String s):返回保存指定的String的值的Integer对象
public class BaoZhuangLei {
public static void main(String[] args) {
Integer in3 = Integer.valueOf(1);
System.out.println(in3);//1
Integer in4 = Integer.valueOf("1");
System.out.println(in4);//1
}
}
六、拆箱:在包装类中取出基本类型的数据 即包装类转换为基本类型的数据
public class BaoZhuangLei {
public static void main(String[] args) {
int i = in1.intValue();
System.out.println(i);//1
}
}
七、成员方法:int intValue():以int类型返回该Integer的值
八、自动装箱与拆箱:基本类型的数据和包装类之间可以自动的相互转换
public class BaoZhuangLei {
public static void main(String[] args) {
System.out.println("自动装箱与拆箱:==================================================");
//自动装箱:直接把int类型的整数赋值包装类
Integer in = 1;//相当于Integer in = new Integer(1);
//自动拆箱:in是包装类 无法直接参与运算 可以自动转换为基本数据类型 再进行计算
in = in + 2;//in + 2相当于in.inValue() + 2 = 3 然后in = in.inValue() + 2 = 3又是一个自动装箱
ArrayList list = new ArrayList();
//ArrayList集合无法直接存储整数 可以存储Integer包装类
list.add(1);//隐含了自动装箱 list.add(new Integer(1));
int a =list.get(0);//隐含了自动拆箱 list.get(0).inValue();
}
}
九、基本类型转换为字符串类型
- 基本类型的值 + “” 最简单的方法
- 包装类的静态方法toString(参数) 不是Object类的toString(),而是Object类的toString()的重载形式
- String类的静态方法valueOf(参数):static String valueOf(int i):返回int参数的字符串表示形式
public class BaoZhuangLei {
public static void main(String[] args) {
System.out.println("基本类型转换为字符串:===============================");
//方式一
int i1 = 100;
String s1 = i1 + "";
System.out.println(s1 + 200);//100200 字符串相加时拼接
//方式二
String s2 = Integer.toString(100);
System.out.println(s2 + 200);//100200
//方式三
String s3 = String.valueOf(100);
System.out.println(s3 + 200);//100200
}
}
十、字符串转换为基本类型:使用包装类的静态方法:parseXXX("字符串类型的数字(如果写“A” 字符串类型的字母 会报错)");例如:
Integer类:static int parseInt(String s)
Double类:static double parseDouble(String s)
import java.util.ArrayList;
public class BaoZhuangLei {
public static void main(String[] args) {
int m = Integer.parseInt(s1);
System.out.println(m - 10);//90
}
}
java.util.Calendar日历类
一、java.util.Calendar类:日历类 里边提供了很多操作日历字段的方法(YEAR MONTH DAY_OF_MONTH HOUR)
二、Calendar类是一个抽象类 无法直接创建对象使用 里边有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象
三、getInstance()用法:static Calendar getInstance():使用默认时区和语言环境获得一个日历
四、Calendar类的常用成员方法:
- public int get(int field):返回给定日历字段的值
- public void set(int field,int value):将给定的日历字段设置为给定值
- public obstract void add(int field,int amount):根据日历的规则 为给定的日历字段添加或减去指定的时间量
- public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象
五、成员方法的参数:
- int field:日历类的字段 可以使用Calendar类的静态变量获取
- public static final int YEAR = 1;年
- public static final int MONTH = 2;月
- public static final int DATE = 5;月中的某一天
- public static final int DAY_OF_MONTH = 5;月中的某一天
- public static final int HOUR = 10;时
- public static final int MINUTE = 12;分
- public static final int SECOND = 13;秒
import java.util.Calendar;
import java.util.Date;
public class Calendar2 {
public static void main(String[] args) {
demo01();
demo02();
demo03();
demo04();
}
private static void demo04() {
//使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();
Date date = c.getTime();
System.out.println(date);//Wed Aug 14 12:45:48 CST 2019
}
private static void demo03() {
//使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();
//增加两年
c.add(Calendar.YEAR, 2);
int year = c.get(Calendar.YEAR);
System.out.println(year);//2021
//减少三个月
c.add(Calendar.MONTH, -3);
int month = c.get(Calendar.MONTH);
System.out.println(month);//4 西方月份7-3=4
}
private static void demo02() {
//使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();
//设置年为9999年
c.set(Calendar.YEAR, 9999);
int year = c.get(Calendar.YEAR);
System.out.println(year);//9999
//设置月为9月
c.set(Calendar.MONTH, 9);
int month = c.get(Calendar.MONTH);
System.out.println(month);//9
//设置日为9日
c.set(Calendar.DATE, 9);
int date = c.get(Calendar.DAY_OF_MONTH);
System.out.println(date);//9
//设置日为9日
c.set(Calendar.DAY_OF_MONTH, 9);
int day = c.get(Calendar.DATE);
System.out.println(day);
//可以同时设置年月日
c.set(8888, 8, 8);
int year2 = c.get(Calendar.YEAR);
System.out.println(year2);//8888
int month2 = c.get(Calendar.MONTH);
System.out.println(month2);//8
int date2 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(date2);//8
int day2 = c.get(Calendar.DATE);
System.out.println(day2);//8
}
private static void demo01() {
//使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();//多态
System.out.println(c);//输出的不是地址值 说明getInstance方法被重写了
int year = c.get(Calendar.YEAR);
System.out.println(year);//2019
int month = c.get(Calendar.MONTH);
System.out.println(month);//西方的月份0-11 东方的月份1-12 今天是北京时间8月14 而打印的是西方的月份7月
int date = c.get(Calendar.DAY_OF_MONTH);
System.out.println(date);//14
int day = c.get(Calendar.DATE);
System.out.println(day);//14
}
}



