Java学习的第十六天(JavaSE精英篇06_常用API_object_System_Date_DateFarmat_SimpleDateFarmat)

一、文档注释(/*注释内容/)
package com.bianyiit.cast;
/**
 * 这是一个生产手机的演示文档*/
public class DemoApi {
    public static void main(String[] args) {
        Factory factory = new Factory();
        factory.prodece(new XiaoMiPhone());
        factory.prodece(new RedNotePhone());
        factory.prodece(new PupperNotePhone());
    }
}
/**工厂:生产手机*/
class Factory{
    public void prodece(Phone p){
        p.run();
    }
}
abstract class Phone{
    public abstract void run();
}
/**小米手机的生产方法*/
class XiaoMiPhone extends Phone{
    @Override
    public void run() {
        System.out.println("正在生产小米手机...");
    }
}
/**红米手机的生产方法*/
class RedNotePhone extends Phone{
    @Override
    public void run() {
        System.out.println("正在生产红米手机...");
    }
}
/**紫米手机的生产方法*/
class PupperNotePhone extends Phone{
    @Override
    public void run() {
        System.out.println("正在生产紫米手机...");
    }
}

如何生成一个类似JavaApi的文档
步骤1:添加指定的/**这是一个生产手机的演示文档*/的注释内容
步骤2:右击xxx.java,然后点击File Path确定,选择xxx.java进入目录


步骤3:双击路径,然后全部取消,输入cmd进入dos命令行



步骤4:输入javadoc Demo.java生成注释文档


步骤5:点击index.html打开和查看你生成的API文档

注意:如果输入javadoc 类名.java显示字符串的不可映射字符,那么我们需要进入file path目录,然后找到你的xxx.java文档,右击编辑,点击另存为,将编码格式改为ANSI编码就没有任何问题了

二、Java中的第一个API–object类

object类是所有类的父类(根类/超类),object中的所有方法子类都可以使用
JavaAPI1.6的解释文档

object的一个方法(clone())
package com.bianyiit.demo;

public class Demo_Clone {
    public static void main(String[] args) {
        Son s=new Son("小明",15);
        /*源码分析:public String toString() {
                return getClass().getName() + "@" + Integer.toHexString(hashCode());
         }*/
        System.out.println(s.toString());
        try {
            Son s1= (Son) s.clone();
            System.out.println(s1);
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}
class Son extends Object implements Cloneable{
    String name;
    int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return "Son{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
//输出结果:
	Son{name='小明', age=15}
	Son{name='小明', age=15}
object的四个常用方法

toString()

package com.bianyiit.demo;

public class Demo_toString {
    public static void main(String[] args) {
        Person p1 = new Person("陈翔",21);
        System.out.println(p1.toString());     //打印的是全类名地址com.bianyiit.demo.Person@1b6d3586
        //为了直接输出对象,输出的是数据而不是地址值,那么就要重写object的toString()方法
        //总结:为什么要重写toString();
        //原因:如果不重写,调用的是object的toString();而它打印的是全类名地址值
        //重写之后的toString()输出结果:Person{name='陈翔', age=21}
    }
}
class Person{
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

equals()

package com.bianyiit.demo;

import java.util.Objects;

public class Demo_Equals {
    public static void main(String[] args) {
        Person p1 = new Person("陈翔",21);
        Person p2 = new Person("陈翔",21);
        /*if(p1.equals(p2)){
            System.out.println(p1.equals(p2));   //这里的equals()比较的是两个对象的地址值是否相等,如果想比较两个对象的值是否相等
            //必须重写object类中的equals();
        }else{
            System.out.println(p1.equals(p2));*
        }*/
        System.out.println(p1.equals(p2));
        //总结 ==号和equals()方法的区别
        /*==在比较基本数据类型的时候比较的是具体的值,而在比较引用数据类型的时候比较的是地址值
        * 而object的equals()比较的是两个对象的地址值是否相等,如果想比较两个对象的值是否相等,需要重写object里面的equals()*/
    }
}
class Person {
    String name;
    int age;

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

/*    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }*/

    @Override
    public boolean equals(Object obj) {
        Person person = (Person) obj;
        if (this.name.equals(person.name) && this.age == person.age) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

hashcode()

package com.bianyiit.demo;

public class Demo_HashCode {
    public static void main(String[] args) {
        Person p1 = new Person("陈翔",21);
        System.out.println(p1.hashCode());   //输出的是地址值
        Person p2 = new Person("陈翔",21);
        System.out.println(p2.hashCode());   //输出的是地址值
        System.out.println(p1==p2);          //比较的是地址值
        System.out.println(p1.equals(p2));   //重写了object里面的toString()--->比较的是对象具体的属性值是否相等
    }
}
//输入结果:
	460141958
	1163157884
	false
	true

getClass()

package com.bianyiit.demo;

public class Demo_GetClass {
    public static void main(String[] args) {
        Person p1 = new Person("陈翔",21);
        Class<? extends Person> aClass = p1.getClass();
        System.out.println(aClass);
        //获取字节码文件对象
    }
}
//输入结果:class com.bianyiit.demo.Person
三、Java中的第二个API–System类
package com.bianyiit.demo;

import java.util.Scanner;

public class Demo_System {
    public static void main(String[] args) {
        new Scanner(System.in);   //System.in代表输入
        //返回以毫秒为单位的当前时间  从1970年1月1日0时0分0秒开始计算--->当前时间的毫秒值
        System.out.println(System.currentTimeMillis());
        //System.out.println();     //System.out代表输出
        //数组的复制
        int[] srcArray={1,2,3,4,5};
        //源数组打印
        for (int i = 0; i < srcArray.length; i++) {
            System.out.print(srcArray[i]+"\t");
        }
        System.out.println();
        int[] descArray=new int[srcArray.length];
        System.arraycopy(srcArray,0,descArray,0,srcArray.length);   //复制的方法
        //遍历descArray
        for (int i = 0; i < descArray.length; i++) {
            System.out.print(descArray[i]+"\t");
        }
        System.out.println();
        //手动终止虚拟机
        int i=1;
        for(;;){
            System.out.println(i);
            i++;
            if(i==10){
                System.exit(0);
                //break;
                //break只是结束循环,循环后面的程序还能继续运行,而System.exit(0)是结束了整个虚拟机,后面的程序不能再执行
            }
        }
        //System.gc();  ---运行垃圾回收器
    }
}
//输出结果:
	1573554853459
	1	2	3	4	5	
	1	2	3	4	5	
	1
	2
	3
	4
	5
	6
	7
	8
	9
四、Java中的第三个API–Date类
package com.bianyiit.demo;

import java.util.Date;

public class Demo_Date {
    public static void main(String[] args) {
        System.out.println(new Date().toString());  //美国人看的懂的时间 Tue Nov 12 15:46:02 CST 2019  CST东八区
        System.out.println(new Date().toLocaleString());  //中国人看的懂的时间 2019-11-12 15:46:02
        System.out.println(System.currentTimeMillis());   //毫秒值
        for (int i=0;i<=1000000;i++){}
        Date d=new Date();
        d.setTime(15735442L);
        System.out.println(d.toLocaleString());           //中国人看的懂得时间
        System.out.println(new Date().getTime());         //毫秒值
    }
}
//输出结果:
	Tue Nov 12 18:32:11 CST 2019
	2019-11-12 18:32:11
	1573554731550
	1970-1-1 12:22:15
	1573554731555
五、Java中的第四个API–DateFarmat类
package com.bianyiit.demo;

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

public class Demo_DateFormat {
    public static void main(String[] args) throws ParseException {
        //日期的格式化类(抽象类,不能创建对象)
        DateFormat d1 = DateFormat.getInstance();   //不是getDateInstance()
        //创建一个日期对象
        Date d2 = new Date();
        //格式化一下日期对象  从日期对象---字符串
        System.out.println(d1.format(d2));
        //解析   字符串---日期对象
        String s="19-11-12 下午4:45";
        System.out.println(d1.parse(s).toLocaleString());
    }
}
//输出结果:
	19-11-12 下午6:35
	2019-11-12 16:45:00
六、Java中的第五个API–SimpleDateFarmat类(开发中常用的超级格式化日期类)
package com.bianyiit.demo;

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

public class Demo_SimpleDateFormat {
    public static void main(String[] args) throws ParseException {
        //创建一个日期类
        Date d1 = new Date();
        //创建一个超级格式化对象类(无参构造)
        System.out.println(new SimpleDateFormat().format(d1));
        //(有参构造)
        System.out.println(new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(d1));
        //解析字符串---生成日期类
        String s="2019年11月12日 16时51分52秒";
        System.out.println(new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").parse(s).toLocaleString());
        /*总结:1.解析的时候,每一个单独的日期连接符要跟格式化给定的连接符要一致 2.给定的数据个数没有限制*/
    }
}
//输出结果:
	19-11-12 下午6:36
	2019年11月12日 18时36分52秒
	2019-11-12 16:51:52
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值