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());
    }

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