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

本帖最后由 xiekai_sjz 于 2018-9-13 15:15 编辑


day01 Object类 常用API
    今天我们进入就业班第一天的学习,今天我们来学习几个常用的API。首先是java中所有类的父类Object,日期相关的Date,SimpleDateFormat和Calendar。系统相关类System,与字符串相关的StringBuilder类,和封装类。
以下是今天的学习目标:
  • 能够说出Object类的特点
  • 能够重写Object类的toString方法
  • 能够重写Object类的equals方法
  • 能够使用日期类输出当前日期
  • 能够使用将日期格式化为字符串的方法
  • 能够使用将字符串转换成日期的方法
  • 能够使用System类的数组复制方法
  • 能够使用System类获取当前毫秒时刻值
  • 能够说出使用StringBuilder类可以解决的问题
  • 能够使用StringBuilder进行字符串拼接操作
  • 能够说出8种基本类型对应的包装类名称
  • 能够说出自动装箱、自动拆箱的概念
  • 能够将字符串转换为对应的基本类型
  • 能够将基本类型转换为对应的字符串




以下是今天的详细笔记:
Object类Object类概述
java.lang.Object类: 根类, 所有类的父类
        // 成员方法
        String toString() :返回该对象的字符串表示
        boolean equals(Object obj) :指示其他某个对象是否与此对象"相等"


Object类的特点:
        是所有类的父类, 任何一个类都直接或间接地继承自Object类, 并可以使用Object类中定义的方法
        一个类如果没有指定继承某个父类, 则默认继承Object类
补充:
[Java] 纯文本查看 复制代码
// 默认直接继承Object
public class Father {

}

// 直接继承Father, 间接继承Object
public class Son extends Father {

}

Object类之toString方法
public String toString() :返回该对象的字符串表示
        作用:
                任何类的对象都可调用toString(), 得到一个对象的字符串表示形式, 默认使用Object类中定义的方式
                如果不想使用默认方式, 子类可以重写toString()方法, 转换为自己想要的内容
        
一般我们都要输出JavaBean的属性名和属性值, Alt + Insert 选择 toString() 即可重写
补充:
[Java] 纯文本查看 复制代码
// Object类中toString()的实现方式:
public class Object {

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
}


代码解释:
    getClass().getName():
        getClass(): Object类的方法, 获取当前对象的类的字节码对象
        getClass().getName(): 通过字节码对象获取该类的全名
    Integer.toHexString(hashCode())
        hashCode(): Object类的方法, 获取当前对象地址值的哈希值
        Integer.toHexString(int n): 将参数转换为十六进制数字的字符串
    最终:
        itheima01Object.Person@75412c2f

5分钟练习: 重写toString
需求:
定义Person类:
        私有属性: 姓名String name, 年龄int age
        生成无参, 有参构造, set/get方法
        生成toString()方法
定义测试类, 创建Person对象, 设置姓名"张三", 年龄13, 打印对象查看效果
代码:
[Java] 纯文本查看 复制代码
public class Person {

    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    // 快捷键: Alt + Insert, 选择 toString()
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public class Test {
    public static void main(String[] args) {
        // 创建对象
        Person p = new Person("张三", 13);

        // 对象调用toString(), 然后将返回的字符串输出打印
        System.out.println(p.toString());  // Person{name='张三', age=13}

        // 直接将对象传入打印输出
        System.out.println(p);             // Person{name='张三', age=13}
    }
}

Object类之equals方法
public boolean equals(Object obj) :指示其他某个对象是否与此对象"相等"


重写equals()的作用:
        不重写时, 自定义对象默认继承Object类的equals()方法, 通过 == 比较地址值
        但开发时, 一般要重写equals()方法, 让对象根据属性值来判断是否相等

IDEA快捷键: Alt+Insert, 选 equals() and hashCode()
补充:
[Java] 纯文本查看 复制代码
// Object类中equals()的实现方式:
public class Object {

    public boolean equals(Object obj) {
        return (this == obj);  // 引用数据类型, ==比较对象的地址值是否相同
    }
}

5分钟练习: 重写equals()
需求:
定义Person类
        私有属性: 姓名String name, 年龄int age
        生成无参有参构造, set/get方法, toString()方法
        生成equals()方法
定义测试类
        创建3个Person对象:
                玛尔扎哈, 18
                玛尔扎哈, 18
                古力娜扎, 20
        使用重写的equals()方法比较3个对象是否相等
代码:
[AppleScript] 纯文本查看 复制代码
import java.util.Objects;

/*
定义Person类
        私有属性: 姓名String name, 年龄int age
        生成无参有参构造, set/get方法, toString()方法
        生成equals()方法
 */
public class Person {

    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        // 如果对象地址值相同, 则是同一个对象, 那么属性值肯定相同, 认为相等
        if (this == o) return true;
        // 如果被比较对象为null, 或者不是同一个类型, 则认为不相等
        if (o == null || getClass() != o.getClass()) return false;
        // 如果不是同一个对象, 且不为null, 且是一个类型, 则向下转型比较子类特有属性
        Person person = (Person) o;
        // 基本类型属性值用==比较, 引用类型属性值用Objects工具类的equals()比较
        return age == person.age &&
                Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

/*
需求:
定义Person类
        私有属性: 姓名String name, 年龄int age
        生成无参有参构造, set/get方法, toString()方法
        生成equals()方法
定义测试类
        创建3个Person对象:
                玛尔扎哈, 18
                玛尔扎哈, 18
                古力娜扎, 20
        使用重写的equals()方法比较3个对象是否相等
 */
public class Test {
    public static void main(String[] args) {
        Person p1 = new Person("玛尔扎哈", 18);
        Person p2 = new Person("玛尔扎哈", 18);
        Person p3 = new Person("古力娜扎", 20);

        System.out.println(p1.equals(p2));  // true, 虽然不是同一个对象 但属性值相同
        System.out.println(p1.equals(p3));  // false
        System.out.println(p2.equals(p3));  // false
    }
}

了解Objects类中的equals方法
java.util.Objects类: JDK7 添加. 操作对象的工具类, 提供了空指针安全的方法
        // 静态方法
        static boolean equals(Object a, Object b): 比较两个对象是否相等
                如果2个参数都是null, 返回true
                如果其中一个为null, 返回false
                如果2个参数都不为null, 则使用第1个参数对象的equals()方法来比较
补充:
[AppleScript] 纯文本查看 复制代码
// Objects类中equals()方法源码
public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}

日期时间相关的类
目标:
  • long和Date对象互转
  • String和Date对象互转  2010年11月11日
  • Calendar对象和Date对象互转

long        \       SimpleDateFormat         Date -------------------- String        /Calendar     
Date类及其方法介绍注意: 不要导错包! 有2个包中都有Date类, 一个是java.sql.Date, 另一个是java.util.Date
我们用的是 java.util.Date

java.util.Date类: 日期, 表示特定的瞬间, 精确到"毫秒"
        // 构造方法
        Date(): 创建Date对象, 表示当前系统时间
        Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
        // 常用成员方法
        long getTime(): 获取Date对象中保存的时间毫秒值
        void setTime(long time): 修改Date对象的时间


UNIX时间戳: 从0时区 1970-01-01 00:00:00 开始, 至今经过的毫秒值(1 秒 = 1000 毫秒)
        10位 精确到秒  : 1494992791    = 2017/5/17 11:46:31
        13位 精确到毫秒: 1494992791000 = 2017/5/17 11:46:31
补充:
// 换算示例(以0时区为例)
1970-01-01 00:00:00.000 = 0 毫秒
1970-01-01 00:00:00.500 = 500 毫秒
1970-01-01 00:00:01.000 = 1000 毫秒
1970-01-01 00:01:01.000 = (1000 * 60) + 1000 毫秒
1970-01-01 01:01:01.000 = (1000 * 60 * 60) + (1000 * 60) + 1000 毫秒
DateFormat类及其构造方法
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");
补充:
[Java] 纯文本查看 复制代码
// 说出以下格式化或解析时使用的模式
// 1990-01-01
"yyyy-MM-dd"
// 1990年12月31日
"yyyy年MM月dd日"
// 1990/01/01 16:30:00
"yyyy/MM/dd HH:mm:ss"

DateFormat类之格式化format方法
String format(Date date): 格式化, 从Date对象转换为String对象

例如, SimpleDateFormat对象的模式是: "yyyy年MM月dd日  HH:mm:ss"
那么, 将Date格式化后就可以是这种样子: 2018年01月02日  03:04:05
5分钟练习: format()格式化时间
需求:
创建SimpleDateFormat对象,指定模式(yyyy年MM月dd日  HH:mm:ss)
创建日期对象(使用当前系统时间)
使用format方法对日期对象格式化为字符串
代码:
[Java] 纯文本查看 复制代码
import java.text.SimpleDateFormat;
import java.util.Date;

/*
需求:
创建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方法
Date parse(String source): 解析, 从String对象转换为Date对象

例如, SimpleDateFormat对象的模式是: "yyyy-MM-dd"
要解析为Date对象的字符串必须符合模式: 2000-01-02
5分钟练习: parse()解析时间
需求:
已知日期字符串"2000-10-01"
将该日期字符串解析为日期对象,获取该日期对象的毫秒值并打印
代码:
[Java] 纯文本查看 复制代码
/*
需求:
已知日期字符串"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
    }
}

日期时间类小练习: 需求分析
需求: 键盘录入生日, 格式: yyyy年MM月dd日. 求出你来这个世界上多少天
思路:
        天数 = 今天 - 出生日期
        如何获取今天毫秒值: new Date().getTime()
        如何将出生日期String转long毫秒值: String -SimpleDateFormat-> Date -> long
        如何计算天数: 毫秒差 / 1000 / 60 / 60 / 24
日期时间类小练习: 代码实现5分钟练习: 求出你来这个世界上多少天
代码:
[Java] 纯文本查看 复制代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/*
需求: 键盘录入生日, 格式: yyyy年MM月dd日. 求出你来这个世界上多少天
思路:
        天数 = 今天 - 出生日期
        如何获取今天毫秒值: new Date().getTime()
        如何将出生日期String转long毫秒值: String -SimpleDateFormat-> Date -> long
        如何计算天数: 毫秒差 / 1000 / 60 / 60 / 24
 */
public class Test {
    public static void main(String[] args) throws ParseException {
        // 键盘录入生日
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入生日, 格式(yyyy年MM月dd日):");
        String birthDayStr = sc.nextLine();
        // 字符串转Date
        Date birthdayDate = new SimpleDateFormat("yyyy年MM月dd日").parse(birthDayStr);
        // Date转long
        long birthdayLong = birthdayDate.getTime();

        // 获取当前时间的毫秒值
        long nowLong = new Date().getTime();

        // 算出天数
        long days = (nowLong - birthdayLong) / 1000 / 60 / 60 / 24;

        System.out.println("您出生了" + days + "天");
    }
}

Calendar对象的获取方式java.util.Calendar抽象类: 代表日历, 提供了不同国家的历法, 封装了很多时间属性
        // 静态方法
        static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间
        
// 获取日历对象的示例
Calendar c = Calendar.getInstance();  // 代表了当前时间
Calendar.getInstance() 会根据当前系统获取合适的子类对象, 我们获取到的是 GregorianCalendar
Calendar类的常用功能
[Java] 纯文本查看 复制代码
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);

5分钟练习: 测试Calendar常用方法需求:
获取日历对象, 并测试以下方法
int get(int field)
void set(int field, int value)
void add(int field, int amount)
Date getTime()
void setTime(Date d)
代码:
[AppleScript] 纯文本查看 复制代码
/*
需求:
获取日历对象, 并测试以下方法
int get(int field)
void set(int field, int value)
void add(int field, int amount)
Date getTime()
void setTime(Date d)
 */
public class Test {
    public static void main(String[] args) {
        // 获取日历对象
        Calendar cal = Calendar.getInstance();

        // int get(int field): 获取时间属性值
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;  // 月份从0到11
//        int day = cal.get(Calendar.DATE);
        int day = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "年" + month + "月" + day + "日");

        // void set(int field, int value): 修改时间属性值
        cal.set(Calendar.YEAR, 2000);

        year = cal.get(Calendar.YEAR);
        month = cal.get(Calendar.MONTH) + 1;  // 月份从0到11
        day = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "年" + month + "月" + day + "日");

        // void add(int field, int amount): 调整时间属性值
        cal.add(Calendar.YEAR, 100);

        year = cal.get(Calendar.YEAR);
        month = cal.get(Calendar.MONTH) + 1;  // 月份从0到11
        day = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "年" + month + "月" + day + "日");

        // Date getTime(): Calendar转Date
        Date date = cal.getTime();
        System.out.println(date);

        // void setTime(Date d): Date转Calendar
        cal.setTime(new Date());

        year = cal.get(Calendar.YEAR);
        month = cal.get(Calendar.MONTH) + 1;  // 月份从0到11
        day = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "年" + month + "月" + day + "日");

    }
}

日期转换总结:
long (数学计算)        \       SimpleDateFormat         Date -------------------- String (用户输入和显示)        /Calendar (获取时间的某个部分)long和Date对象互转        利用Date                Date(long millis): long转Date                long getTime(): Date转longString和Date对象互转        利用SimpleDateFormat                Date parse(String s): String转Date                String format(Date): Date转StringCalendar对象和Date对象互转        利用Calendar                Date getTime(): Calendar转Date                void setTime(Date d): Date转Calendar
System类System类之获取时间毫秒值
java.lang.System类: 系统相关功能
        // 静态方法
        static long currentTimeMillis(): 返回当前系统时间的毫秒值
5分钟练习: 测试代码运行时间
需求:
写一个for循环, 打印10万次"我爱Java", 统计运行时间
代码:
[Java] 纯文本查看 复制代码
/*
需求:
写一个for循环, 打印10万次"我爱Java", 统计运行时间
 */
public class Test {
    public static void main(String[] args) {
        // 先记录开始时间毫秒值
        long start = System.currentTimeMillis();
        // 循环
        for (int i = 0; i < 100000; i++) {
            System.out.println("我爱Java " + i);
        }
        // 循环结束后记录结束时间毫秒值
        long end = System.currentTimeMillis();

        // 显示结果
        System.out.println("程序执行时间: " + (end - start) + "毫秒");
    }
}

System类之数组复制方法
java.lang.System类: 系统相关功能
        // 静态方法
        static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 复制源数组中指定长度个元素到一个新数组中
        * Object src: 源数组 (被复制的数组)
        * int srcPos: 源数组索引 (从源数组的哪个索引开始复制)
        * Object dest: 目标数组 (要复制到哪个数组)
        * int destPos: 目标数组索引 (指定目标数组接收元素的索引位置)
        * int length: 长度 (要复制的元素个数)
StringBuilder类字符串拼接问题
+号拼接字符串的问题:
        String是不可变的, 使用加号进行字符串拼接, 会创建很多额外的对象, 浪费内存空间
补充:
实际上+加号在最终执行时, 会被翻译为:
        new StringBuilder("原字符串").append("要拼接的字符串").toString();
额外创建了多余的StringBuilder对象

StringBuilder概述与构造
java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存
        // 构造方法
        StringBuilder(): 构造一个空的StringBuilder容器
        StringBuilder(String str): String转StringBuilder
StringBuilder常用方法
java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存
        // 常用方法
        StringBuilder append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
        String toString(): 将当前StringBuilder对象转换为String对象
补充:
String和StringBuilder互转: 利用StringBuilder
        StringBuilder(String str): String转StringBuilder
        String toString(): StringBuilder转String
5分钟练习: 测试StringBuilder
需求:
使用StringBuilder拼接以下内容:
        123
        true
        你好Java
并最终转换为String类型, 打印出来
代码:
[Java] 纯文本查看 复制代码
/*
需求:
使用StringBuilder拼接以下内容:
        123
        true
        你好Java
并最终转换为String类型, 打印出来
 */
public class Test {
    public static void main(String[] args) {
        // 创建StringBuilder对象
        StringBuilder sb = new StringBuilder();
        // 链式调用
        sb.append(123).append(true).append("你好Java");
        // 转换为String
        String s = sb.toString();

        System.out.println(s);  // 123true你好Java

        // 更简单的配合匿名对象形式
        String result = new StringBuilder().append(123).append(true).append("你好Java").toString();
        System.out.println(result);  // 123true你好Java

    }
}

包装类包装类概述
包装类: 基本数据类型对应的引用数据类型

ArrayList<Integer> list = ...
list.add(10)
int a = list.get(0);

基本类型 对应的包装类(在java.lang包中)
byte Byte
short Short
int
Integer
long Long
float Float
double Double
char Character
boolean Boolean

自动装箱与自动拆箱装箱: 从基本类型转换为对应的包装类对象
拆箱: 从包装类对象转换为对应的基本类型

JDK 5开始, 装箱和拆箱都是**自动的**

[Java] 纯文本查看 复制代码
// 自动装箱原理
Integer i2 = Integer.valueOf(4); //使用包装类中的valueOf方法

// 自动拆箱原理
int num = i.intValue();

补充:
[Java] 纯文本查看 复制代码
// 以下代码哪里涉及了自动装箱与自动拆箱
Integer i = 10;     // 自动装箱: Integer i = Integer.valueOf(10);
Integer j = 20;     // 自动装箱: Integer j = Integer.valueOf(20);
Integer k = i + j;  // 先拆箱再装箱: Integer k = Integer.valueOf(i.intValue() + j.intValue());

包装类常用方法: 基本类型与字符串之间转换
基本类型转为String: 拼接空字符串
        "" + 34
        true + ""
String转基本类型: 利用包装类的静态方法
    static byte parseByte(String s): 将字符串参数转换为对应的byte基本类型
    static short parseShort(String s): 将字符串参数转换为对应的short基本类型 Short
    static int parseInt(String s): 将字符串参数转换为对应的int基本类型 Integer
    static long parseLong(String s): 将字符串参数转换为对应的long基本类型
    static float parseFloat(String s): 将字符串参数转换为对应的float基本类型
    static double parseDouble(String s): 将字符串参数转换为对应的double基本类型
    static boolean parseBoolean(String s): 将字符串参数转换为对应的boolean基本类型

5分钟练习:  求出字符串"123"各位数字之和
需求:
求出字符串"123"各位数字之和 123

思路:
        "123"获取每个位的数字:
                1. String转int: int a = Integer.parseInt("123")
                2. %获取各个位
                3. 相加
代码:
[Java] 纯文本查看 复制代码
/*
需求:
求出字符串"123"各位数字之和 123

思路:
	"123"获取每个位的数字:
		1. String转int: int a = Integer.parseInt("123")
		2. %获取各个位
		3. 相加
 */
public class Test {
    public static void main(String[] args) {
        // 定义字符串
        String s = "123";

        // 将字符串转换为int
        int i = Integer.parseInt(s);
        // 获取整数的每个位
        int ge = i % 10;
        int shi = i / 10 % 10;
        int bai = i / 100 % 10;

        // 相加
        int sum = ge + shi + bai;

        System.out.println(sum);  // 6
    }
}

今日API
java.lang.Object类: 根类, 所有类的父类
        // 成员方法
        String toString() :返回该对象的字符串表示
        boolean equals(Object obj) :指示其他某个对象是否与此对象"相等"

java.util.Objects类: JDK7 添加. 操作对象的工具类, 提供了空指针安全的方法
        // 静态方法
        static boolean equals(Object a, Object b): 比较两个对象是否相等
                如果2个参数都是null, 返回true
                如果其中一个为null, 返回false
                如果2个参数都不为null, 则使用第1个参数对象的equals()方法来比较
               
java.util.Date类: 日期, 表示特定的瞬间, 精确到"毫秒"
        // 构造方法
        Date(): 创建Date对象, 表示当前系统时间
        Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
        // 常用成员方法
        long getTime(): 获取Date对象中保存的时间毫秒值
        void setTime(long time): 修改Date对象的时间
       
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: 毫秒
               
java.util.Calendar抽象类: 代表日历, 提供了不同国家的历法, 封装了很多时间属性
        // 静态方法
        static Calendar getInstance(): 根据当前系统设置获取合适的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): 获取指定日历字段的值
        void set(int field, int value): 修改指定日历字段为指定的值
        void add(int field, int amount): 调整指定日历字段的值. 正数增加, 负数减少
        Date getTime(): Calendar转Date
        void setTime(Date d): Date转Calendar

java.lang.System类: 系统相关功能
        // 静态方法
        static long currentTimeMillis(): 返回当前系统时间的毫秒值
        static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 复制源数组中指定长度个元素到一个新数组中
        * Object src: 源数组 (被复制的数组)
        * int srcPos: 源数组索引 (从源数组的哪个索引开始复制)
        * Object dest: 目标数组 (要复制到哪个数组)
        * int destPos: 目标数组索引 (指定目标数组接收元素的索引位置)
        * int length: 长度 (要复制的元素个数)

java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存
        // 构造方法
        StringBuilder(): 构造一个空的StringBuilder容器
        StringBuilder(String str): String转StringBuilder
        // 常用方法
        StringBuilder append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
        String toString(): 将当前StringBuilder对象转换为String对象
       
基本类型转为String: 拼接空字符串
        "" + 34
        true + ""

String转基本类型: 利用包装类的静态方法
    static byte parseByte(String s): 将字符串参数转换为对应的byte基本类型
    static short parseShort(String s): 将字符串参数转换为对应的short基本类型
    static int parseInt(String s): 将字符串参数转换为对应的int基本类型
    static long parseLong(String s): 将字符串参数转换为对应的long基本类型
    static float parseFloat(String s): 将字符串参数转换为对应的float基本类型
    static double parseDouble(String s): 将字符串参数转换为对应的double基本类型
    static boolean parseBoolean(String s): 将字符串参数转换为对应的boolean基本类型































1 个回复

正序浏览
都不是好孩子,居然没人回复!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马