Day01MyClass

Object类

Object类Object代表最高父类,任何一个类都可以直接或间接的使用Object类的方法

  • 简介

java.lang.Object 类是Java语言中的根类,它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类, 那么默认则继承自Object类。

例如:

public class MyClass /*extends Object*/ {
   // ...  
}
  • toString方法

public String toString() :返回该对象的字符串表示。toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。如果不希望使用toString方法的默认行为,则可以对它进行覆盖重写。

例如自定义的Cat类:

 public class Cat { 
            private String name;
            private int age;
            @Override
            public String toString() {
                return "Cat{" + "name=" + name + " + ", age=" + age + "}";
            } / / 省略构造器与Getter Setter
    }

在IntelliJ IDEA中,可以点击 Code 菜单中的 Generate… ,也可以使用快捷键 alt+insert ,点击 toString() 选项。选择需要包含的成员变量并确定。

  • equals方法

public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。
基本数据类型:比较的是值
引用数据类型:比较的是两个对象的地址值

如果想要比较两个对象的属性则需要重写equals方法:

@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Cat cat = (Cat) o;
        return age == cat.age &&
                Objects.equals(name, cat.name);
   @Override
public int hashCode() {
    int result = name != null ? name.hashCode() : 0;
    result = 31 * result + age;
    return result;
}	

IDEA自动重写equals代码中,使用到了 java.util.Objects 类,那么这个类是什么呢?

在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。源代码:
public static boolean equals(Object a, Object b) :判断两个对象是否相等第二节.Date类Date代表日期,可以用来获取系统相关的一些日期跟时间

java.util.Date 类

表示特定的瞬间,精确到毫秒

建日期对象,当前的时间
        System.out.println(new Date());//Sun Dec 02 10:56:34 CST 2018
// 创建日期对象,当前时间的毫秒值转成日期对象
        System.out.println(new Date(0L));//Thu Jan 01 08:00:00 CST 1970
    }
}
  • 常用方法

Date类中的多数方法已经过时,常用的方法有:
public long getTime() 把日期对象转换成对应的时间毫秒值。

Date d = new Date();
long t = d.getTime();
  • 获取当前系统时间与getTime()方法等效
  • System.out.println(System.currentTimeMillis());

DateFormat类

Format代表格式化,DateFormat是对日期跟时间格式化,按照我们想要的格式给大家展示出来

3.1简介java.text.DateFormat

是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。
格式化:按照指定的格式,从Date对象转换为String对象。
解析:按照指定的格式,从String对象转换为Date对象。

3.2构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类 java.text.SimpleDateFormat

3.3格式规则创建SimpleDateFormat对象的代码

如:

public static void main(String[] args) throws ParseException {
    //创建对象,格式化日期
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date d = new Date();//创建对象,获取当前时间
    System.out.println(d);//Mon Dec 03 11:06:44 CST 2018
    String s = sdf.format(d);//调用方法,把日期转换成为指定格式
    System.out.println("s = " + s);//s = 2018-12-03
    Date parse = sdf.parse(s);//调用方法,把指定格式时间转换为日期
    System.out.println(parse);//Mon Dec 03 00:00:00 CST 2018
}

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

Celendar类

日期类

public static void main(String[] args) {
    Calendar instance = getInstance();
    //修改年月日或给定时间
    instance.set(YEAR, 1993);
    instance.set(MINUTE, 6);
    instance.set(DAY_OF_MONTH, 1);
    //取出指定年月日
    System.out.println(instance.get(YEAR));
    System.out.println(instance.get(MINUTE));
    System.out.println(instance.get(DAY_OF_MONTH));
    //取出日期
    System.out.println(instance.getTime());
    //修改年份
    instance.add(YEAR,10);//增加十年
    System.out.println(instance.get(YEAR));//2003
    instance.add(YEAR,-3);//减少三年
    System.out.println(instance.get(YEAR));//2000
}

System类

获取与系统相关的类,有大量的静态方法

求出字符拼接十万次的时间,代码实现:

public static void main(String[] args) {
    String str = "";//存钱罐,初始值
    //获取起始时间
    long t1 = System.currentTimeMillis();
    for (int i = 0; i < 100000; i++) {//循环
        str += "java";
    }
    //获取最终时间
    long t2 = System.currentTimeMillis();
    long l = t2 - t1;//时间差
    System.out.println(l);//3177
}

数组复制

public static void main(String[] args) {
    int[] t1 = {1,2,3,4,5};
    int[] t2 = {55,66,77,88,99};
    System.out.println(Arrays.toString(t2));
    //[55, 66, 77, 88, 99]复制前
    System.arraycopy(t1,1,t2,0,3);
    System.out.println(Arrays.toString(t2));
    //[2, 3, 4, 88, 99]复制后
}

StringBuilder

他是一个字符串缓冲区,可以提高字符串相关操作的效率

public static void main(String[] args) {
    StringBuilder sb1 = new StringBuilder();//空参构造
    StringBuilder sb2 = new StringBuilder("java");//有参构造
    StringBuilder sb3 = sb1.append("abc");
    System.out.println(sb1);//abc
    System.out.println(sb3);//abc
    System.out.println(sb1==sb3);//两个对象是同一个对象true
    //链式编程
    StringBuilder h = sb1.append(1).append(81.2).append('h');
    System.out.println(h);//abc181.2h
    String s = h.toString();//转换为字符串
    System.out.println(s);//abc181.2h
    StringBuilder b4 = new StringBuilder(s);//转换为StringBuilder
    System.out.println(b4);//abc181.2h
}

包装类

基本数据类型int–>Integer
基本数据类型char–>Character
其余的基本数据类型至于要把首写字母大写即可
引用数据类型String不变

public static void main(String[] args) {
    //装箱
    Integer integer = new Integer(1);//构造方法
    System.out.println(integer);//1
    Integer integer1 = new Integer("2");//构造方法
    System.out.println(integer1);//2
    Integer integer2 = Integer.valueOf(3);//静态方法
    System.out.println(integer2);//3
    Integer integer3 = Integer.valueOf("4");//静态方法
    System.out.println(integer3);//4
    //拆箱
    int i = integer.intValue();
    System.out.println(i);//1
}

自动拆装箱

public static void main(String[] args) {
    //自动装箱
    Integer a = 1;
    //自动拆箱
    a += 2;
    System.out.println(a);//3
    ArrayList<Integer> arr = new ArrayList<>();
    arr.add(1);//自动装箱
    int integer = arr.get(0);//自动拆箱
}

字符串跟基本数据类型互相转换

public static void main(String[] args) {
    //以int举例
    //基本数据类型转换为字符串
    String s = 1 + "";//直接加
    System.out.println(s+66);//166
    String s1 = Integer.toString(2);//包装类的静态方法
    System.out.println(s1+66);//266
    String s2 = String.valueOf(3);//String中的静态方法
    System.out.println(s2+66);//366
    //字符串转换从基本数据类型
    int i = Integer.parseInt(s2);//包装类的静态方法
    System.out.println(i+66);//69
}

熊仁鑫 2018-12-2

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值