本帖最后由 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是不可变的, 使用加号进行字符串拼接, 会创建很多额外的对象, 浪费内存空间补充: 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();
|
|