Java_学习3

euqals  和  toString : 

//Demo类

package com.hb2.Object;

//Object是层次结构的根,每个类都可以将Object类作为超累,所有类都直接或间接继承自该类
/*
    public String toString()
        返回对象的字符串表示形式,建议所有子类重写该方法,自动生成
    public boolean equals(Object obj)
        比较对象是否相等。默认比较地址,重写可以比较内容,自动生成
 */

public class Demo {
    public static void main(String[] args) {
        Stu a = new Stu();
        a.setAge(18);
        a.setName("铁柱");
        //建议所有子类重写Object类
        System.out.println(a.toString());

        Stu b = new Stu();
        b.setAge(18);
        b.setName("铁柱");

        System.out.println(a.getAge() == b.getAge()); //比的数值,true
        System.out.println( a==b );//比的地址值,flase

        System.out.println(a.equals(b));//要重写equal,重写后比较对象
    }
}


//Stu类

package com.hb2.Object;

public class Stu {
    private String name;
    private int age;

    public Stu(){};

    public Stu(String name, int age){
        this.age= age;
        this.name= name;
    }

    public void setName(String name){
        this.name= name;
    }

    public String getName(){
        return name;
    }

    public void setAge(int age){
        this.age= age;
    }

    public int getAge(){
        return age;
    }

    @Override
    public String toString() {
        return "Stu{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override  //重写equal, 可比较对象是否相等
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        //getClass() != o.getClass()
        // getClass获得对象的字节码文件,上句判断是否来自同一个了类

        //向下转型
        Stu stu = (Stu) o;
        //比较年龄
        if (age != stu.age) return false;
        //比较姓名
        return name != null ? name.equals(stu.name) : stu.name == null;
    }
//     删除这个
//    @Override
//    public int hashCode() {
//        int result = name != null ? name.hashCode() : 0;
//        result = 31 * result + age;
//        return result;
//    }
}

Math:

//Demo类

package com.hb2.Math;

public class Demo {
    public static void main(String[] args) {
        //public static int abs (int a), 返回参数的绝对值
        System.out.println(Math.abs(-88));

        //public static double ceil(double a), 返回大于或等于参数的最小double值,等于一整
        System.out.println(Math.ceil(12.44));

        //public static double floor(double a), 返回小于或等于参数的最大double值,等于一个整数
        System.out.println(Math.floor(12.55));

        //public static int round (float a), 按照四舍五入返回最接近参数的int
        System.out.println(Math.round(12.6F));

        //public static int max(int a, int b), 返回两个int值中的较大值
        System.out.println(Math.max(1,2));

        //public static int min(int a, int b), 返回两个int值中的较小值
        System.out.println(Math.min(1,2));

        //public static double pow(double a, double b), 返回a的b次幂的值
        System.out.println(Math.pow(2,3));

        //public static double ramdom(), 返回值为double的正值,[0.0, 1.0)
        System.out.println(Math.random());//[0.0, 1.0)
        System.out.println((int)(Math.random()*100)+1);//[1,100]
    }
}

基本类型包装类(外): 

Object类:

//Demo类

package com.hb2.Object;

//Object是层次结构的根,每个类都可以将Object类作为超累,所有类都直接或间接继承自该类
/*
    public String toString()
        返回对象的字符串表示形式,建议所有子类重写该方法,自动生成
    public boolean equals(Object obj)
        比较对象是否相等。默认比较地址,重写可以比较内容,自动生成
 */

public class Demo {
    public static void main(String[] args) {
        Stu a = new Stu();
        a.setAge(18);
        a.setName("铁柱");
        //建议所有子类重写Object类
        System.out.println(a.toString());

        Stu b = new Stu();
        b.setAge(18);
        b.setName("铁柱");

        System.out.println(a.getAge() == b.getAge()); //比的数值,true
        System.out.println( a==b );//比的地址值,flase

        System.out.println(a.equals(b));//要重写equal,重写后比较对象

        /*
             输出:Stu{name='铁柱', age=18}
                   true
                   false
                   true
        */

    }
}

//Stu类

package com.hb2.Object;

public class Stu {
    private String name;
    private int age;

    public Stu(){};

    public Stu(String name, int age){
        this.age= age;
        this.name= name;
    }

    public void setName(String name){
        this.name= name;
    }

    public String getName(){
        return name;
    }

    public void setAge(int age){
        this.age= age;
    }

    public int getAge(){
        return age;
    }

    @Override
    public String toString() {
        return "Stu{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override  //重写equal, 可比较对象是否相等
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        //getClass() != o.getClass()
        // getClass获得对象的字节码文件,上句判断是否来自同一个了类

        //向下转型
        Stu stu = (Stu) o;
        //比较年龄
        if (age != stu.age) return false;
        //比较姓名
        return name != null ? name.equals(stu.name) : stu.name == null;
    }
//     删除这个
//    @Override
//    public int hashCode() {
//        int result = name != null ? name.hashCode() : 0;
//        result = 31 * result + age;
//        return result;
//    }
}

Data类:

package com.hb2.Arrays_System_Obeject_Math_Data_Integ.Data类;

/*
    public Date(), 分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
    public Data(long data), 分配一个Date对象,并将其初始化为表示从基准时间起指定的毫秒数
 */
public class Date {
    public static void main(String[] args) {
        java.util.Date d1 = new java.util.Date();
        System.out.println(d1);
//      输出:  Fri Apr 22 19:32:08 CST 2022
//                                 CST 中国标准时间
//      说明它的toString被重写了,原本是:全路径名@地址

        long Date = 1000 * 60 * 60;//一小时
        java.util.Date d2 = new java.util.Date(Date);
        System.out.println(d2);
        //输出: Thu Jan 01 09:00:00 CST 1970 (东八区,加了8小时)


        //*常用方法*
        //public long getTime(), 获取的日期对象是从1970.1.1 00:00:00到现在的毫秒值
        //public void setTime(long time), 设置时间,给的是毫秒值
        java.util.Date d = new java.util.Date();
        System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");
        //输出:52.34106828776636年

        java.util.Date D = new java.util.Date();
        long time = 1000*60*60;
        D.setTime(time);
        System.out.println(D);
        //输出:Thu Jan 01 09:00:00 CST 1970

    }
}

SimpleDateFormat:

package com.hb2.Arrays_System_Obeject_Math_Data_Integ.Data类;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
    SimpleDateFormat是一个具体类,用于以区域设置敏感的方式格式化和解析日期
    常用:
    y   年
    M   月
    d   日
    H   时
    m   秒
    s   秒

    构造方法:
    public SimpleDateFormat(), 使用默认模式和日期格式
    public SimpleDateFormat(String pattern), 使用给定的模式和日期格式

    格式化(从 Date 到 String):
    public final String format(Date date), 将日期格式化成日期/时间字符串

    解析(从 String 到 Date):
    public Date parse(String source), 从给定字符串的开始解析文本以生成日期
 */
public class 日期SimpleDateFormat {


    public static void main(String[] args) throws ParseException {
        Date d = new Date();
        System.out.println(d);

        //格式化:从 Date 到 String
            SimpleDateFormat sdf = new SimpleDateFormat();
            String s = sdf.format(d);
            System.out.println(s);
             //2022/4/22 下午8:23

             //SimpleDateFormat d2 = new SimpleDateFormat("y年 M月d日 H:m:s");
            SimpleDateFormat d2 = new SimpleDateFormat("yyyy年 MM月dd日 HH:mm:ss");//?
            String s2 = d2.format(d);
            System.out.println(s2);
             //2022年 04月22日 20:34:06

        //解析:从 String 到 Date
            String ss = "2048-08-09 11:11:11";
            SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//?
            Date dd = sdf2.parse(ss);//报错,异常,先用alt+enter,选第一个,为抛出异常(开发多是第二个?)
            System.out.println(dd);
    }
}

日期工具类:

//Demo类

package com.hb2.Arrays_System_Obeject_Math_Data_Integ.日期工具类;

import java.text.ParseException;
import java.util.Date;

public class Demo {
    public static void main(String[] args) throws ParseException {
        Date d = new Date();

        String s1 = DateUtils.DatetoString(d, "y年M月d日 H:m:s");
        System.out.println(s1);

        String s2 = DateUtils.DatetoString(d, "y年M月d日");
        System.out.println(s2);

        String s = "2022-08-01 11:11:11";
        Date dd = DateUtils.StringtoDate(s, "y-M-d H:m:s");
        System.out.println(dd);

    }
}


//DateUtils类

package com.hb2.Arrays_System_Obeject_Math_Data_Integ.日期工具类;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
    工具类:

    !构造方法私有!
    !成员方法静态!
*/
public class DateUtils {

    private DateUtils() {
    }

    /*
    把日期转为指定格式的字符串
    返回值类型: String
    参数:Date date, String format
     */
    public static String DatetoString(Date date, String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String s = sdf.format(date);
        return  s;
    }

     /*
     把日期解析为指定格式的日期
     返回值类型:Data
     参数:String s, String format
      */
    public static Date StringtoDate(String s, String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date d = sdf.parse(s);
        return d;
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值