本帖最后由 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的!!
|