黑马程序员技术交流社区
标题: 【石家庄校区】就业班day01 Object类 常用API [打印本页]
作者: xiekai_sjz 时间: 2018-9-13 15:05
标题: 【石家庄校区】就业班day01 Object类 常用API
本帖最后由 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 \ 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基本类型
作者: cuipu 时间: 2018-9-14 08:26
都不是好孩子,居然没人回复!
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |