(如有问题,欢迎各位大佬批评指正)
一:Object类
二:Date类
三:Calender
四:System类
五:String Builder
六:包装类
七:集合框架(Collection)为例
创建一个Person类
public class Person {
private String name;
private int age;
public Person {
}
//实现equals方法重写
@Override
public boolean equals(Object obj) {
//向下转型obj转为Person类型
Person p = (Person)obj;
//重写之后比较两个对象的属性
boolean b = this.name.equals(p.name) && this.age == p.age;
return b;
}
// @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);
// }
public Person (String name, int age) {
this.name = name;
this.age = 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;
}
}
应用:
package eaquls;
public class Demo01 {
public static void main(String[] args) {
/*
* Person类默认继承了Object类,所以可以使用equals方法。
* boolean equals(Object obj)指的是其他对象是否与此对象相等
* */
// object类中的equals方法
// public boolean equals(Object obj) {
// return (this == obj);
// }
// this 就是那个对象调用的方法就是内个对象 p1
// obj 就是需要比较的对象 p2
Person p1 = new Person("迪丽热巴", 18);
Person p2 = new Person("迪丽热巴", 18);
// System.out.println("p1:"+ p1);
// System.out.println("p2:"+ p2);
boolean b = p1.equals(p2);
System.out.println(b);
}
}
在jdk7添加了一个工具类,它提供了一些方法来操作对象,它是由一些静态的实用方法组成,这些方法是空指针安全的,用于计算对象的hashcode、返回对象的字符串表示形式,比较两个对象。
public class Demo01 {
public static void main (String[] args) {
String s1 = "abc";
String s2 = "Abc";
//如果使用object类的equals方法的话,如果s1为空,那么就会出现空指针异常的情况。所以这里我们可以使用Objects的equals方法
boolean b = Objects (s1, s2);
System.out.println (b); //false
}
}
java.util.Date类 表示特定的瞬间,精确到毫秒
毫秒:千分之一秒,1000ms = 1s
特定的瞬间:就是一个时间点
毫秒可以进行时间和日期的计算
日期转化为毫秒
**注意:**中国数据东八区,会把时间增加8小时
毫秒转化为日期
public class Demo {
public static void main (String[] args) {
//获取当前系统时间到时间原点过去了多少毫秒
System.out.println(System.currentTimeMillis())
}
}
public class Demo {
public static void main (String[] args) {
date1();
date2();
date3();
}
public static void date3() {
Date date = new Date();
long time = date.getTime();//返回一个long类型的值
System.out.println(time);//获取当前的时间距离原时间的毫秒数
}
public static void date2() {
Date date = new Date(0L);//需要一个long类型的值,就是毫秒数
System.out.println(date);//把毫秒数转化为日期
}
public static void date1() {
Date date = new Date();
System.out.println(date);//获取当前系统的日期
}
}
DateFormate
java.text.DateFormate: 是日期、时间格式化子类的抽象类
作用:格式化(也就是日期–>文本)、解析(文本–>日期)
成员方法:String format (Date date) 按照指定的模式,他Date日期,格式化为符合模式的字符串
Date parse (String source) 把符合模式的字符串,解析为Date日期
DateFormat类是一个抽象类,无法直接创建对象,可以使用它的子类
java.text.SimpleDateFormat(String pattern)
构造方法:SimpleDateFormat(String pattern),用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
参数:String pattern :传递指定的模式
“yyyy-MM-dd HH:mm:ss”
注意事项:模式中的字母不能改,连接模式的符号可以改变
“yyyy年MM月dd日 HH时mm分ss秒”
y 年
M 月
d 日
H 时
m 分
s 秒
package date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class DateFormat {
public static void main(String[] args) throws ParseException {
demo01();
demo02();
}
private static void demo02() throws ParseException {
/*
* 使用DateFormat类中的方法parse,把文本解析为日期
* 1.创建SimpleDateFormat对象,构造方法中传递指定模式
* 2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
* 注意:parse方法声明了一个异常叫做ParseException
* 如果字符串和构造方法的模式不一样,那么程序就会抛出异常
* 调用一个抛出了异常的方法,就必须得处理这个异常,要么throws继续抛出这个异常,要么try catch自己处理
* */
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date d = sdf.parse("2020年05月29日 08时56分14秒");
System.out.println(d);
}
private static void demo01() {
/*
* 使用DateFormat类中的format,把日期格式化为文本
* 使用步骤:
* 1.创建SimpleDateFormat对象,构造方法中传递指定的模式
* 2.调用SimpleDateFormat对象中format方法,按照构造方法中指定的模式,把Date日期格式转化为符合模式的字符串
* "yyyy年MM月dd日 HH时mm分ss秒"
* */
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date date = new Date();
String d = sdf.format(date);
System.out.println(d);
}
}
日历类
Calender类是一个抽象类,里面提供了很多操作日历字段的方法(Year、Month、Day_Of_Month、Hour)
Calendar类无法直接创建对象,里面有一个静态方法叫 getInstance,该方法返回了Calendar类的子对象
static Calendar getInstance()使用默认时区和语言获取一个日历
常用方法
public int get(int field)
:返回给定日历字段的值。
public void set(int field, int value)
:将给定的日历字段设置为给定的值
public abstract void add(int field, int amout)
:根据日历的规则,为给定的日历添加或删去指定的时间量
public Date getTime()
:返回给定的日历字段
成员方法的参数
int field:日历类的字段,可以使用Calendar类的静态成员变量获取
public static final int YEAR = 1;年
public static final int MONTH = 2; 月
public static final int DATE = 5; 月中的某一天
public static final int DAY_OF_MONT = 5;月中的某一天
public static final int HOUR = 10;时
public static final int MINUTE = 12 分
public static final int SECOND = 13 秒
public class Demo {
public static void main(String[] args) {
/*
public int get (int field):返回给定日历字段的值
参数:传递指定日历的字段
返回值:日历字段代表的具体的值
public void set (int field):将给定的日历字段设置为定值
参数:int field:传递指定的日历参数
int value: 给定字段设置的值
public abstract void add(int field, int amount):根据日历规则,为给定的日历字段添加或减去指定的时间量
把指定的字段增加或减少
参数:
int field:指定日历字段
int amount:增加或减少的值
正数增加
负数减少
public Date getTime();//返回一个表示此Calendar时间值
就是把日历对象转化为日期对象
Calendar c = Calendar.getInstance();
Date date = c.getTime();
*/
Calendar c = Calendar.getInstance()//多态
int year = c.get(Calendar.YEAR);
System.out.println(year);
int month = c.get(Calendar.MONTH);
System.out.println(month);
int day = c.get(Calendar.DATE);
System.out.println(day);
// c.set(Calendar.YEAR, 5555);
// c.set(Calendar.MONTH,10);
// c.set(Calendar.DATE, 24);
// c.set(2243,1,25); //这是一个set方法的重载,可以直接设置年月日
Calendar c = Calendar.getInstance();
// c.add(Calendar.YEAR, 2);
// int year = c.get(Calendar.YEAR);
// System.out.println(year);
}
private static void demo03() {
Calendar c = Calendar.getInstance();
Date date = c.getTime();
System.out.println(date);
}
}
java.lang.System
类中提供了大量的静态方法,可以互获取与系统相关的信息或系统及操作,在System类的API中常用的方法有:
获取当前时间的毫秒数
public class Demo {
public static void main (String[] args) {
//记录开始开始时间start
long start = System.currentTimeMillis();
//1-100000循环
for (int i = 0; i <= 100000; i++) {
System.out.println(i);
}
//记录结束时间end
long end = System.currentTimeMillis();
System.out.println("运行时间为:" + (end - start) + "毫秒");
}
}
arraycopy(Object src, int srcPos, object dest, int desPos, int length)
将数组中指定的数据拷贝到另一个数组中。
参数:
src: 原数组
srcPos 原数组中的起始索引
dest 目标数组
destPos目标数组中的起始位置
length 要复制的数组元素的数量
练习:
public class Demo {
public static void main(String[] args) {
int [] arr1 = {1, 2, 3, 4, 5};
int [] arr2 = {j, k, l, e, p};
System.arraycopy(arr1, 0, arr2, 0, 3);
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
}
}
构造方法:
StringBuilder()构造一个不带任何字符串生成器,其初始容量为16字符
StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串
public class Demo {
public static void main(String[] args) {
//空参构造方法
StringBuilder bul = new StringBuilder();
//指定字符构造
StringBuilder bul2 = new StringBuilder("abc");
}
}
常用成员方法:
append方法:其实就是往里面添加东西,注意可以添加任意形式
public class Demo01 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append(12).append(true).append('中');
System.out.println(sb);
}
}
toString方法
StringBuilder和String是可以互相转化的
public class Demo {
public static void main(String[] args) {
String str = "Hello";
StringBuilder sb = new StringBuilder(str);
sb.append("World");
System.out.println(sb);//HelloWrold
String sb2 = sb.toString();//转化为String类型
}
}
概述:Java提供了两个类型系统,基本类型,引用类型,使用基本类型在于效率,然而很多时候,会创建对象使用,因为对象可以做出更多的功能,如果我们想要把基本类型当作对象一样操作,就可以使用基本类型对应的包装类
什么是包装类:
基本数据类型,使用起来非常方便,到那时没有对应的方法来操作这些基本类型的数据可以使用一个类,把基本类型的数据包装起来,在类中定义一些方法,这个类叫做包装类,我们可以把一个包装类当作一个箱子。
基本类型 | 对应包类(位于java.lang包) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
基本类型与对应的包装类对象之间,来回转化的过程称为装箱与拆箱
基本数值—>包装对象
Integer i = new Integer(4)//使用构造函数
Integer ii = new Integer.valueOf(4); 使用包装类中的valueOf方法
包装对象—>基本数值
int num = i.inValue();
具体方法:
装箱:把基本类型,包装到包装类中
构造方法:
Integer(int value)构造一个新分配的Integer对象,它表示int值
Integer(String s)构造一个新分配的Integer对象,它表示String 参数所指示的int 值
转递字符串,必须是基本类型的字符串,否则会抛出异常。
静态方法:
static Integer valueOf(int i):返回一个表示指定的 int 值的 Integer 实例
static Integer valueOf(String s) 返回保存指定的String值的 Integer 对象
拆箱:在包装类中取出基本类型的数据
成员方法:int intValue() 以int 类型返回该 Integer 的值
public class Demo {
public static void main(Strint[] args) {
//装箱
//构造方法
Integer in1 = new Integer(1);
System.out.println(in1);
Integer in2 = new Integer("2");
System.out.println(in2);
//静态方法
Integer in3 = Integer.valueOf(3);
System.out.println(in3);
Integer in4 = Integer.valueOf("23");
System.out.println(in4);
//拆箱
int in5 = in1.intValue();
System.out.println(in5);
}
}
用一个集合举例子
public class Demo02 {
public static void main (String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);//自动装箱 list.add(new Integer(1));
int a = list.get(0);//自动拆箱 list.get(0).intValue
}
}
基本类型–>字符串
字符串—>基本类型
public static void main(String[] args) {
//基本类型--->字符串
String a = Integer.toString(13);
System.out.println(a + 14);//不会发生相加 结果是1314
int b = 13;
String c = b + "";
System.out.println(c + 14);//不会发生相加 结果是1314
String d = String.valueOf(13);
System.out.println(d + 14);//不会发生相加 结果是1314
//字符串转基本类型
String lin3 = "13";
int ln4 = Integer.parseInt(lin3);
System.out.println(ln4);
}
JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能交接何时采用哪个类,以及类之间如何彼此合作的,从而达到灵活应用。
集合按照其储存结构可分为两大类,分别是单列集合java.util.Collection
和双列集合java.util.Map
,
java.util.List
和java.util.Set
。其中List
的特点是元素有序,元素可重复,Set
接口的主要实现类有java.util.HashSet
和 java.util.TreeSet
是所有单列集合的父接口,因此在Collection中定义了单列集合List和Set通用的一些方法
public boolean add(E e):把给定的对象添加到当前集合中
public void clear():清空集合中所有的元素
public boolean remove(E e):把给定的对象在当前集合中删除
public boolean contains(E e)判断当前集合中是否包含给定的对象
public boolean isEmpty():判断当前集合是否为空
public int size():返回集合中元素的个数
public Object[] toArray():把集合中的元素,储存到数组中
public static void main(String[] args) {
//创建集合对象,可以使用多态
Collection<String> coll = new ArrayList<String>();
System.out.println(coll);//返回空对象,而不是一个地址值,说明已经重写了toString()方法
//给集合中添加元素 public boolean (E e);添加元素,boolean一般不需要返回值,一般都是返回的是true
boolean boo = coll.add("张三");
coll.add("李四");
coll.add("王五");
coll.add("马六");
coll.add("田七");
System.out.println(boo);
System.out.println(coll);
//Remove方法,删除集合中的元素。删除成功就返回true,删除失败返回false
boolean skt = coll.remove("田七");
System.out.println(skt);
boolean skt1 = coll.remove("老田");
System.out.println(skt1);
//contains:判断集合中时候包含指定的元素,有就返回true,没有就返回false
boolean gen = coll.contains("李四");
System.out.println(gen);
boolean gen1 = coll.contains("马七上");
System.out.println(gen1);
//isEmpty判断当前集合时候为空,也是返回一个布尔值
boolean empty = coll.isEmpty();
System.out.println(empty);
//clear清除集合中的元素
// coll.clear();
// boolean empty1 = coll.isEmpty();
// System.out.println(empty1);
//size返回集合中元素的个数
int a = coll.size();
System.out.println(a);
//toArray把集合转化为数组
Object[] objects = coll.toArray();
for (int i = 0; i < objects.length; i++) {
System.out.println(objects[i]);
}
}