文章目录
一、 Object(equals,hashcode,toString方法)
1、 equals
equals在Object的实现就是 == 比内存地址
如果没有重写equals方法,那么Object类中默认进行==
运算符的对象地址比较,只要不是同一个地址,结果为false。要想结果为true,就必须重写 equals 方法。
2、 hashcode
hashcode 本身带有去重的效果,但是由于地址值不同,得不到去重的效果,必须重写hashcode方法,才能取得去重效果。
3、 toString
toString方法返回该对象的字符串表示,其实就是对象的类型+@+内存地址值
要是想要得到所需要的内容,就必须重写 toString 方法。
代码实例:
package com.xinzhi;/*
*@author 杨春旺
*@date 2020/2/12
*/
import java.util.Objects;
public class User {
/*......*/
//重写equals方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return age == user.age &&
gander == user.gander &&
Objects.equals(name, user.name);
}
//重写hashCode方法
// @Override
public int hashCode() {
return Objects.hash(name, age, gander);
}
//重写toString方法
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", gander=" + gander +
'}';
}
}
package com.xinzhi;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.*;
import static org.junit.Assert.*;
/*
*@author 杨春旺
*@date 2020/2/13
*/public class TestSuper {
HashMap<String, User> map;
HashSet<User> set = new HashSet<>();
@Before
public void setUp() throws Exception {
map = new HashMap<>();
map.put("111",new User("aaa",18,1));
map.put("222",new User("bbb",18,1));
map.put("333",new User("xxx",18,1));
}
@After
public void tearDown() throws Exception {
// for (Map.Entry<String,User> entry : map.entrySet()){
// System.out.println(entry.getKey()+"---"+entry.getValue().getName());
// }
for (User user : set) {
System.out.println(user.getName());
}
}
@Test
public void testEquals() {
boolean b = map.containsValue(new User("aaa",18,1));
System.out.println(b);
}
@Test
public void testHashCode(){
User wss = new User("aaa",18,1);
User wsss = new User("aaa",18,1);
set.add(wss);
set.add(wsss);
}
@Test
public void testToString(){
System.out.println(new User("aaa",18,1));
}
}
二、 Date类
常用方法:
public Date() :表示当前时间。
public Date(long date) :生成一个毫秒数从1970年1月1日00:00:00到现在时间的毫秒数。
public long getTime() :把日期对象转换成对应的时间毫秒值。
代码实例:
public static String GetNow(){
Date date = new Date();
System.out.println(date);
//时间戳, 英国伦敦1970-1-1-0:0:0 到现在的毫秒数
long time = new Date().getTime();
System.out.println(time);
//通过时间戳读取时间
Date date1 = new Date(1581585638465L);
System.out.println(date1);
}
三、 SimpleDateFormat类
public SimpleDateFormat(String pattern) :用给定的日期格式符号获得当前时间。
标识字母(区分大小写) | 含义 |
---|---|
yyyy | 年 |
MM | 月 |
dD | 日 |
HH(24小时制) hh(12小时制) | 时 |
mm | 分 |
ss | 秒 |
代码实例:
@Test
public void test(){
Date date = new Date();
//日期格式化
//HH 24小时制
//hh 12小时制
//MM 月
//mm 分
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss ");
System.out.println(simpleDateFormat.format(date));
}
四、 Calendar类(日历类)
常用方法:
public int get(int field) :返回给定日历字段的值。
public void set(int field, int value) :将给定的日历字段设置为给定值。
public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public Date getTime() :返回一个当前日历
代码实例:
@Test
public void testCalendar(){
//构造方法被保护,用单例模式, 一定有一个静态方法帮助获取实例
Calendar calendar = Calendar.getInstance();
//国外月份是从零开始的 中国的月份需要+1
//System.out.println(calendar.get(Calendar.MONTH)+1);
//修改当前日期
calendar.set(1999,Calendar.JANUARY,11,12,30,10);
//将日期添加15天
calendar.add(Calendar.DATE,15);
System.out.println(calendar.get(Calendar.DATE));
System.out.println(calendar.getTime());
}
五、 Math类
常用方法:
public static double ceil(double a) :向上取整
public floor(double a) :向下取整
public static int max(int a, int b) :返回两个 int值中的较大值。
public static int min(int a, int b) :返回两个 int值中的较小值。
代码实例:
@Test
public void testMath(){
//向上取整
System.out.println(Math.ceil(-3.3));
//向下取整
System.out.println(Math.floor(-3.3));
//取最大值
System.out.println(Math.max(5,9));
}
六、 Random类(随机数)
public int nextInt(int n) : 返回一个在0(包括)和指定值n(不包括)之间的int 值。
public double nextDouble() : 返回一个从 0.0和 1.0之间的 double随机数。
public int nextInt() : 返回一个随机数int值。
代码实例:
@Test
public void testRandom(){
Random random = new Random();
//生成一个0-4之间的1个随机数
System.out.println(random.nextInt(4));
//生成一个int类型的随机数
System.out.println(random.nextInt());
System.out.println(random.nextDouble());
}