Object类、常用API

Object类、常用API


Object类

概述

java.lang.Object类是java语言的根类,即所有类的父类,该类中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。且 一个类没有指定父类。则默认继承Object类、

object类中包含的的方法有11种,我们主要学习2个

  • public String tostring() : 返回该对象的字符串表示
  • public boolean equals(Object obj): 指示其他某个对象是否与此对象相等。

tostring方法

方法摘要

  • public string tostring(): 返回该对象的字符串表示。

    tostring 方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+ 内存地址

由于tostring 方法 返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式。f

覆盖重写

如果不希望使用tostring方法的默认行为,则可以对它进行覆盖重写,

public class Person {
    private String name;
    private int age;
    @Override
    public String toString(){
        return "Person{"+"name="+name+",age="+age+"}";
    }
}

注意: 在我们直接使用输出语句输出对象名的时候,其实是通过该对象调用了其tostring() 方法。

quuals方法

方法摘要

  • pubblic boolean equals(object obj): 指示其他某个对象时候与此对象相等

对象内容比较

public class Person01 {
    private String name;
    private int age;
    @Override
    public boolean equals(Object o){
        if (this ==o)
            return true;
        if (o==null|| getClass() !=o.getClass())
            return false;
        Person01 person =(Person01)o;
        return age= person.age && Object.equals(name,person.name);
    }
}

日期时间类

Date类

概述

java.util.date 类表示特定的时间,精确到毫秒

根据Date类的描述,Date拥有多个构造函数,但是其中有未过时的构造函数可以把毫秒转成日期对象

  • public Date(): 分配Date对象并初始化此对象,以表示分配它的时间
  • public Data(long date) :分配date对象并初始化此对象,以表示自从标准基准时间。

由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒
简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻,

? 使用long类型的构造类型,可以自定义毫秒时刻

import java.util.Date;
public class DemoDate01 {
    public static void main(String[] args) {
        // 创建日期对象,把当前的时间转成日期对象
        System.out.println(new Date());
        // 创建日期对象,把当前的毫秒值转成日期对象
        System.out.println(new Date(0L));
    }
}

tips: 在使用println方法时,会自动欧诺个调用Date类中的tostring方法。Date类对Object类中的tostring方法进行覆盖重写,
		所以结构为指定格式的字符串。

常用方法

Date类中的多数方法已经过时,常用的方法有

  • public long getTime(): 把日期对象转换成对应的时间毫秒

DateFormat类

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,就是可以在Date对象与String对象之间进行来回转换。

  • 格式化: 按照指定的格式,从Date对象转化为String对象
  • 解析: 按照指定的格式,从String 对象转换为Date对象。

构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat. 这个类需要一个模式来指定格式或解析的标准。构造方法为:

  • public SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat、
  • 参数pattern 是一个字符串,代表日期时间的自定义格式

格式规则

标识字母:

y 年 M 月 d日 H时 m分 s秒

备注:详细的格式规则,可以参考API文档

相关代码

public static void main(String[] args) {
        DateFormat format =new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
    }

常用方法

使用format方法的代码为:

将Date对象转化为string

public static void main(String[] args) {
    // 把Date对象转换成string 
    Date date=new Date();
    // 创建日期格式化对象,在获取格式化对象时可以指定风格
    DateFormat format =new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
    String str =format.format(date);
    System.out.println(str);
}

parse 方法

将string转化为date对象

    public static void main(String[] args) throws ParseException {
        // 通过simpleDateFormate来设置转换时间的类型
        DateFormat df =new SimpleDateFormat("yyyy年MM月dd日");

        String str ="2018年12月11日";
        // 将string 转化为Date对象
        Date date =df.parse(str);
        System.out.println(date);
    }

小练习 : 根据输入的出生日期计算一个人已经出生的天数

public class DemoDate02 {
    public static void main(String[] args) throws ParseException {
        // 获取出生日趋,键盘出入
        System.out.println("请输入出生日期 格式  :yyyy-MM-dd");
        
        String birthdayString =new Scanner(System.in).next();
        // 将字符串日期转化为date对象
        // 创建simpledateformate对象,设置日期模式
        DateFormat df =new SimpleDateFormat("yyyy-MM-dd");
        // 调用parse方法将字符串转化为日期对象
        Date birthdaydate =df.parse(birthdayString);
        // 获取当前的日期对象
        Date todayDate=new Date();

        // 将两个日期对象转化为毫秒值,date类的方法getTime
        long birthdayDate =birthdaydate.getTime();
        long todaySecond =todayDate.getTime();
        long secone =todaySecond-birthdayDate;
        if (secone < 0) {
            System.out.println("未出生");

        }else{
            System.out.println(secone/1000/60/60/24);
        }
        
    }
}

StringBuilder 类

字符串拼接问题

由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。

在API中对String类有这样的描述: 字符串是常量,它们的值在创建后不能被更改。

StringBuilder类

又被称为可变字节序列,它是一个类似于String的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

原来StringBulider是一个字符串的缓冲区,即它是一个容器,可以装很多字符串,并且能够对其中的字符串进行各种操作。

常用的两个方法

append方法

  • 添加任意类型数据的字符串形式,并返回当前对象自身。
  • append具有多种重载形式,可以接收任意类型的参数。
 public static void main(String[] args) {
        StringBuilder builder=new StringBuilder();

        StringBuilder builder2=builder.append("hello");
        // 通过append 方法添加数据
        System.out.println("Build"+builder);
        System.out.println("build2"+builder2);
        System.out.println(builder==builder2);
        // 在开发中会遇到调用一个方法后,返回一个对象的情况,然后使用返回的对象继续调用方法
        builder.append("world");
        builder.append("100");


        builder2.append("world").append("100");

        System.out.println(builder==builder2);
    }
}

tostring方法

通过toString方法,stringbuilder对象将会转换为不可变得string对象。

public class Demo06 {
    public static void main(String[] args) {
        StringBuilder sb =new StringBuilder("hello").append("world").append("java");
        String str =sb.toString();
        System.out.println(sb);
    }
}

包装类

概述

java提供了两个类型系统,基本类型和引用类型,使用基本类型在于效率,然而很多情况下,会创建对象使用,因为对象可以做很多的功能,如,如果想要我们的基本类型像对象一样操作。就可以使用基本类型对应的包装类。

基本类型 对应的包装类(位于java.lang包中)
byet Byte
short Short
int Integer
long Long
float Float
double Double

装箱与拆箱

基本类型与对应的包装类对象之间,来回转换的过程称为“装箱”与“拆箱”:

  • 装箱: 从基本类型转换为对应的包装类对象。
  • 拆箱:从包装类对象转换为对应的基本类型。

基本数值--》 包装对象

Integer i =new Integer(4);  // 使用构造函数
Integer iii= Integer.valueof(4);

包装对象--> 基本数值

int num =i.intvalue();

自动装箱与自动拆箱

jdk1.5之后,基本类型与包装类的装箱、拆箱动作可以自动完成。

Object类、常用API

上一篇:java 操作Oracle 批量入库的问题


下一篇:C# Socket通信 定义收发信息协议处理粘包