A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-7-26 17:03 编辑

【石家庄校区】Object类、 与时间相关的类和方法











上图为Object的概述和方法,以此图为例子学习api中的方法,建立起学习的框架,

日期类和相关的类

Date类:

java.util.Date 类 表示特定的瞬间,精确到毫秒 (所在的包)

注意: 不要导错包! 有2个包中都有Date类, 一个是java.sql.Date, 另一个是java.util.Date
我们用的是 java.util.Date

使用Date类可以实现 :

  • long和Date对象互转
  • String和Date对象互转  2010年11月11日
  • Calendar对象和Date对象互转

关系如图:

[AppleScript] 纯文本查看 复制代码
   long
        \       SimpleDateFormat
         Date -------------------- String
        /
Calendar 

类中的方法:
// 构造方法
[AppleScript] 纯文本查看 复制代码
   Date(): 创建Date对象, 表示当前系统时间,
        Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
        注意 long date 为偏移时间,单位为毫秒。用带参的方法创建对象会得到一个从基准时间加上你参数偏移的时间

// 常用成员方法
        
[AppleScript] 纯文本查看 复制代码
long getTime(): 获取Date对象中保存的时间毫秒值
        void setTime(long time): 修改Date对象的时间 

代码示例
[AppleScript] 纯文本查看 复制代码
public class Demo01Date {
    public static void main(String[] args) {
        // 创建日期对象,把当前的时间
        System.out.println(new Date()); // Tue Jan 16 14:37:35 CST 2018
        // 创建日期对象,把当前的毫秒值转成日期对象
        System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
    }
}


DateFormat类及其构造方法
[AppleScript] 纯文本查看 复制代码
java.text.DateFormat抽象类: 用于格式化和解析时间. 提供了方便的方法
        // 常用成员方法 (抽象类不能创建对象, 但可以有非抽象的方法供子类使用)
        String format(Date date): 格式化, 从Date对象转换为String对象
        Date parse(String source): 解析, 从String对象转换为Date对象
        
java.text.SimpleDateFormat类
        // 构造方法
        SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号创建对象
                // 常用模式: 可在SimpleDateFormat类中查看
                y: 年
                M: 月
                d: 日
                H: 时 (24小时制)
                m: 分
                s: 秒
                
                E: 星期
                D: 年中的天
                K: 小时(12小时制)
                S: 毫秒
                
                示例: "yyyy-MM-dd E HH:mm:ss.SSS"
                结果: 2016-04-01 星期五 17:29:15.868
                
                如果要匹配普通的英文字母, 则需要用单引号括起来: "'abc'"
                如果要匹配单引号, 则使用2个单引号: "''"
                
// 使用指定的模式创建对象
SimpleDateFormat format = new SimpleDateFormat("yyyy‐MM‐dd HH:mm:ss");

DateFormat类之格式化format方法:String format(Date date): 格式化, 从Date对象转换为String对象
代码示例:
[AppleScript] 纯文本查看 复制代码
import java.text.SimpleDateFormat;
import java.util.Date;

/*
需求:[/size][/font][/align][align=left][font=微软雅黑][size=3]创建SimpleDateFormat对象,指定模式(yyyy年MM月dd日  HH:mm:ss)
创建日期对象(使用当前系统时间)
使用format方法对日期对象格式化为字符串
 */
public class Test {
    public static void main(String[] args) {
        // 创建SimpleDateFormat对象用于格式化日期为字符串
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");

        // 创建日期对象(使用当前系统时间)
        Date date = new Date();
        // 格式化
        String s = sdf.format(date);

        System.out.println(s);  // 2018年07月24日  14:45:48
    }
}



DateFormat之解析parse方法:用处:

[AppleScript] 纯文本查看 复制代码
Date parse(String source): 解析, 从String对象转换为Date对象

例如, SimpleDateFormat对象的模式是: "yyyy-MM-dd"
要解析为Date对象的字符串必须符合模式: 2000-01-02


代码
[AppleScript] 纯文本查看 复制代码
/*
需求:
已知日期字符串"2000-10-01"
将该日期字符串解析为日期对象,获取该日期对象的毫秒值并打印
 */
public class Test {
    public static void main(String[] args) throws ParseException {
        // 已知日期字符串"2000-10-01"
        String s = "2000-10-01";

        // 将该日期字符串解析为日期对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(s); // 红线按 Alt + Enter , 选择第一项 Add exception to method signature

        // 将date转换为long
        long time = date.getTime();

        System.out.println(time);  // 970329600000
    }
}


Calendar对象的获取方式:
[AppleScript] 纯文本查看 复制代码
java.util.Calendar抽象类: 代表日历, 提供了不同国家的历法, 封装了很多时间属性
        // 静态方法
        static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间
        
// 获取日历对象的示例
Calendar c = Calendar.getInstance();  // 代表了当前时间

Calendar类的常用功能:
[AppleScript] 纯文本查看 复制代码
java.util.Calendar抽象类: 代表日历, 提供了不同国家的历法, 封装了很多时间属性
        // 静态成员变量
        static int YEAR         :年份
        static int MONTH        :月份. 注意月份数值是 0-11
        static int DAY_OF_MONTH :日期
        static int HOUR         :小时(12小时制)
        static int HOUR_OF_DAY  :小时(24小时制)
        static int MINITE       :分钟
        static int SECOND       :秒
        // 非静态成员方法
        int get(int field): 获取指定日历字段的值   int year = cal.get(Calendar.YEAR)
        void set(int field, int value): 修改指定日历字段为指定的值
        void add(int field, int amount): 调整指定日历字段的值. 正数增加, 负数减少
        Date getTime(): Calendar转Date
        void setTime(Date d): Date转Calendar


// 示例
// 获取日期: 
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 修改年: 
calendar.set(Calendar.YEAR, 2000);
// 修改月: 
calendar.set(Calendar.MONTH, 0);
// 日期增加一天: 
calendar.add(Calendar.DAY_OF_MONTHY, 1);
// 日期减少一天: 
calendar.add(Calendar.DAY_OF_MONTHY, -1);



StringBuilder类
由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。例如:
[AppleScript] 纯文本查看 复制代码
public class StringDemo {
    public static void main(String[] args) {
        String s = "Hello";
        s += "World";
        System.out.println(s);
    }
}
[Java] 纯文本查看 复制代码
   public StringBuilder() :构造一个空的StringBuilder容器。
      public StringBuilder(String str) :构造一个StringBuilder容器,并将字符串添加进去

所以针对以上弊端 我们可以使用 StringBulider();中的方法
根据StringBuilder的API文档,常用构造方法有2个:

代码如下
[AppleScript] 纯文本查看 复制代码
public class StringBuilderDemo {
    public static void main(String[] args) {
        StringBuilder sb1 = new StringBuilder();
        System.out.println(sb1); // (空白)
        // 使用带参构造
        StringBuilder sb2 = new StringBuilder("itcast");
        System.out.println(sb2); // itcast
    }
}


常用方法:
      
[AppleScript] 纯文本查看 复制代码
 public StringBuilder append(...) :添加任意类型数据的字符串形式,并返回当前对象自身。
        public String toString() :将当前StringBuilder对象转换为String对象。

代码如下:
[AppleScript] 纯文本查看 复制代码
public class Demo02StringBuilder {
public static void main(String[] args) {    
//创建对象        
StringBuilder builder = new StringBuilder();        
//public StringBuilder append(任意类型)        
StringBuilder builder2 = builder.append("hello");        
//对比一下        
System.out.println("builder:"+builder);        
System.out.println("builder2:"+builder2);        
System.out.println(builder == builder2); //true        
    // 可以添加 任何类型    
builder.append("hello");        
builder.append("world");        
builder.append(true);        
builder.append(100);        
// 在我们开发中,会遇到调用一个方法后,返回一个对象的情况。然后使用返回的对象继续调用方法。        
        // 这种时候,我们就可以把代码现在一起,如append方法一样,代码如下
//链式编程        
builder.append("hello").append("world").append(true).append(100);        
System.out.println("builder:"+builder);        
}    
}


toString方法:
[AppleScript] 纯文本查看 复制代码
public class Demo16StringBuilder {
    public static void main(String[] args) {
        // 链式创建
        StringBuilder sb = new StringBuilder("Hello").append("World").append("Java");
        // 调用方法
        String str = sb.toString();
        System.out.println(str); // HelloWorldJava
    }
}













0 个回复

您需要登录后才可以回帖 登录 | 加入黑马