小码笔记11:包装类、Object、System、Runtime、时间日期类

API (Application Programming Interface) :应用程序编程接口
Java API :指的就是 JDK 中提供的各种功能的 Java类
这些类将底层的实现封装了起来,不需要关心这些类是如何实现的,只需要学习这些类如何使用即可

一、包装类

基本数据类型不能置为null, 不能调用方法(因为在常量池中) //泛型就不能用基本数据类型
因此引入包括类 使其成为一个类,变成引用数据类型

1.分类

基本数据类型和包装类的对应
byte   -------Byte
short  -------Short
int    -------Integer
long   -------Long
float  -------Float
double -------Double
char   -------Character
boolean ------Boolean

2.拆箱装箱

  • 装箱:把基本数据类型包装到类中
  • 拆箱: 在包装类中取出基本类型的数据
    JDK1.5开始基本数据类和包装类之间可以自动转换

3.Character之外的通用方法

     Integer i=89;
 1toString()   字符串表示
               i.toString()
 2compareTo()  比较
                 i.compareTo(88)//得到最大值   Double类型使用时 大于返回1 小于返回-1
 3:equals  相等 
                 i.equals(89)//true
 4valueOf() 静态方法  解析成什么类型  
               Integer.valueOf("9")  //解析成int类型  除了char都可以用
                底层:int  number =Integer.parseInt("9")
 5.基本类型转String类型
     加""包裹
 5.Stringl类型转基本类型
   除了Character之外所有包装类都有(byte short int long float double boolean)
   static xxx      ParseXxx(String) 将String类型转换为xxx类型

4.Character常用方法

方法 说明
isDigit() 确定字符是否为 0 至 9 之间的数字
isLetter() 确定字符是否为字母
isLowerCase() 确定字符是否为小写形式
isUpperCase() 确定字符是否为大写形式
isSpace() 确定字符是否为空格或换行符(此方法已过时)
isSpaceChar() 确定字符是否为空格

二、Object类

java.lang.Object
java语言中类层次结构的根类 超类
是所有类的父类,所有类都直接或者间接的继承自该类

1.常用方法

1. int     hashCode()
           返回该对象的哈希 码值  生成地址的定长的散列
           
2. String     toString()  返回该对象的字符串形式、打印对象的信息
                //所有类都继承了object类,建议重写toString方法 
                //不重写的自定义类型返回的是地址值 

3. boolean    equals(Object obj)  判断是否同一、比较地址值
                   1.基本数据类型比较的是值
                   2.引用数据类型比较的是地址值
                   3.String重写了hashCode()equals()方法,equals()判断的是byte[]数组的值

4. protected类型 finalize() throws Throwable
   定义回收当前对象时所需完成的资源释放工作
   //手动清空对象时 (对象置成空之后一定时间不用会被回收)
     Student stu =new Student;
      stu  =null;
      System.gc ();手动调用垃圾回收机制的方法

2.举例 Student重写equals()

    public boolean equals(Object obj) {
    
    
    if (obj == this) {
    
    
      return true;
    }
    if (obj == null||getClass()!=obj.getClass()) {
    
    
        //getClass()!=obj.getClass()用java反射技术判断obj是否是Student类型
        //等价于obj instanceof Student 
      return false;
    }
    if (obj instanceof Student) {
    
    
      Student st = (Student) obj;
      boolean b = this.name.equals(st.name);
      return b;
    }
    return false;
  }

3.Objects工具类

JDK7开始,添加了一个工具类Objects 提供了一些方法来操作对象

  • 这些方法是null-save(空指针安全)或者null-tolerant(空指针容忍),不会抛出空指针异常
  • 用于计算对象的hashcode、返回对象的字符串形式、比较两个对象
  • 其equals底层自己判断null的情况,增加了健壮性的判断
static <T>   TrequireNonNull(T obj){
    
    
     if(obj==null)
         throw new NullPointerException();
     return obj;
}

4.Comparator和Compable的区别

Comparable :实现类自己(this)和参数比较,自己需要实现Comparable接口重写compareTo()方法

Comparator :相当于找一个第三方的裁判比较两个

三、System类

java.lang.System

  • 作用:获取与系统相关的信息 和操作

1.常用方法

 1.static          exit(0);//退出虚拟机的状态
 
 2.static long     currentTimeMillis()//获得系统的毫秒值
 
 3.static          arraycopy(Object src1 ,int  index1,  Object src2 ,int index2,   int length ) 
                                 源数组      copy起始位置   目标数组   copy到的起始位置  copy长度
                    将数组中指定的数据拷贝到另一个数组
 
 4. System.in       标准输入,表示键盘
    System.out      标准输出,表示显示器

四、Runtime类

  • Runtime 执行外部可运行文件 可直接访问运行时资源
  • 单例模式
  • getRuntime() 获得实例

常用方法

  exec()执行外部命令
        Runtime time =Runtime.getRuntime();
      time.exec("D:\PanDownload\eclipse\eclipse.exe");//打开eclipse

五、时期时间类

1.Date类

java.util.Date
表示特定的瞬间,毫秒值

  1. 构造方法
1.public Date()         
            分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
            
2.public Date(long date) 
            分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
            //传递毫秒值  把毫秒转化为Date
  1. 常用的成员方法
1.long    getTime()  把日期转为毫秒值
  long    System.currentTimeMillis()//获得系统的毫秒值 

2.boolean   after()  
  boolean   before()  判断在指定时间之前  之后
          //boolean b =date.after(date1);

2.DateFormat抽象类

java.text.DateFormat
是时间/日期格式化子类的抽象类
完成日期和文本之间的转换,也就是可以在Date对象和String之间进行来回转换

  1. 概念
    格式化:Date对象转换为String对象
    解析:String对象转成Date对象
    //格式化 日期转文本
    解析 文本转日期
  2. 成员方法
1.String format(Date date)
          按照指定的模式把Date日期格式化为符合模式的字符串
          
2. Date   parse(String str)
          把符合模式的字符串解析为Date日期
  1. 使用
    DateFormat是一个抽象类,无法直接创建对象使用,可以使用DateFormat的子类
    java.text.SimpleDateFormat extends DateFormat
1.使用方法
      1. SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat 
      2.参数  String pattern:传递指定的模式
              区分大小写
              y-----年
              M-----月
              d-----日
              H-----(24小时模式)    h-----(12小时模式)
              m-----分
              s-----秒 
             写对应的模式,会把模式替换为对应的日期时间
                   "yyyy-MM-dd  HH:mm:ss" 
                   "yyyy年MM月dd日 HH:mm:ss"
2.步骤举例
public class SimpleDateFormatDemo {
    
    
    public static void main(String[] args) throws ParseException {
    
    
          //格式化:从 Date 到 String
          Date d = new Date();
          // SimpleDateFormat sdf = new SimpleDateFormat();
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
          String s = sdf.format(d);
          System.out.println(s);
          System.out.println("--------");
          //从 String 到 Date
          String ss = "2048-08-09 11:11:11";
          //ParseException
          SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          Date dd = sdf2.parse(ss);
          System.out.println(dd);
      }
3.注意事项
public Date parse(String str) throws ParseException   //parse方法声明了解析异常
            如果字符串构造方法的模式不一样,那么程序就会抛出此异常
            要么继续throws声明抛出   要么try...catch(){
    
    } 处理

4.制作日期转换工具类

工具类
public class DateUtils {
    
    
      private DateUtils() {
    
    }
      /*
      把日期转为指定格式的字符串
      返回值类型:String
      参数:Date date, String format
      */
      public static String dateToString(Date date, String format) {
    
    
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            String s = sdf.format(date);
            return s;
      }
      /*
      把字符串解析为指定格式的日期
      返回值类型:Date
      参数:String s, String format
      */
      public static Date stringToDate(String s, String format) throws ParseException {
    
    
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            Date d = sdf.parse(s);
            return d;
      }
}
测试类
public class DateDemo {
    
    
    public static void main(String[] args) throws ParseException {
    
    
    //创建日期对象
        Date d = new Date();
        String s1 = DateUtils.dateToString(d, "yyyy年MM月dd日 HH:mm:ss");
        System.out.println(s1);
        String s2 = DateUtils.dateToString(d, "yyyy年MM月dd日");
        System.out.println(s2);
        String s3 = DateUtils.dateToString(d, "HH:mm:ss");
        System.out.println(s3);
        System.out.println("--------");
        String s = "2048-08-09 12:12:12";
        Date dd = DateUtils.stringToDate(s, "yyyy-MM-dd HH:mm:ss");
        System.out.println(dd);
    }
}

3.Canlendar抽象类

java.util.Calendar
日历类
Calendar 为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

  1. 获取当前日历
    Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象。
    该方法返回一个Calendar 对象,默认时区和语言环境获得一个日历。
  Calendar rightNow = Calendar.getInstance();
  1. 常用方法
           Calendar  c = Calendar.getInstance(;//得到当前电脑的日历
                c.set(Calendar.YEAR  ,2019)
                c.set( Canlendar.MONTH ,11      )
                c.set(Canlendar.DATE ,1)     //2019年12月
                c.set( Canlendar.DATE _OF_WEEK ,Canlendar.MONDAY )
                
1int     get(int field)   得到给定日历字段的值
    void    set(int field,int value)   设置给定日历字段的值
              //由于Calendar时抽象类  所以成员变量都是公有的静态常量
            int year = c.get(Calendar.YEAR )//得到年
            int month = c.get(Canlendar.MONTH )+1//得到月 外国月份0-11
            int date = c.get(Canlendar.DATE )//得到日
             c.get(Canlendar.DATE _OF_WEEK)//得到当前天是星期几
             
 2. Date    getTime()     转成Date类型
                Date  time =c.getTime();
                
 3. GregorianCalendar 子类的方法 
    boolean   isLeapYear(int year)  判断闰年
                  GregorianCalendar  gc =new GregorianCalendar()boolean b= gc.isLeapYear(2038)
                    
 4. abstract   void add(int field, int amount)
                  根据日历的规则,将指定的时间量添加或减去给定的日历字段
                  参数 int field 传递指定日历字段(YEAR ,MONTH...)
                       int amount  要设置的值,正数增加,负数减少
                  c.add(Calendar.YEAR,2);
                  c.add(Calendar.MONTH,-2) ;

猜你喜欢

转载自blog.csdn.net/XIAOMAO1REN/article/details/115119538