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