Java 常用內置對象

一、 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)   :生成一個毫秒數從19701100: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.01.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());
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章