API综述
API :java已经为我们封装好的现成可以直接使用的类或者接口
API文档:每个API文档注释所生成的解释文档
Object类
实验的Person类
package com.bianyiit.cast;
/**
* 这是一个用来描述人的类
* 包含了属性:姓名 年龄 性别
* 也包含了吃饭 睡觉的行为
* */
public class Person{
private String name;
private int age;
private String sex;
/**
* 这是一个无参构造
* */
public Person() {
}
/**
* 这是一个有参构造
* */
public Person(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
/**
* 这是setxxx和getxxx方法设置属性值和获取属性值
* */
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
/**
* 这是一个吃饭的方法
* */
public void eat(){
System.out.println("吃饭....");
}
/**
* 这是一个睡觉的方法
* */
public void sleep(){
System.out.println("睡觉....");
}
@Override
public String toString() {
return name+"\t"+age+"\t"+sex;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
//重写Object的equals()
@Override
public boolean equals(Object obj) {
//把obj 进行向下转型 Person p
Person p=(Person)obj;
//把传过来的对象的内容跟当前对象的内容进行比较
//比较字符串是否相等 equals()
if(this.age==p.getAge()&&this.name.equals(p.getName())&&this.sex.equals(p.getSex()))
return true;
else
return false;
}
}
1.clone类—复制
package com.bianyiit.cast1;
import com.bianyiit.cast.Person;
public class ObjectDemo1 {
public static void main(String[] args) throws CloneNotSupportedException {
//创建Object的对象
// Object oj=new Object();
/* Person p1=new Person();
p1.setName("左冷禅");
p1.setAge(22);
p1.setSex("妖");
System.out.println(p1);*/
//调用clone()复制对象
//直接复制数组的时候不需要实现 cloneable
int[] arr={1,3,5,7};
int[] brr = arr.clone();
for (int i = 0; i <brr.length ; i++) {
System.out.println(brr[i]);
}
// System.out.println(p1.clone());
}
}
toString类
package com.bianyiit.cast1;
import com.bianyiit.cast.Person;
public class ObjectDemo2 {
public static void main(String[] args) {
Person p1=new Person();
p1.setName("左冷禅");
p1.setAge(22);
p1.setSex("妖");
System.out.println(p1);//全类名(限定类名)@地址值 com.bianyiit.cast.Person@1b6d3586
System.out.println(p1.toString());
Person p2=new Person();
p2.setName("左冷禅");
p2.setAge(22);
p2.setSex("妖");
System.out.println(p1);//全类名(限定类名)@地址值 com.bianyiit.cast.Person@1b6d3586
System.out.println(p1.toString());
// return getClass().getName() + "@" + Integer.toHexString(hashCode());
//Object的toString()打印的是全类名(限定类名)@地址值
// 为了直接输出对象输出的是数据而不是地址值。那么就要重写Object的toString()方法
/*总结toString():
* 1.为什么要重写toString()?
* 如果不重写,调用的是Object的toString(),Object的toString()打印的是地址值
*
* */
}
}
hashcode类
package com.bianyiit.cast1;
import com.bianyiit.cast.Person;
public class ObjectDemo3 {
public static void main(String[] args) {
Person p1=new Person();
p1.setName("左冷禅");
p1.setAge(22);
p1.setSex("妖");
System.out.println(p1);//全类名(限定类名)@地址值 com.bianyiit.cast.Person@1b6d3586
System.out.println(p1.toString());
Person p2=new Person();
p2.setName("左冷禅");
p2.setAge(22);
p2.setSex("妖");
System.out.println(p1);
//获取对象的地址值 hashcode()
System.out.println("p1的地址值是:"+p1.hashCode());
System.out.println("p2的地址值是:"+p2.hashCode());
if(p1==p2){
System.out.println("两个是同一个对象");
}else{
System.out.println("不是同一个对象");
}
if(p1.hashCode()==p2.hashCode())
System.out.println("两个是同一个对象");
else
System.out.println("不是同一个对象");
//==比较基本数据类型时是比较值是否相等,比较引用数据类型的时候,比较的是地址值是否相等
/* int a=10;
int b=20;
System.out.println(a==b);*/
}
}
getClass类
package com.bianyiit.cast1;
import com.bianyiit.cast.Person;
public class ObjectDemo4 {
public static void main(String[] args) {
Person p1=new Person();
p1.setName("左冷禅");
p1.setAge(22);
p1.setSex("妖");
//getClass()-----获取字节码文件对象
Class<? extends Person> clazz = p1.getClass();//反射
System.out.println( p1.getClass());//class com.bianyiit.cast.Person
}
}
equals类
package com.bianyiit.cast1;
import com.bianyiit.cast.Person;
public class ObjectDemo5 {
public static void main(String[] args) {
Person p1=new Person();
p1.setName("左冷禅");
p1.setAge(22);
p1.setSex("女");
System.out.println(p1);//全类名(限定类名)@地址值 com.bianyiit.cast.Person@1b6d3586
System.out.println(p1.toString());
Person p2=new Person();
p2.setName("左冷禅");
p2.setAge(22);
p2.setSex("妖");
System.out.println(p1);
System.out.println(p1==p2);//false
System.out.println(p1.equals(p2));//false
/* Object的equals()比较的还是对象的地址值
* 为了让equals()是进行对象的内容的比较,所以要重写Object的equals()*/
}
}
System类
package com.bianyiit.cast1;
import java.util.Scanner;
public class SystemDemo1 {
public static void main(String[] args) {
/*如果要使用java封装好的API(类或者接口),除了lang包下的,其他包下的类或者接口都需要导包*/
//创建System的对象 System不能够实例化
/*
* static InputStream in
“标准”输入流。
static PrintStream out
“标准”输出流。
* */
System.out.println("你个大傻缺!!!");//在控制台进行输出内容
Scanner sc=new Scanner(System.in);//在控制台进行输出
//out in 字段就是用来进行控制台的输出 和输入用的。
//static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :数组的复制
/*Object src:源数组
* int srcPos:源数组开始复制的起始位置
* Object dest:目标数组
* int destPos:目标数组被复制的时候的起始位置
* int length:要赋值的长度
* */
//源数组
int[] srcArray={1,2,3,5};
//目标数组
int[] decArray=new int[srcArray.length];
//复制的过程
System.arraycopy(srcArray,0,decArray,0,srcArray.length);
//遍历decArray
for (int i = 0; i < decArray.length; i++) {
System.out.print(decArray[i]+" ");
}
}
}
package com.bianyiit.cast1;
import com.bianyiit.cast.Person;
public class SystemDemo2 {
public static void main(String[] args) {
// method2();
// method1();
// static void exit(int status) ----手动终止虚拟机
//死循环
int i=1;
/* for(;;){
System.out.println(i);
i++;
if(i==5){
//终止虚拟机
// System.exit(1);
break;
}
}*/
// static void gc()-----手动运行垃圾回收器
Person p1=new Person();
//对象用完之后,对象会被JVM的垃圾回收器自动进行回收。但是用完的对象在堆内存里面到底存在多久的时间才能被回收掉(算法)
//自动回收---对象一使用就手动回收一下。
System.gc();
}
private static void method2() {
// static long currentTimeMillis()----返回以毫秒为单位的当前时间。
// 返回的是当前系统时间的毫秒值 从1970-1-1到当前系统的经历的毫秒数
System.out.println(System.currentTimeMillis());//1573531165426 1573531
long l = System.currentTimeMillis();
//毫秒值 类型是long UNIX 公司规定的
}
private static void method1() {
for (int j = 0; j <10 ; j++) {
System.out.println(j);
if(j==5){
System.exit(1);
}
}
System.out.println("haha");
//break只是结束循环,循环后面的程序还能继续运行,而System.exit(0);是结束整个虚拟机,后面的程序不能再执行。
}
}
Date类
package com.bianyiit.cast1;
import java.util.Date;
public class DateDemo1 {
public static void main(String[] args) {
//创建Date对象-----util包
//无参构造创建对象----创建的是当前系统的时间对象。
Date d=new Date();
System.out.println(d);
System.out.println(d.toString());//内容--- Tue Nov 12 15:15:15 CST 2019 CST东八区
//给中国人看
System.out.println(d.toLocaleString());//---2019-11-12 15:18:00---/获取当前时间的本地格式的字符串
/* void setTime(long time) //设置当前时间
long getTime() //获取当前时间*/
// long getTime()
long d2 = d.getTime();
System.out.println(d2);//1573543328128 ---从1970-1-1到当前系统时间经历的毫秒值
System.out.println(System.currentTimeMillis());
long l = d.getTime();
System.out.println(l);//15735433277770
//Date(long date) :根据"指定时间"创建Date对象
//setTime(long time)---设置时间
d.setTime(15735433277770L);
System.out.println(d.toLocaleString());
Date d1=new Date(15735433277770L);
System.out.println(d1.toLocaleString());
/*setTime()跟有参构造创建时间对象效果是一样的
* getTime()跟System.currentTimeMillis()的效果是一样的(前提是getTime()获取的当前系统时间的毫秒值)*/
}
}
DateFormat类
package com.bianyiit.cast1;
import java.text.DateFormat;
import java.text.FieldPosition;
import java.text.ParseException;
import java.text.ParsePosition;
import java.util.Date;
public class DateFormatDemo1 {
public static void main(String[] args) throws ParseException {
//DateFormat----抽象类(不能实例化)
//日期的格式化类,格式化(可以把日期固定某一种格式展示出来)
//主要作用是用来格式化日期对象
//创建一个日期对象
Date d=new Date();
System.out.println(d);//Tue Nov 12 16:07:55 CST 2019
System.out.println(d.toLocaleString());//2019-11-12 16:07:55
//日期的格式化对象 DateFormat的对象
/* static DateFormat getInstance()
获取为日期和时间使用 SHORT 风格的默认日期/时间格式器。*/
//创建格式化对象
DateFormat df = DateFormat.getInstance();
//格式化一下日期
/* String format(Date date)----格式化日期用的
将一个 Date 格式化为日期/时间字符串。*/
//格式化是把 日期对象转换成字符串 Date----String
String s = df.format(d);
System.out.println("格式化之后的日期:"+s);//19-11-12 下午4:07
//把一个字符串转换成日期对象 String----Date (解析)
/* Date parse(String source)
从给定字符串的开始解析文本,以生成一个日期。*/
String s1="19-11-12 下午4:07";
Date d2 = df.parse(s1);
System.out.println(d2.toLocaleString());
}
}