相关API的整理

本文介绍了Java中对象的处理方式,包括获取字节码对象、toString及equals方法的重写,以及日期类的操作,涉及Date、SimpleDateFormat和Calendar类的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.Object获取字节码对象
 通常将类中的成员变量、构造方法 、get/set方法给出后,可以通过3种方式获取字节码对象。
 例如给出Teacher类、构造方法 、get/set方法给出后:获取
 方式1:通过Object类的getClass()方法获取  
  //实例化对象的方法getClass来获取
 Teacher t = new Teacher();  //将Teacher类实例化,创建对象
 Class clazz = t.getClass();  //通过对象为Class的对象来获取,同时使实例化对象的getClass()来获取
 
 方式2:通过类名调用属性class来获取
 //通过类名的属性class来获取
 Class clazz2 = Teacher.class;  
 
 方式3:通过Class类的静态方法forName()来获取
 Class clazz3 = Class.forName("通过文件路径来获取");
 同时三种方式所获取的字节码对象地址是一样的
 
 2.toString方法
   将所给对象返回为字符串的形式
   由于toString方法返回的结果是内存地址,而在实际开发中,我们需要的是对于的字符串形式,因此就需要对其进行重写。eclipse的resource中已经提供了toString重写的方法。
    package com.itheima_01;
/*
 * String toString()  : 返回该对象的字符串表示
 * return getClass().getName() + "@" + Integer.toHexString(hashCode());
 * getClass():返回一个字节码对象
 * Integer.toHexString():返回指定参数的十六进制字符串形式
 * hashCode():返回该对象的哈希码值(内部地址)
 * boolean equals(Object obj)  
 * 
 */
public class ObjectDemo {
public static void main(String[] args) {
Student s = new Student();
s.name = "zhangsan";
s.age = 18;
System.out.println(s.toString());//com.itheima_01.Student@737951b0
System.out.println(s);//说明我们输出一个对象就是默认输出这个对象的toString()方法
}
}


class Student extends Object {
String name;
int age;


@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}


3.equals()方法
  用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。在实际开发中,要比较两个对象是否相同,经常会根据对象中的属性值进行比较,因此通常需要子类重写equals方法,从而实现属性值的比较。
  package com.itheima_01;
import java.util.ArrayList;


/*
 * boolean equals(Object obj)  
 * 使用==来比较两个对象是否相等,则比较地址值是否相等
 */
public class ObjectDemo2 {
public static void main(String[] args) {
Person p = new Person("zhangsan",18);
Person p2 = new Person("zhangsan",19);

//boolean flag = p.equals(p2);

boolean flag = p.equals(new ArrayList());
System.out.println(flag);
}
}


class Person {
String name;
int age;

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


@Override
public boolean equals(Object obj) {
//提高效率
if (this == obj)
return true;

if (obj == null)
return false;
//提高健壮性
if (getClass() != obj.getClass())
return false;

//向下转型
Person other = (Person) 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;
}


  4.System类
     其不能实例化
 几个常用的:
  static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)  复制数组
  static long currentTimeMillis() :返回以毫秒为单位的当前时间
  static void exit(int staus):终止当前运行的JVM
  
  long now = System.currentIimeMillis();  返回当前的时间 1970年1月1日到现在的毫秒值
  System.out.println(now);
  如果要测试一个代码运行的时间;可采用结束的毫秒值减去开始的时间的毫秒值。
 
 复制数组的方法:通常分为原数组和目标数组两个,通过指定要复制的部分和在那个位置开始复制,即可获得相应的数组,类似于截取获取。
  //源数组
int[] src = {1,2,3,4,5};
//目标数组
int[] dest = new int[5];

System.arraycopy(src, 2, dest, 0, 3);

//遍历目标数组
for (int i = 0; i < dest.length; i++) {
System.out.print(dest[i]);
}


5.日期类
  1).Date:表示特定的瞬间,精确到毫秒。
  Date类的构造方法:
  Date():创建的是一个表示当前系统时间的Date对象
  Date():根据”指定时间“创建Date对象
  System.currentTimeMillis():返回的是当前系统时间,1970-1-1至今的毫秒数
   如:
   Date d = new Date();
   System.out.println(d); //返回现在的时间 类似这样的:Thu Aug 26 14:17:28 CST 2049
   //可以采用转换的方式将其变成方便我们中国人看懂的
   System.out.println(d.toLocaleString());  //采用toLocaleteString()方法
   //同时还可以采用毫秒值进行修整时间
   Date d2 = new Date(1000 * 60 * 60 * 24);//时区 有时差
System.out.println(d2.toLocaleString());
  2)Date类常用方法
      1秒 = 1000毫秒
  注意:它们返回的是毫秒值,如果需要将时间转成我们想要的时间需要进行运算
   void setTime(long time)  //设置时间
   long getTime()  //获取时间
   
   //通过新建Date对象,我们可以将其转成毫秒值进行或者转成我们能看到的时间
   Date d = new Date();//默认当前系统时间
//d.setTime(1000 * 60 * 60 * 24 * 2);
System.out.println(d.toLocaleString());
System.out.println(d.getTime());//172800000
  
  //同时如果我们知道毫秒值,也可以将其转成我们能看到的时间
  d.setTime(172800000L);
System.out.println(d.toLocaleString());
  3)DateFormat类 & SimpleDateFormat
     DateFormat:是日期、时间格式化子类的抽象类。它可以解析日期或时间。
日期、时间格式化子类:SimpleDateFormat类  可以将日期转成文本格式或者文本到日期和标准化
SimpleDateFormat(String pattern)  //给出特定的模式,它就会帮你转成你要的形式
String format(Date date):将一个Date格式化为日期/时间字符串
Date parse(String source):从给定字符串的开始解析文本,生成一个日期
如:
//指定要格式化的形式 yyyy年MM月dd日
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//接着就是格式化
     Date date = new date();  //创建日期对象
String s = sdf.format(date);  //将其转成文本格式
System.out.println(s);  //从而就可以输出了 输出的形式类似于2049年08月26日 13:39:12
 
//解析
Date  d = sdf.parse("2049年08月26日 13:39:12");   //当然你写的解析的日期可以与上面转换的日期不同
System.out.println(d.tolocaleString())    //转成我们能看的形式 2049-08-26 13:39:12
 
 
指定模式的:
//使用指定的模式进行对象的构建
//1999年9月1日
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
//格式化
Date date = new Date();
String s = sdf.format(date);
System.out.println(s);//2049年08月26日

//解析
Date d = sdf.parse("2049年08月26日");
System.out.println(d.toLocaleString());


默认系统时间模式的,如
//使用默认模式进行对象的构建
SimpleDateFormat sdf = new SimpleDateFormat();
//创建日期对象
Date date = new Date();

//格式化 把日期对象转换成字符串
String s = sdf.format(date);
System.out.println(s);//49-8-26 下午1:29

//解析 把字符串转换成日期对象
Date d = sdf.parse("49年9月26日  下午1:29");
System.out.println(d.toLocaleString());


需求:求出你来这个世界上多少天  
//思路:首先指定时间,时间为字符串形式的,通过格式化日期,可以得到想要的时间日期,再获取它的毫秒值,相减即可得到
     public class SimpleDateFormatTest {
public static void main(String[] args) throws ParseException {
//出生日期
String birthday = "1998-01-01";
//今天日期
String now = "2000-01-01";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//将字符串转换成日期对象
Date d1 = sdf.parse(birthday);
Date d2 = sdf.parse(now);

//将日期对象转换成long类型
long l = d1.getTime();
long l2 = d2.getTime();

System.out.println((l2 - l) / 1000 / 60 / 60 / 24);

}
}
4)Calendar类
 通常有:
  Calendar c = Calendar.getInstance();  //返回当前时间
  void set(int field, int value) :把指定的字段修改成指定的值
  void add(int field, int amount): 在指定的字段上加上指定的值
  int get(int field) // 返回给定日历字段的值
  如:
  当前的日期:通常可以采用当前的日期,再进行获取相应的年月日,按格式输出
  或者采用自己给定日期的形式,再用先用setTime将时间进行建立,再通过get进行相应的处理即可。
  public class CalendarDemo {
public static void main(String[] args) {

    Calendar c = Calendar.getInstance();
    c.add(Calendar.DAY_OF_MONTH, -1);  //在原有的日期上减1
     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 + "日");  
}
}


6.正则表达式
参考笔记
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值