Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例
化的时候,最终找的父类就是Object。public String toString():返回该对象的字符串表示。
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因
此也需要重写它。
调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定
义两种方式。
默认地址比较:
如果没有覆盖重写equals方法,那么Object类中默认进行 == 运算符的对象地址比较,只要不是同一个对象,结果
必然为false。
对象内容比较:
如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方
法。
Date时间类:继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把
毫秒值转成日期对象。
public Date() :分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
public Date(long date) :分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元
(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转
换,也就是可以在Date对象与String对象之间进行来回转换。
格式化:按照指定的格式,从Date对象转换为String对象。
模式(格式)来指定格式化或解析的标准。构造方法为:
public SimpleDateFormat(String pattern) :用给定的模式和默认语言环境的日期格式符号构造
SimpleDateFormat。
参数pattern是一个字符串,代表日期时间的自定义格式
public String format(Date date) :将Date对象格式化为字符串。
public Date parse(String source) :将字符串解析为Date对象
使用日期时间相关的API,计算出一个人已经出生了多少天。
1获取当前时间对应的毫秒值
2.获取自己出生日期对应的毫秒值
3.两个时间相减(当前时间– 出生日期)
代码实现:
public static void function() throws Exception {
System.out.println("请输入出生日期 格式 YYYY‐MM‐dd");
// 获取出生日期,键盘输入
String birthdayString = new Scanner(System.in).next();
// 将字符串日期,转成Date对象
// 创建SimpleDateFormat对象,写日期模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy‐MM‐dd");
// 调用方法parse,字符串转成日期对象
Date birthdayDate = sdf.parse(birthdayString);
// 获取今天的日期对象
Date todayDate = new Date();
// 将两个日期转成毫秒值,Date类的方法getTime
long birthdaySecond = birthdayDate.getTime();
long todaySecond = todayDate.getTime();
long secone = todaySecond‐birthdaySecond;
if (secone < 0){
System.out.println("还没出生呢");
} else {
System.out.println(secone/1000/60/60/24);
}
}
时间类型的相互转换:
long
\SimpleDateFormat
Date-------------------- String
/
Calenda
Collection是所有单列集合的最顶层接口
Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可
用于操作所有的单列集合。方法如下:
public boolean add(E e) : 把给定的对象添加到当前集合中 。
public void clear() :清空集合中所有的元素。
public boolean remove(E e) : 把给定的对象在当前集合中删除。
public boolean contains(E e) : 判断当前集合中是否包含给定的对象。
public boolean isEmpty() : 判断当前集合是否为空。
public int size() : 返回集合中元素的个数。
public Object[] toArray() : 把集合中的元素,存储到数组中
Iterator接口:
迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个
元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业
术语称为迭代。
Iterator接口的常用方法:
public E next() :返回迭代的下一个元素。
public boolean hasNext() :如果仍有元素可以迭代,则返回 true。
在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升
成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。
我们在集合中会大量使用到泛型,这里来完整地学习泛型知识。
泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。
泛型通配符:
当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配
符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。
通配符高级使用----受限泛型
之前设置泛型的时候,实际上是可以任意设置的,只要是类就可以设置。但是在JAVA的泛型中可以指定一个
泛型的上限和下限。
泛型的上限:
格式: 类型名称 <? extends 类 > 对象名称
意义: 只能接收该类型及其子类
泛型的下限:
格式: 类型名称 <? super 类 > 对象名称
意义: 只能接收该类型及其父类型
比如:现已知Object类,String 类,Number类,Integer类,其中Number是Integer的父类
综合案例实现斗地主的洗牌发牌代码:
public class Doudizhu1 {
public static void main(String[] args) {
//创建牌盒集合
ArrayList<String> poker=new ArrayList<>();
//创建数组分别存放花色 和数字
String [] strs={"♥","♠","♦","♣"};
String [] numbers={"A","2","3","4","5","6","7","8","9","10","J","Q","K",};
//把花色和数字组合 并添加到poker集合中
for (String str : strs) {
for (String number : numbers) {
String zuhe=str+number;
poker.add(zuhe);
}
}
//添加大王 小王
poker.add("大王");
poker.add("小王");
/* System.out.println(poker);
System.out.println(poker.size());*/
//Conllections.shuffle打乱牌的顺序
Collections.shuffle(poker);
//创建三个玩家集合 和一个底牌集合
ArrayList<String> player1=new ArrayList<>();
ArrayList<String> player2=new ArrayList<>();
ArrayList<String> player3=new ArrayList<>();
ArrayList<String> dipai=new ArrayList<>();
//遍历牌盒集合 知道索引
for (int i = 0; i < poker.size(); i++) {
String paimian = poker.get(i);
if(i>=51){ //索引值大于等于51表示是剩余的3张底牌
dipai.add(paimian); //存入底牌集合中
}else if(i%3==0){
player1.add(paimian);
}else if(i%3==1){
player2.add(paimian);
}else if(i%3==2){
player3.add(paimian);
}
}
//显示三个玩家的牌 和底牌
System.out.println("玩家一:"+player1);
System.out.println("玩家二:"+player2);
System.out.println("玩家三:"+player3);
System.out.println("底牌:"+dipai);
}
}