文章目錄
一、 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());
}