Object类
Object概念使用方法以及注意事项
Object是根类 是全部类的父类
Object所在的包java.lang.Object,使用时不须要导包
本次学习的两个成员方法
返回值String 方法名toString() :返回该对象的字符串表示
返回值boolean 方法名equals(Object obj) :指示其余某个对象是否与此对象"相等" java
toString能够将对象的内容以字符串的形式打印出来;
可使用子类重写的方式重写toString方法;
+ Insert 选择 toString() 便可重写 数组
public boolean equals(Object obj) :指示其余某个对象是否与此对象"相等"
重写equals()的做用:
不重写时, 自定义对象默认继承Object类的equals()方法, 经过 == 比较地址值
但开发时, 通常要重写equals()方法, 让对象根据属性值来判断是否相等
IDEA快捷键: Alt+Insert, 选 equals() and hashCode() app
2:日期时间类 Date、long、String、Calendar
Date: 时间 long:表示时间,精确到毫秒,int数字
String:时间字符串 Calendar:日历
java.util.Date类: 日期, 表示特定的瞬间, 精确到"毫秒"
// 构造方法
Date(): 建立Date对象, 表示当前系统时间
Date(long date): 建立Date对象, 使用指定的毫秒值做为时间
// 经常使用成员方法
long getTime(): 获取Date对象中保存的时间毫秒值
void setTime(long time): 修改Date对象的时间 学习
DateFormat 类及其构造方法
java.text.DateFormat抽象类: 用于格式化和解析时间. 提供了方便的方法
// 经常使用成员方法 (抽象类不能建立对象, 但能够有非抽象的方法供子类使用)
String format(Date date): 格式化, 从Date对象转换为String对象
Date parse(String source): 解析, 从String对象转换为Date对象
java.text.SimpleDateFormat类
// 构造方法
SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号建立对象
// 使用指定的模式建立对象
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
y: 年 M: 月 d: 日 H: 时 (24小时制) m: 分
s: 秒 E: 星期 D: 年中的天 K: 小时(12小时制) S: 毫秒
例: ui
[Java]纯文本查看__复制代码翻译
?code
01orm
02对象
03继承
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
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
}
}
parse()解析时间:
将时间字符串解析为日期对象
// 已知日期字符串"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)
Calendar抽象类:表明日历
// 静态方法
static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间
// 获取日历对象的示例
Calendar c = Calendar.getInstance(); // 表明了当前时间
Calendar.getInstance() 会根据当前系统获取合适的子类对象, 咱们获取到的是 GregorianCalendar
// 静态成员变量
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);
日期转换总结:
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();获取当前时间毫秒
long now = System.currentTimeMillis();
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类:字符串拼接
以前学习的字符串拼接咱们经常使用“+”号
“+”使用加号进行字符串拼接, 会建立不少额外的对象, 浪费内存空间
实际上+加号在最终执行时, 会被翻译为:
new StringBuilder("原字符串").append("要拼接的字符串").toString();
额外建立了多余的StringBuilder对象
StringBuilder(): 构造一个空的StringBuilder容器
StringBuilder(String str): String转StringBuilder
StringBuilder append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
String toString(): 将当前StringBuilder对象转换为String对象
String和StringBuilder互转: 利用StringBuilder
StringBuilder(String str): String转StringBuilder
String toString(): StringBuilder转String
例:
/*
需求:
使用StringBuilder拼接如下内容:
123
true
你好Java
并最终转换为String类型, 打印出来
*/
[Java]纯文本查看__复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
}
}
次日内容 Collection 泛型
Collection接口
集合与数组的区别有两点
第一点 数组长度不可变 集合长度可变
第二点 数组只能存储同一类型的元素,而集合储存的都是对象,并且对象的类型能够不同,因此对象多的时候,使用集合。
Collection接口做为全部单列集合类型的祖类,所含有的方法是全部单列集合都能使用的共性方法,没有带索引的方法
分为list有序接口 和set无序接口
boolean add(E e):添加到集合中 。
void clear():清空集合中。
boolean remove(E e):删除指定对象。
boolean contains(E e): 判断是否包含某对象。
boolean isEmpty(): 判断集合是否为空。是的话返回true
int size(): 统计集合元素个数。
Object[] toArray(): 转成数组。
迭代器
Iterator接口用来遍历数组,也被称为迭代器
迭代:即Collection集合元素的通用获取方式。在取元素以前先要判断集合中有没有元素,若是有,就把这个元素取出来,继续在判断,若是还有就再取出出来。一直把集合中的全部元素所有取出。这种取出方式专业术语称为迭代。
Iterator接口的经常使用方法以下:
next:返回迭代的下一个元素。
hasNext():若是仍有元素能够迭代,则返回 true。
//迭代器对象
Iterator<String> it = coll.iterator();
// 泛型指的是迭代出元素的数据类型
while(it.hasNext()){ //判断是否有迭代元素
String s = it.next();//获取迭代出的元素
System.out.println(s);
}
加强for
加强for循环也叫for each循环,用来遍历数组和集合。它的内部原理实际上是个Iterator迭代器,不能再遍历时进行增删操做。
快捷键 集合名.for
泛型
先不肯定类型 等到使用时再肯定类型
泛型<>:
泛型的好处:
一、避免了类型转换的麻烦
二、将运行时的类型转换异常,转移到了编译时期,更有利于提早发现问题
Collection coll = new ArrayList();
coll.add(1);
for(Object o : coll){
sout(o)
}
方法中的泛型定义位置:
修饰符 和 返回值类型 之间
// 带有泛型的方法定义格式
修饰符 <表明泛型的名字> 返回值类型 方法名(参数){
}
方法中定义泛型后, 返回值类型和参数类型均可以使用泛型
方法泛型的使用:
在调用方法时肯定泛型的具体类型
定义泛型接口与定义泛型类同样
// 带有泛型的类定义格式
修饰符 interface接口名<表明泛型的变量> {
}
实现类实现了泛型接口后能够有2种选择:
1. 定义实现类时就肯定泛型的具体类型
2. 定义实现类时仍然沿用泛型, 直到建立该类对象时才肯定泛型的具体类型
泛型定义总结: 定义在类上的泛型: 有效范围: 整个类中都有效 什么时候肯定具体类型: 建立该类对象时肯定泛型的具体类型 定义在方法上的泛型: 有效范围: 方法中(包括返回值类型和参数类型)有效 什么时候肯定具体类型: 调用方法传参时肯定泛型的具体类型 定义在接口上的泛型: 有效范围: 接口中 什么时候肯定具体类型: 1. 子接口或实现类定义时肯定泛型的具体类型 2. 建立实现类对象时肯定泛型的具体类型