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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cccyj 初级黑马   /  2018-11-14 16:47  /  922 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 cccyj 于 2018-11-14 17:02 编辑

Day01内容概述


Object类 1-1

日期相关类: 1-2

    Date类 1-3

    DateFormat类 SimepleDateFormat 1-4

    Calendar类        1-5

System类 1-6

StringBuilder类 1-7

包装类 1-8


1-1

java.lang.Object类: 根类, 所有类的父类


成员方法:

toString() :返回该对象的字符串表示

作用:

                任何类的对象都可调用 toString(), 得到一个对象的字符串表示形式, 默认使用Object类中定义的方式

                如果不想使用默认方式, 子类可以重写toString()方法, 转换为自己想要的内容


一般我们都要输出JavaBean的属性名和属性值, Alt + Insert 选择 toString() 即可重写



equals(Object obj) :指示其他某个对象是否与此对象"相等"

重写equals()的作用:

        不重写时, 自定义对象默认继承Object类的equals()方法, 通过 == 比较地址值

        但开发时, 一般要重写equals()方法, 让对象"根据属性值"来判断是否相等


IDEA快捷键: Alt+Insert, 选 equals() and hashCode()


Object类的特点:

        1. 是类层次的根类. 每个类都(直接或间接地)使用Object类作为父类

        2. 所有类的对象都可以使用Object类中定义的方法


补充

// 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


1-2

    long String Calendar 与Date都可以进行互转

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



毫秒值的概念和作用:


时间原点: 从 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 毫秒


1-3

java.util.Date类: 日期, 表示特定的瞬间, 精确到"毫秒"

        // 构造方法

        Date(): 创建Date对象, 表示当前系统时间

Date(long date): 创建Date对象, 使用指定的毫秒值作为时间

        // 常用成员方法

        long getTime(): 获取Date对象中保存的时间毫秒值

        void setTime(long time): 修改Date对象的时间  


1-4

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): 用给定的模式和默认语言环境的日期格式符号创建对象

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个单引号: "''"

1-5

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



1-6

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: 长度 (要复制的元素个数)


1-7

+ 号拼接字符串的问题:

        String是不可变的, 使用加号进行字符串拼接, 会创建很多额外的对象, 浪费内存空间

java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存

        // 构造方法

        StringBuilder(): 构造一个空的StringBuilder容器

        StringBuilder(String str): String转StringBuilder

        // 常用方法

        StringBuilder append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象


链式调用:   

        new StringBuilder().append(1).append("hello").append(true);


java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存

        // 成员方法

        String toString(): 将当前StringBuilder对象转换为String对象



String和StringBuilder互转方法:

        StringBuilder(String str): String转StringBuilder

        String toString(): StringBuilder转String


1-8

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


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();


自动装箱与自动拆箱:

DK 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:

        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的!!


1 个回复

倒序浏览
6666666666666666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马