首页 > 其他分享 >01-Object、常用API

01-Object、常用API

时间:2023-04-17 21:23:03浏览次数:40  
标签:01 对象 Object System int API 字符串 Date 方法

01-Object类、常用API

Object类

概述

在Java中,Object类是所有类的根类,它位于Java类继承体系的最顶层。所有的Java类都直接或间接地继承了Object类,因此Object类中包含了一些在Java编程中非常常用的方法。

常用方法

以下是一些Object类中常用的方法:

equals(Object obj)


public boolean equals(Object obj)

该方法用于比较两个对象是否相等。默认情况下,equals方法比较的是两个对象的引用是否相等,即是否指向同一内存地址。如果需要自定义比较对象的内容是否相等,可以在自定义的类中覆盖该方法。

1. Object类

概述

在Java中,Object类是所有类的根类,它位于Java类继承体系的最顶层。所有的Java类都直接或间接地继承了Object类,因此Object类中包含了一些在Java编程中非常常用的方法。

常用方法

以下是一些Object类中常用的方法:

equals(Object obj)

public boolean equals(Object obj)

该方法用于比较两个对象是否相等。默认情况下,equals方法比较的是两个对象的引用是否相等,即是否指向同一内存地址。如果需要自定义比较对象的内容是否相等,可以在自定义的类中覆盖该方法。

hashCode()

public int hashCode()

该方法返回对象的哈希码值,它是一个整数值。哈希码值是根据对象的内部状态计算得出的,一般情况下,如果两个对象的equals方法返回true,那么它们的哈希码值应该相等。在使用集合类(如HashSet、HashMap等)时,常常需要重写hashCode方法,以保证对象在集合中的唯一性。

toString()

public String toString()

该方法返回对象的字符串表示形式。默认情况下,toString方法返回的是对象的类名和内存地址的十六进制表示。可以通过在自定义的类中覆盖toString方法,返回对象的自定义字符串表示形式,方便调试和输出信息。

getClass()

public final Class<?> getClass()

该方法返回对象的运行时类(Runtime Class)对象,即对象所属的类的Class对象。通过getClass方法,可以获取到对象的类名、包名、父类等信息。可以用于在运行时动态获取对象的类型信息。

clone()

protected Object clone() throws CloneNotSupportedException

该方法用于创建并返回对象的一个副本。默认情况下,该方法是浅复制(Shallow Copy),即复制了对象的引用,而不是对象的内容。如果需要实现深复制(Deep Copy),需要在自定义的类中覆盖clone方法。

举例代码说明

以下是一个使用Object类的举例代码:


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

    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // equals方法覆盖
    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof Person)) {
            return false;
        }
        Person other = (Person) obj;
        return this.name.equals(other.name) && this.age == other.age;
    }

    // hashCode方法覆盖
    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + name.hashCode();
        result = 31 * result + age;
		return result;
	}
    // toString方法覆盖
    @Override
    public String toString() {
        return "Person[name=" + name + ", age=" + age + "]";
    }

    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Bob", 30);

        // 使用equals方法比较两个对象是否相等
        boolean isEqual = person1.equals(person2);
        System.out.println("person1.equals(person2): " + isEqual);

        // 使用hashCode方法获取对象的哈希码值
        int hashCode = person1.hashCode();
        System.out.println("person1.hashCode(): " + hashCode);

        // 使用toString方法获取对象的字符串表示形式
        String toString = person1.toString();
        System.out.println("person1.toString(): " + toString);

        // 使用getClass方法获取对象的运行时类对象
        Class<?> cls = person1.getClass();
        System.out.println("person1.getClass(): " + cls.getName());

        // 使用clone方法创建对象的副本
        try {
            Person clone = (Person) person1.clone();
            System.out.println("person1.clone(): " + clone.toString());
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
}
    

总结

Object类是Java中所有类的父类,提供了一些常用的方法用于对象的比较、哈希码值的获取、字符串表示形式的定制以及对象的复制等操作。在Java中,所有的对象都继承了Object类,并可以直接或间接地调用其方法。

在学习Object类时,我们需要掌握以下几点:

  1. equals方法: 用于比较两个对象是否相等,默认情况下比较的是对象的引用地址,但可以通过覆盖该方法来自定义比较逻辑。
  2. hashCode方法: 用于获取对象的哈希码值,通常与equals方法一起使用,保证在比较对象时的一致性。
  3. toString方法: 用于获取对象的字符串表示形式,可以通过覆盖该方法来定制对象的字符串输出格式。
  4. getClass方法: 用于获取对象的运行时类对象,可以用来获取对象的类名、包名等信息。
  5. clone方法: 用于创建对象的副本,可以通过覆盖该方法来实现对象的深复制或浅复制。

通过对Object类的学习和掌握,我们可以更好地理解Java中对象的比较和管理,从而提高程序的效率和可维护性。

2. 日期时间类

Java中提供了丰富的日期时间类用于处理日期和时间的操作。其中包括了三个主要的日期时间类:Date类、DateFormat类和Calendar类。这些类提供了丰富的方法和功能,用于处理日期的表示、格式化、计算和操作,方便了Java程序员在处理日期和时间时的开发工作。

Date类

Date类是Java中最基本的日期时间类,用于表示一个日期和时间的对象。它提供了一系列的方法用于处理日期和时间,如获取年、月、日、时、分、秒等,并支持日期和时间的比较、格式化和解析等操作。

常用方法

Date类提供了一些常用的方法,包括:

  • Date(): 无参构造方法,创建一个表示当前日期和时间的Date对象。
  • Date(long date): 带参构造方法,根据指定的毫秒数从1970年1月1日00:00:00开始计算日期和时间,创建一个Date对象。
  • getTime(): 获取Date对象表示的日期和时间的毫秒数。
  • before(Date when)after(Date when): 比较当前Date对象和指定Date对象的先后顺序。
  • equals(Object obj): 判断当前Date对象和指定对象是否相等。
  • toString(): 将Date对象转换为字符串表示形式。

举例代码说明


import java.util.Date;

public class DateExample {
    public static void main(String[] args) {
        // 创建一个表示当前日期和时间的Date对象
        Date now = new Date();

        // 获取日期和时间的毫秒数
        long timeInMillis = now.getTime();
        System.out.println("当前时间的毫秒数:" + timeInMillis);

        // 比较日期先后顺序
        Date futureDate = new Date(timeInMillis + 1000000); // 创建一个未来的Date对象
        System.out.println("当前日期是否在未来日期之前:" + now.before(futureDate));
        System.out.println("当前日期是否在未来日期之后:" + now.after(futureDate));

        // 判断两个Date对象是否相等
        Date sameDate = new Date(timeInMillis); // 创建一个与now对象表示同一日期和时间的Date对象
        System.out.println("两个Date对象是否相等:" + now.equals(sameDate));

        // 将Date对象转换为字符串
        System.out.println("Date对象的字符串表示:" + now.toString());
    }
}

DateFormat类

DateFormat类是Java中用于格式化和解析日期和时间的类。它提供了一系列的方法,用于将Date对象转换为字符串表示形式的日期和时间,或者将字符串表示形式的日期和时间解析为Date对象。

常用方法

DateFormat类提供了一些常用的方法,包括:

  • format(Date date): 将指定的Date对象格式化为字符串表示形式的日期和时间。

  • parse(String source): 将指定的字符串表示形式的日期和时间解析为Date对象。

  • getDateInstance(), getTimeInstance(), getDateTimeInstance(): 获取DateFormat对象的实例,用于格式化不同类型的日期和时间。

  • setLenient(boolean lenient): 设置解析时是否宽松模式,即是否允许解析不符合格式的日期和时间。

  • setTimeZone(TimeZone zone): 设置时区。

举例代码说明


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

public class DateFormatExample {
    public static void main(String[] args) {
        // 创建一个DateFormat对象
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        // 格式化日期和时间
        Date now = new Date();
        String formattedDateTime = dateFormat.format(now);
        System.out.println("当前日期和时间:" + formattedDateTime);

        // 解析字符串为Date对象
        String dateString = "2023-04-14 10:30:45";
        try {
            Date parsedDate = dateFormat.parse(dateString);
            System.out.println("解析后的Date对象:" + parsedDate);
        } catch (ParseException e) {
            System.out.println("解析日期和时间失败:" + e.getMessage());
        }
    }
}

日期和时间。

  • parse(String source): 将指定的字符串表示形式的日期和时间解析为Date对象。
  • getDateInstance(), getTimeInstance(), getDateTimeInstance(): 获取DateFormat对象的实例,用于格式化不同类型的日期和时间。
  • setLenient(boolean lenient): 设置解析时是否宽松模式,即是否允许解析不符合格式的日期和时间。
  • setTimeZone(TimeZone zone): 设置时区。

举例代码说明

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

public class DateFormatExample {
    public static void main(String[] args) {
        // 创建一个DateFormat对象
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        // 格式化日期和时间
        Date now = new Date();
        String formattedDateTime = dateFormat.format(now);
        System.out.println("当前日期和时间:" + formattedDateTime);

        // 解析字符串为Date对象
        String dateString = "2023-04-14 10:30:45";
        try {
            Date parsedDate = dateFormat.parse(dateString);
            System.out.println("解析后的Date对象:" + parsedDate);
        } catch (ParseException e) {
            System.out.println("解析日期和时间失败:" + e.getMessage());
        }
    }
}

Calendar类

Calendar类是Java中用于处理日期和时间的抽象类,提供了一系列的方法和字段,用于进行日期和时间的计算、格式化和操作。Calendar类可以获取当前的日期和时间,并支持对年、月、日、时、分、秒等字段进行操作。

常用方法

Calendar类提供了一些常用的方法,包括:

  • getInstance(): 获取Calendar对象的实例。
  • get(int field): 获取指定字段的值,如年、月、日等。
  • set(int field, int value): 设置指定字段的值。
  • add(int field, int amount): 对指定字段的值进行增加或减少。
  • getTime(): 获取Calendar对象表示的日期和时间的Date对象。
  • setLenient(boolean lenient): 设置解析时是否宽松模式,即是否允许解析不符合格式的日期和时间。

举例代码说明


import java.util.Calendar;
import java.util.Date;

public class CalendarExample {
    public static void main(String[] args) {
        // 获取Calendar对象的实例
        Calendar calendar = Calendar.getInstance();

        // 获取当前的年、月、日、时、分、秒等字段的值
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始,需加1
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        System.out.println("当前日期和时间:");
        System.out.println("年:" + year);
        System.out.println("月:" + month);
        System.out.println("日:" + day);
        System.out.println("时:" + hour);
        System.out.println("分:" + minute);
        System.out.println("秒:" + second);
          // 设置指定字段的值
        calendar.set(Calendar.YEAR, 2022);
        calendar.set(Calendar.MONTH, Calendar.MARCH); // 月份从0开始,这里设置为3月
        calendar.set(Calendar.DAY_OF_MONTH, 25);
        calendar.set(Calendar.HOUR_OF_DAY, 14);
        calendar.set(Calendar.MINUTE, 30);
        calendar.set(Calendar.SECOND, 0);

        // 获取修改后的日期和时间
        Date modifiedDateTime = calendar.getTime();
        System.out.println("修改后的日期和时间:" + modifiedDateTime);

        // 对指定字段的值进行增加或减少
        calendar.add(Calendar.MONTH, 1); // 在当前日期的基础上增加一个月
        Date incrementedDateTime = calendar.getTime();
        System.out.println("增加一个月后的日期和时间:" + incrementedDateTime);
    }
}

3. System类

System类是Java标准库中的一个工具类,提供了一些系统级的方法,用于访问系统相关的信息和执行系统级的操作。其中,System类包含了currentTimeMillis方法和arraycopy方法,用于获取当前时间和数组的拷贝操作。

currentTimeMillis方法

currentTimeMillis方法用于获取当前时间的毫秒数,从1970年1月1日午夜开始计算,以UTC时区为准。该方法返回一个long类型的数值,可以用于计算时间间隔、记录时间戳等操作。

常用方法:

  • System.currentTimeMillis():获取当前时间的毫秒数。

举例代码说明:

long currentTimeMillis = System.currentTimeMillis();
System.out.println("当前时间的毫秒数:" + currentTimeMillis);

arraycopy方法

arraycopy方法用于在数组之间进行复制操作,可以将一个数组的内容复制到另一个数组中。该方法提供了灵活的参数设置,可以指定源数组、源数组的起始位置、目标数组、目标数组的起始位置和复制的长度。

常用方法:

  • System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将源数组的内容复制到目标数组中。

举例代码说明:

// 源数组
int[] srcArray = {1, 2, 3, 4, 5};
// 目标数组
int[] destArray = new int[5];

// 使用arraycopy方法复制数组
System.arraycopy(srcArray, 0, destArray, 0, srcArray.length);

// 输出目标数组的内容
System.out.println("目标数组的内容:" + Arrays.toString(destArray));

以上是关于System类中currentTimeMillis方法和arraycopy方法的概述、常用方法和举例代码说明。在实际编程中,System类的这些方法可以帮助我们获取当前时间和进行数组的复制操作,提供了方便和高效的功能。

4. StringBuilder类

StringBuilder类是Java中的一个字符串操作类,用于处理可变的字符序列。与String类不同,StringBuilder类的字符串内容是可变的,可以进行添加、删除、修改等操作,适用于频繁修改字符串内容的场景。

概述

StringBuilder类位于java.lang包中,是一个可变的字符序列,它允许在字符串的末尾进行添加、插入和删除字符,从而实现字符串的动态修改。StringBuilder类的实例在内存中是可变的,因此在频繁修改字符串时,使用StringBuilder类比直接使用String类更加高效。

常用方法

StringBuilder类提供了丰富的方法,用于对字符串进行修改和操作。以下是一些常用的方法:

  • StringBuilder():构造一个空的StringBuilder对象。
  • StringBuilder(String str):构造一个包含指定字符串的StringBuilder对象。
  • append(String str):将指定字符串追加到当前StringBuilder对象的末尾。
  • insert(int index, String str):将指定字符串插入到当前StringBuilder对象的指定位置。
  • delete(int start, int end):删除当前StringBuilder对象中从指定起始位置到结束位置的字符。
  • replace(int start, int end, String str):将当前StringBuilder对象中从指定起始位置到结束位置的字符替换为指定字符串。
  • toString():将StringBuilder对象转换为一个普通的String对象。

举例代码说明

以下是使用StringBuilder类进行字符串拼接的示例代码:


StringBuilder sb = new StringBuilder();

// 追加字符串
sb.append("Hello");

// 插入字符串
sb.insert(5, " ");

// 删除字符
sb.delete(6, sb.length());

// 替换字符
sb.replace(0, 5, "Hi");

// 输出最终结果
System.out.println(sb.toString());

上述代码中,首先创建了一个空的StringBuilder对象sb,然后通过append方法追加了字符串"Hello",再使用insert方法在第5个位置插入了一个空格字符,接着使用delete方法删除了从第6个位置到字符串末尾的字符,最后使用replace方法将字符串的前5个字符替换为"Hi"。最终,通过toString方法将StringBuilder对象转换为普通的String对象,并输出最终结果。

以上是关于StringBuilder类的概述、常用方法和举例代码说明。在实际编程中,StringBuilder类可以用于高效地进行字符串的拼接、插入、删除和替换等操作,是处理可变字符串的常用工具类。

5. 包装类

在Java中,基本数据类型(如intcharboolean等)没有相应的方法和属性,为了方便处理基本数据类型,Java提供了对应的包装类(如IntegerCharacterBoolean等),用于将基本数据类型包装成对象,从而可以在对象中调用方法和使用属性。

概述

包装类是一种用于将基本数据类型转换为对象的特殊类,位于java.lang包中。Java提供了八种包装类,分别对应八种基本数据类型,包括:BooleanCharacterByteShortIntegerLongFloatDouble。包装类可以用于进行基本数据类型和对象类型之间的转换,提供了许多实用的方法,用于对基本数据类型进行操作。

常用方法

包装类提供了丰富的方法,用于对基本数据类型进行操作。以下是一些常用的方法:

  • valueOf(String s):将字符串转换为对应的包装类对象。
  • parseXXX(String s):将字符串解析为对应的基本数据类型值。
  • xxxValue():将包装类对象转换为对应的基本数据类型值。
  • compareTo(T another):比较两个包装类对象的大小。
  • equals(Object obj):比较两个包装类对象是否相等。
  • toString():将包装类对象转换为字符串。

举例代码说明

以下是使用包装类进行基本数据类型和对象类型之间的转换的示例代码:


// 将字符串转换为包装类对象
Integer i1 = Integer.valueOf("123");
Double d1 = Double.valueOf("3.14");

// 将包装类对象转换为基本数据类型值
int i2 = i1.intValue();
double d2 = d1.doubleValue();

// 比较包装类对象的大小
int result = i1.compareTo(456);

// 比较包装类对象是否相等
boolean isEqual = i1.equals(123);

// 将包装类对象转换为字符串
String s1 = i1.toString();
String s2 = d1.toString();

上述代码中,首先通过valueOf方法将字符串转换为对应的包装类对象,然后通过xxxValue方法将包装类对象转换为基本数据类型值,接着使用compareTo方法比较包装类对象的大小,使用equals方法比较包装类对象是否相等,最后使用toString方法将包装类对象转换为字符串。

以上是关于包装类的概述、常用方法和举例代码说明。在实际编程中,包装类常用于基本数据类型和对象类型之间的转换,以及在需要使用对象的场景中对基本数据类型进行操作。

标签:01,对象,Object,System,int,API,字符串,Date,方法
From: https://www.cnblogs.com/RookieMaster/p/17327561.html

相关文章

  • ms17-010
    用nmap的漏洞扫描模式nmap--script=vuln192.168.178.128可以发现,靶机上扫到了4个漏洞,其中包括了MS17-010。 打开metasploit(msf很有意思的是,每次打开都会显示不同的画面。)msfconsole 搜索ms17-010相关模块,可以看到一共找到了6个不同的模块。(选项:0-5)searchms17-010......
  • MySQL中间件mycat-01
    @目录mycat基础概念Mycat安装部署mycat基础概念1、什么是MyCat一个彻底开源的,面向企业应用开发的大数据库集群支持事务、ACID、可以替代MySQL的加强版数据库一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群一个融合内存缓存技术、NoSQL技术、HDFS大数据的新......
  • zynq7010,petalinux, USB-wifi测试
    zynq7010,基于linux验证USB-wifi功能1.相关电路图,这里貌似复位键默认上电开启的,引脚并没有印出来需要注意的地方注意芯片型号"USB3320",这个在linux内核中如果USB配置正确的话是会被打印出来的usbcore:registerednewinterfacedriverusb-storagechipidea-us......
  • AI在金融体系下如何引导API安全?
    AI在金融体系下如何引导API安全?随着金融科技的快速发展,越来越多的金融机构开始使用API(应用程序接口)进行数字化转型,加速业务流程和数据交换。然而,API在金融体系下面临诸多安全威胁,如恶意攻击、数据泄露等,这些安全问题可能会导致金融风险和市场失信。为了保障金融API的安全性,可以采......
  • 人月神话读后感01
    最近读了一本书《人月神话》,这本书是软件工程类的一本经典著作。阅读这本书的第一感受就是感觉这本书不像是一种和学习相关的书,更像是用很多形象的比喻,阐述项目管理当中的一些问题,让读者能够很轻松,明白的去阅读。在软件领域,很少能有像《人月神话》-样具有深远影响力和畅销不衰的......
  • 2019-第十届蓝桥杯大赛个人赛省赛(软件类)真题 C大学B组
    返回目录 题目一览:A.数列求值B.迷宫C.完全二叉树的权值D.组队E.年号字串F.数的分解G.特别数的和H.等差数列I.后缀表达式J.灵能传输  A.数列求值   B.迷宫   C.完全二叉树的权值   D.组队   E.年号字串   F.数的分解   ......
  • vs 2010项目转成 2008
    *.csproj*.resx*.sln把11.0改成10.0版本把4.0改成3.5去掉app.config中的.NET版本,就可以不生成*..exe.config中的必需版本信息直接在项目中去掉app.config就不会生成配置文件了删除*..exe.config文件中的.NET版本配置......
  • DBus API的使用(讲的很清晰,底层概念,基本api)
    DBus是用来进行进程间通信的。下面这张图展示了一些DBus的大部分东西,但是它太复杂了:​DBus本身是构建在Socket机制之上。真正的通信还是由Socket来完成的。DBus则是在这之上,制定了一些通信的协议,并提供了更高一层的接口,以更方便应用程序之间进行数据的交互。在DBus的体系......
  • [oeasy]python0132_变量含义_meaning_声明_declaration_赋值_assignment
    变量定义回忆上次内容上次回顾了一下历史python是如何从无到有的看到Guido长期的坚持和努力 编程语言的基础都是变量声明python是如何声明变量的呢? 变量想要定义变量首先明确什么是变量变量就是数值能变的量英文名称varia......
  • [oeasy]python0132_变量含义_meaning_声明_declaration_赋值_assignment
    变量定义回忆上次内容上次回顾了一下历史python是如何从无到有的看到Guido长期的坚持和努力编程语言的基础都是变量声明python是如何声明变量的呢?变量想要定义变量首先明确什么是变量变量就是数值能变的量英文名称variable计算机在内存中分配出空间用来存储这些能变的量那......