Object类是java语言中的根类,是所有类的父类,Object中描述的方法,子类都可以使用。
public static void main(String[] args) {
Student s =new Student();
System.out.println(s);
System.out.println(s.toString());
}
输出结果:
com.ArrayListTest.Student@5f4fcc96
com.ArrayListTest.Student@5f4fcc96
1、查看源码:return getClass().getName()+"@"+Integer.toHexString(hashCode());//返回类的全名+@+内存地址
getClass():返回一个字节码对象
Integer.toHexString():返回指定参数的十六进制字符串形式(静态方法)
hashCode():返回该对象的哈希码值(内存地址)
2、在MyEclipse中,在类里右键resource,选择Generate toString(),即可重写toString方法,
public class Student {
String name;//姓名
int age;//年龄
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
注意: 输出一个对象就默认输出这个对象的toString()方法
public class Student {
String name;//姓名
int age;//年龄
@Override//重写equals
public boolean equals(Object obj) {
if (this == obj)//如果这两个对象的地址值一样,就不比较成员了
return true;
if (obj == null)//传递进来的对象为空
return false;
if (getClass() != obj.getClass())//创建的对象的类class一样,比较字节码文件是否相同
return false;
//向下转型,父类型看不见子类的成员
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
public static void main(String[] args) {
Student s1 =new Student("张三",18);
Student s2 =new Student("张三",19);
Student s3 =new Student("张三",18);
System.out.println(s1.equals(s1));
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s1.equals(new ArrayList()));
}
输出结果:
true
false
true
false
System类是java.lang包下的,包含了一些有用的类字段和方法,不能被实例化,方法都是静态修饰的。
public static void main(String[] args) {
int[] src = {1,2,3,4,5};
int[] dest = new int[5];
System.arraycopy(src, 1, dest, 2, 3);
for(int i=0;i
输出结果:
00234
public static void main(String[] args) {
long start =System.currentTimeMillis();
for(int i=0;i<1000;i++){
System.out.println(i);
}
long end =System.currentTimeMillis();
System.out.println(end-start);
}
输出结果:用了45毫秒
public static void main(String[] args) {
for(int i=0;i<1000;i++){
System.out.println(i);
if(i==5){
System.exit(0);
}
}
}
输出结果:
0
1
2
3
4
5
Date:表示特定的瞬间,精确到毫秒,可以通过方法来设定自己所表示的时间,可以表示任意的时间。在java.util包下
public static void main(String[] args) {
Date d=new Date();
System.out.println("d="+d.toLocaleString());//返回2018-10-31 23:45:49
Date d2 = new Date(1000*60*60);
System.out.println("d2="+d2.toLocaleString());//返回1970-1-1 9:00:00
System.out.println(d.getTime());//返回的1541000749213(毫秒值)
d.setTime(172800000L);//毫秒值转Date
System.out.println("d=="+d.toLocaleString());//返回的1970-1-3 8:00:00
}
DateFormat是日期/时间格式化子类的抽象类,在java.text包下,抽象类不能创建对象,只能看它的静态方法或创建子类对象。SimpleDateFormat是一个子类,允许进行格式化和标准化,通过这个类,帮助我们完成日期和文本之间的转换。
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat();
Date d =new Date();
String s =sdf.format(d);
System.out.println("s="+s);
Date date =sdf.parse(s);
System.out.println("date="+date);
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d1=new Date();
String s1 = sdf1.format(d1);
System.out.println("s1="+s1);
Date date1 =sdf1.parse(s1);
System.out.println("date1="+date1);
}
输出结果:
s=18-11-1 上午12:00
date=Thu Nov 01 00:00:00 CST 2018
s1=2018年11月01日 00:00:26
date1=Thu Nov 01 00:00:26 CST 2018
注意 :解析的字符串,模式必须和构造对象的模式一样
Calendar是日历类,该类将所有可能用到的时间信息封装为静态成员变量,方便获取。
public static void main(String[] args) throws ParseException {
Calendar c =Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + day + "日");
c.set(Calendar.YEAR, 2017);
c.add(Calendar.MONTH, -1);
int year1 = c.get(Calendar.YEAR);
int month1 = c.get(Calendar.MONTH) + 1;
int day1 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year1 + "年" + month1 + "月" + day1 + "日");
}
输出结果:
2018年11月1日
2017年10月1日