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

© 849618121 初级黑马   /  2018-11-20 17:01  /  823 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 849618121 于 2018-11-26 14:58 编辑

重写toString方法任何类的对象都可调用 toString(), 得到一个对象的字符串表示形式, 默认使用Object类中定义的方式
如果不想使用默认方式, 子类可以重写toString()方法, 转换为自己想要的内容
测试类中Alt + Insert 选择 toString() 即可重写

// 生成toString: Alt + Insert, 选择 toString, 全选所有属性
  @Override
  public String toString() {
    return "Person{" +
        "name='" + name + '\'' +
        ", age=" + age +
        '}';
}

public static void main(String[] args) {
    // 创建Person对象, 并封装存储数据
    Person person = new Person("张三", 13);
    // Person对象可以调用继承自Object类的toString方法, 将自身对象转换为字符串形式
    // 但如果子类不满足于父类的方法, 也可以重写
    // 创建的子类已经重写了toString, 所以调用的是子类重写后的toString
    String s = person.toString();
    System.out.println(s);
    // 直接打印一个对象, 也可以打印出对象的字符串形式
    System.out.println(person);
}

重写equals方法
public boolean equals(Object obj) {
    return (this == obj);  // 引用数据类型, ==比较对象的地址值是否相同
}
重写equals()的作用:
        不重写时, 自定义对象默认继承Object类的equals()方法, 通过 == 比较地址值
        但开发时, 一般要重写equals()方法, 让对象"根据属性值"来判断是否相等


IDEA快捷键: Alt+Insert, 选 equals() and hashCode()
// Objects类中equals()方法源码
    public static boolean equals(Object a, Object b) {
         return (a == b) || (a != null && a.equals(b));
    }

日期时间相关的类

有2个包中都有Date类, 一个是java.sql.Date,另一个是java.util.Date,我们用的是 java.util.Date
Date类: 是日期类, 表示特定的瞬间, 精确到"毫秒"1000毫秒==1秒
DateFormat类和SimpleDateFormat类
format是格式化时间格式 把时间转化为String

SimpleDateFormat是创建时间对象yyyy-MM-dd
parse是将String格式化为Data
Calendar类: 获取Calendar对象
根据当前系统设置获取合适的Calendar对象, 表示当前系统时间
Calendar c = Calendar.getInstance();  // 代表了当前时间
// 获取日期:
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);
日期转换总结:
  long (数学计算)
    \    SimpleDateFormat
    Date -------------------- String (用户输入和显示)
    /
Calendar (获取时间的某个部分, 调整时间)
long和Date对象互转
利用Date
Date(long millis): long转Date
long getTime(): Date转long
String和Date对象互转
利用SimpleDateFormat
Date parse(String s): String转Date
String format(Date): Date转String
Calendar对象和Date对象互转
利用Calendar
Date getTime(): Calendar转Date
void setTime(Date d): Date转Calendar
System类: currentTimeMillis()和arrayCopy()方法
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: 长度 (要复制的元素个数)
StringBuilder类
解决字符串拼接问题
链式调用:  
new StringBuilder().append(1).append("hello").append(true);
包装类
基本类型转为String:
1. 拼接空字符串:
String s = "" + 34
2. 每个包装类中的静态方法 static String toString(参数):
String s = Integer.toString(10);
3. String类中的静态方法 static String valueOf(参数):
String s = String.valueOf(10);
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基本类型
  注意: 没有转char的!!

day01 Object类 常用API 就业班JavaSE高级部分大纲
                         共13+1天
常用API                     1天 目的: 熟悉常见的操作, 包括日期转换等, 能实现常见业务逻辑
        Object, 常用API
集合API                     3天 目的: 掌握更多不同特性的集合, 了解简单的数据结构, 更合适的存储数据
        Collection
        List, Set
        Map
异常, 多线程, Lambda表达式    3天 目的: 掌握异常处理, 多线程的基础, 为web开发中网络请求处理打下基础
        异常, 多线程
        多线程的同步技术
        线程池, Lambda表达式
IO流                        3天 目的: 掌握输入输出流的操作原理, 为web开发中的文件上传下载打下基础
        File, 递归, FileFilter
        字节流, 字符流
        转换流, 高效流, 对象流, 打印流
网络编程                     1天 目的: 了解网络通信底层原理, 为web开发中的HTTP协议打下基础
函数式编程                   2天 目的: 了解Java8提供的函数式编程思想, 为学习web框架原理打下基础
        Lambda表达式, 函数式接口
        Stream流式操作, 方法引用
基础加强                     1天 目的: 为学习web框架底层原理打下基础
        JUnit
        反射
        注解            
今日内容概述
Object类
日期相关类:
    Date类
    DateFormat类 SimepleDateFormat
    Calendar类
System类
StringBuilder类
包装类
Object类
Object类: toString方法知识点:
Object类有什么特点
Object类中的 toString() 方法有什么作用, 该方法默认打印什么内容
我们自己定义的JavaBean对象, 如果想在打印对象时, 不打印地址值, 而想要打印出对象的属性值, 应该怎么办
总结:
java.lang.Object类: 根类, 所有类的父类
        // 成员方法
        String toString() :返回该对象的字符串表示  Person
        boolean equals(Object obj) :指示其他某个对象是否与此对象"相等"


Object类的特点:
        1. 是类层次的根类. 每个类都(直接或间接地)使用Object类作为父类
        2. 所有类的对象都可以使用Object类中定义的方法
       
public String toString() :返回该对象的字符串表示
        作用:
                任何类的对象都可调用 toString(), 得到一个对象的字符串表示形式, 默认使用Object类中定义的方式
                如果不想使用默认方式, 子类可以重写toString()方法, 转换为自己想要的内容
       
一般我们都要输出JavaBean的属性名和属性值, Alt + Insert 选择 toString() 即可重写
补充:
// 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): 将参数转换为十六进制数字的字符串
    最终:
        com.itheima01.Person@75412c2f
5分钟练习: 重写toString
需求:
定义Person类:
        私有属性: 姓名 String name, 年龄 int age
        生成无参, 有参构造, set/get方法
        生成 toString()方法
定义测试类
        创建Person对象, 设置姓名"张三", 年龄13, 打印对象查看效果
代码:
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;
    }    // 生成toString: Alt + Insert, 选择 toString, 全选所有属性    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}public class Test {    public static void main(String[] args) {
        // 创建Person对象, 并封装存储数据
        Person person = new Person("张三", 13);        // Person对象可以调用继承自Object类的toString方法, 将自身对象转换为字符串形式
        // 但如果子类不满足于父类的方法, 也可以重写
        // 创建的子类已经重写了toString, 所以调用的是子类重写后的toString
        String s = person.toString();
        System.out.println(s);        // 直接打印一个对象, 也可以打印出对象的字符串形式
        System.out.println(person);        /*
            com.itheima.test01.Person
            @
            282ba1e
         */
    }
}
Object类: equals方法的默认实现方式知识点:
Object类中的 equals() 方法有什么作用, 默认方式是如何比较两个对象是否相等
总结:
public boolean equals(Object obj) :指示其他某个对象是否与此对象"相等"
    // Object类中equals()的实现方式:
public class Object {    public boolean equals(Object obj) {
        return (this == obj);  // 引用数据类型, ==比较对象的地址值是否相同
    }
}
补充: Object类: 重写equals()方法知识点:
我们自己定义的JavaBean对象, 如果想根据属性值比较是否相等, 应该怎么办
总结:
重写equals()的作用:
        不重写时, 自定义对象默认继承Object类的equals()方法, 通过 == 比较地址值
        但开发时, 一般要重写equals()方法, 让对象"根据属性值"来判断是否相等IDEA快捷键: Alt+Insert, 选 equals() and hashCode()
补充: 了解Objects类中的equals方法知识点:
Objects类有什么用, 与Object类一样吗
Objects类中的 equals(Object a, Object b) 方法, 有什么作用
总结:
s1 = null;
s1.equals(s2);  // NullPointerException
java.util.Objects类: JDK7 添加. 操作对象的工具类, 提供了空指针安全的方法
        // 静态方法
        static boolean equals(Object a, Object b): 比较两个对象是否相等
                如果2个参数都是null, 返回true
                如果其中一个为null, 返回false
                如果2个参数都不为null, 则使用第1个参数对象的equals()方法来比较
补充:
// Objects类中equals()方法源码
public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}
5分钟练习: 重写equals()
需求:
定义Person类
        私有属性: 姓名String name, 年龄int age
        生成无参有参构造, set/get方法, toString() 方法
        生成 equals() 方法
定义测试类
        创建3个Person对象:
                玛尔扎哈, 18
                玛尔扎哈, 18
                古力娜扎, 20
        使用重写的 equals() 方法比较3个对象是否相等
代码:
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, 选择 equals() and hashCode()
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name);
    }
    // hashCode 方法目前用不上
    /*@Override
    public int hashCode() {        return Objects.hash(name, age);
    }*/
}public class Test {    public static void main(String[] args) {
        // 创建3个对象封装数据
        Person p1 = new Person("玛尔扎哈", 18);
        Person p2 = new Person("玛尔扎哈", 18);
        Person p3 = new Person("古力娜扎", 20);        // 比较3个对象保存的数据是否相同
        System.out.println(p1.equals(p2));  // true, 姓名年龄均相同
        System.out.println(p2.equals(p3));  // false
        System.out.println(p3.equals(p1));  // false
    }
}
日期时间相关的类目标:
* long和Date对象互转
* String和Date对象互转
* Calendar对象和Date对象互转
    long
        \       SimpleDateFormat
         Date -- String
        /
Calendar
毫秒值的概念和作用知识点:
毫秒和秒如何换算
编程中的时间毫秒值, 是从什么时间开始计算的
总结:
时间原点: 从 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 毫秒
Date类: 构造方法, 成员方法知识点:
Date类表示什么
Date类的对象的常用构造方法有哪些
哪些方法可以修改和获取Date对象所表示的时间
时间从什么时候开始?
总结:
注意: 不要导错包! 有2个包中都有Date类, 一个是java.sql.Date, 另一个是java.util.Date
我们用的是 java.util.Datejava.util.Date类: 日期, 表示特定的瞬间, 精确到"毫秒"
        // 构造方法
        Date(): 创建Date对象, 表示当前系统时间
        Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
        // 常用成员方法
        long getTime(): 获取Date对象中保存的时间毫秒值
        void setTime(long time): 修改Date对象的时间  
补充: DateFormat类和SimpleDateFormat类知识点:
DateFormat抽象类有什么用
哪个方法可以将Date对象转换为String(格式化)  
哪个方法可以将String转换为Date对象(解析)
SimpleDateFormat类如何创建对象, 解析和格式化的 模式字符串(标准) 如何编写
总结:
java.text.DateFormat抽象类: 用于格式化和解析时间. 提供了方便的方法
        // 常用成员方法 (抽象类不能创建对象, 但可以有非抽象的方法供子类使用)
        String format(Date date): 格式化, 从Date对象转换为String对象
        Date parse(String source): 解析, 从String对象转换为Date对象
       
        date -> String "yyyy年MM月dd日 HH:mm:ss"
       
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");
补充:
// 说出以下格式化或解析时使用的模式
// 1990-01-01
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 1990年12月31日
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");
// 1990/01/01 16:30:00
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
格式化和解析方法: format()方法, parse()方法知识点:
如何利用 SimpleDateFormat对象 和 format()方法 将Date对象格式化为String
如何利用 SimpleDateFormat对象 和 parse()方法 将String对象格式化为Date
总结:
String format(Date date): 格式化, 从Date对象转换为String对象
        例如, SimpleDateFormat对象的模式是: "yyyy年MM月dd日  HH:mm:ss"
        那么, 将Date格式化后就可以是这种样子: 2018年01月02日  03:04:05

Date parse(String source): 解析, 从String对象转换为Date对象
        例如, SimpleDateFormat对象的模式是: "yyyy-MM-dd"
        要解析为Date对象的字符串必须符合模式: 2000-01-02
补充: 练习: 求出你来这个世界上多少天
需求: 键盘录入生日, 格式: yyyy年MM月dd日. 求出你来这个世界上多少天
思路:
        天数 =
        如何获取今天毫秒值:
        如何将出生日期String转long毫秒值:
        如何计算天数:
5分钟练习: 求出你来这个世界上多少天代码:
public class Test {
    public static void main(String[] args) throws ParseException {
        // 键盘录入
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入出生日期, 格式yyyy年MM月dd日:");
        String birthdayStr = scanner.next();        // 将出生日期String转换为Date, 再将Date转换为long毫秒值
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date birthdayDate = sdf.parse(birthdayStr);
        long birthdayMillis = birthdayDate.getTime();        // 获取当前系统时间
        long todayMillis = new Date().getTime();        // 计算时间差
        long days = (todayMillis - birthdayMillis) / 1000 / 60 / 60 / 24;
        System.out.println("你出生了" + days + "天");
    }
}
Calendar类: 获取Calendar对象知识点:
Calendar抽象类代表什么
获取Calendar的对象的特殊方式是什么
思考: 抽象类不能创建对象, 那么实际获取到的应该是什么对象?
总结:
java.util.Calendar抽象类: 代表日历, 提供了不同国家的历法, 封装了很多时间属性
        // 静态方法
        static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间
       
// 获取日历对象的示例
Calendar c = Calendar.getInstance();  // 代表了当前时间
补充:
Calendar.getInstance(); 会根据当前系统获取合适的子类对象, 我们获取到的是 GregorianCalendar
Calendar类: 常用功能知识点:
如何通过Calendar对象, 获取年, 月, 日等时间属性?
如何通过Calendar对象, 修改年, 月, 日等时间属性?
如何通过Calendar对象, 调整年, 月, 日等时间属性? 如加X天, 减X天
如何将Calendar对象与Date对象互转
总结:
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       :秒
        // 非静态成员方法  2018 09 11
        int get(int field): 获取指定日历字段的值   int date = cal.get(Calendar.DAY_OF_MONTH)
        void set(int field, int value): 修改指定日历字段为指定的值
        void set(int year, int month, int date): 快速设置年月日
        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);
补充:日期转换总结:
    long (数学计算)
        \       SimpleDateFormat
         Date -- String (用户输入和显示)
        /
Calendar (获取时间的某个部分, 调整时间)
long和Date对象互转
        利用Date
                Date(long millis): long转Date
                long getTime(): Date转long
String和Date对象互转
        利用SimpleDateFormat
                Date parse(String s): String转Date
                String format(Date): Date转String
Calendar对象和Date对象互转
        利用Calendar
                Date getTime(): Calendar转Date
                void setTime(Date d): Date转Calendar System类
System类: currentTimeMillis()和arrayCopy()方法知识点:
System类中, 哪个方法可以获取到当前系统时间的毫秒值
System类中, 哪个方法可以复制数组
总结:
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: 长度 (要复制的元素个数)
补充: 5分钟练习: 测试代码运行时间
需求:
写一个for循环, 打印10万次"我爱Java", 统计运行时间
代码:
public class Test {
    public static void main(String[] args) {
        // 先获取循环之前的毫秒值
        long start = System.currentTimeMillis();        // 循环10万次
        for (int i = 0; i < 100000; i++) {
            System.out.println("我爱Java");
        }        // 循环结束后, 再次获取一次毫秒值
        long end = System.currentTimeMillis();        // 计算差值, 打印
        System.out.println("程序运行了:" + (end - start));    }
} StringBuilder类
StringBuilder原理: 字符串拼接问题知识点:
理解 +拼接 String 有什么缺点
总结:
+号拼接字符串的问题:
        String是不可变的, 使用加号进行字符串拼接, 会创建很多额外的对象, 浪费内存空间![](./img/01_StringBuilder的原理.bmp)补充: StringBuilder: 构造方法和append()拼接方法知识点:
StringBuilder类有什么作用
StringBuilder有哪些常用构造方法
总结:
java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存
        // 构造方法
        StringBuilder(): 构造一个空的StringBuilder容器
        StringBuilder(String str): String转StringBuilder
        // 常用方法
        StringBuilder append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
       
链式调用:   
        new StringBuilder().append(1).append("hello").append(true);
补充: StringBuilder: toString()知识点:
如何将StringBuilder转换为String
总结:
java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存
        // 成员方法
        String toString(): 将当前StringBuilder对象转换为String对象
补充:
String和StringBuilder互转: 利用StringBuilder
        StringBuilder(String str): String转StringBuilder
        String toString(): StringBuilder转String
5分钟练习: 测试StringBuilder
需求:
使用StringBuilder拼接以下内容:
        123
        true
        你好Java
并最终转换为String类型, 打印出来
代码:
public class Test {
    public static void main(String[] args) {
        // 创建StringBuilder对象
        StringBuilder bu = new StringBuilder();
        // 拼接内容
        bu.append(123);
        bu.append(true);
        bu.append("你好Java");
        // 转换为String
        String s = bu.toString();
        System.out.println(s);        System.out.println("-");        // 还可以用匿名对象和链式调用, 一行代码完成
        String s2 = new StringBuilder().append(123).append(true).append("你好Java").toString();
        System.out.println(s2);
    }
} 包装类
包装类: 概述知识点:
回忆什么是包装类
总结:
包装类: 基本数据类型对应的引用数据类型ArrayList<Integer> list = new ArrayList<>();
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|补充: 包装类: 装箱与拆箱知识点:
什么是包装类中的装箱和拆箱
总结:
装箱: 从基本类型转换为对应的包装类对象
        装箱原理:
        //Integer i1 = new Integer(1);
        //Integer i2 = new Integer("1");
        Integer i3 = Integer.valueOf(1); //使用包装类中的静态方法valueOf()
拆箱: 从包装类对象转换为对应的基本类型
        拆箱原理:
        int num = i.intValue();
补充: 包装类: 自动装箱与自动拆箱知识点:
代码中如何体现自动装箱和自动拆箱
总结:
JDK 5开始, 装箱和拆箱都是自动的Integer i = 10;
int a = i;ArrayList<Integer> list = new ArrayList<>();
list.add(10);
int a = list.get(0);
补充:
// 以下代码哪里涉及了自动装箱与自动拆箱
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
如何将String转换为基本类型  "1" -> int
总结:
基本类型转为String:
        1. 拼接空字符串:
                String s = "" + 34
        2. 每个包装类中的静态方法 static String toString(参数):
                String s = Integer.toString(10);
        3. String类中的静态方法 static String valueOf(参数):
                String s = String.valueOf(10);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基本类型
    注意: 没有转char的!!
补充: 今日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 set(int year, int month, int date): 快速设置年月日
        void add(int field, int amount): 调整指定日历字段的值. 正数增加, 负数减少
        Date getTime(): Calendar转Date
        void setTime(Date d): Date转Calendarjava.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:
        1. 拼接空字符串:
                String s = "" + 34
        2. 每个包装类中的静态方法 static String toString(参数):
                String s = Integer.toString(10);
        3. String类中的静态方法 static String valueOf(参数):
                String s = String.valueOf(10);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基本类型
    注意: 没有转char的!!
今日目标 能够说出Object类的特点
特点:
        1. Object类是所有类的根类
        2. 所有类的对象都能使用Object继承下来的方法
能够重写Object类的toString方法
        目的: 想看JavaBean的属性值
        操作: Alt + Insert, 选择 toString() , 全选
能够重写Object类的equals方法
        目的: 比较两个对象的属性值来判断对象是否相等
        操作: Alt + Insert, 选择 equals() and hashCode(), 全选 能够使用将日期格式化为字符串的方法
Date 日期类
        Calendar 日历类Date -> StringSimpleDateFormat(模式)
        String format(Date d)
        能够使用将字符串转换成日期的方法
        String -> DateSimpleDateFormat(模式)
        Date parse(String s)    Add exception to method signature
能够说出使用StringBuilder类可以解决的问题
        String +拼接浪费内存的问题
能够使用StringBuilder进行字符串拼接操作
        new StringBuilder()
        StringBuilder append(任意类型)
        String toString()
能够说出8种基本类型对应的包装类名称
        Byte
        Short
        Integer
        Long
        Float
        Double
        Character
        Booleanint Integer 两个不同的类型
值可以转换(拆箱, 装箱)
能够说出自动装箱、自动拆箱的概念
        自动装箱: 基本 -> 包装 Integer.valueOf()
        自动拆箱: 包装 -> 基本 int a = i.intValue();







0 个回复

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