提前将许多的类都设计好,只要需要用的时候就可以直接拿来使用,若库中没有自己想要的也可以自己设计。这样感觉会加快很多自己设计程序的速度,而且感觉会更加简洁。
Object类(根类)
其中有两个主要学习的方法
public String toString():返回该对象的字符串表示
public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”
toString方法的重写
toString方法默认返回对象的类型+@+内存地址值,一般我们需要打印对象的字符串形式,所以我们需要将其重写
@Override
public String toString() {
return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
}
equals方法
public boolean equals(Object obj) 比较两对象的地址值
可我们一般想要的是比较两对象的内容或属性,所以也需要重写
@Override
public boolean equals(Object o) {
// 如果对象地址一样,则认为相同
if (this == o)
return true;
// 如果参数为空,或者类型信息不一样,则认为不同
if (o == null || getClass() != o.getClass())
return false;
// 转换为当前类型
Person person = (Person) o;
// 要求基本类型相等,并且将引用类型交给java.util.Objects类的equals静态方法取用结果
return age == person.age && Objects.equals(name, person.name);
}
}
[这里会有一个多态性的弊端,无法使用子类特有的内容(属性与方法)]
解决办法:向下转型,将Object类转换成Person类 Person p=(person) obj;
Date类
表示特定的瞬间(毫秒)
作用:时间与日期的计算
- 日期->毫秒
- 毫秒->日期
构造方法:
(1)空参
Date() 获取当前系统的时间
Date date=new Date();
(2)带参
Date(long date) 毫秒->日期
成员方法:
long gettTime() 日期->毫秒 类似于 System.currentimeMillis()
Format类
DateFormat类
日期/时间格式化(抽象类)
日期=>文本(格式化)
文本=>日期(解析)
String format(Date date) Date类=>字符串(格式化)
Date parse(String sourse) 字符串=>Date类 (解析)
[抽象类无法直接使用则用其子类]
构造方法:
public SimpleDateFormat(String pattern)
String pattern:传递指定的模式(模式中字母不可变,连接模式的字符可变)
常用的格式规则为:
| 标识字母(区分大小写) | 含义 |
| ----------- | ---- |
| y | 年 |
| M | 月 |
| d | 日 |
| H | 时 |
| m | 分 |
| s | 秒 |
StringBuiler类
可以说是一个字符串的缓冲区
(底层是一个数组,没有被final修饰,长度可以改变byte[],若超容则会自动扩容)
构造方法:
public StringBuilder():构造一个空的StringBuilder容器
public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去
常用方法:
public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。
[append方法返回的是this,谁调用它this就指向谁
同时append方法无需接受返回值,可以接收任意类型的参数]
public String toString():将当前StringBuilder对象转换为String对象。
StringBuilder和String可以相互转换
[StringBuilder已经覆盖重写了Object当中的toString方法]
包装类
| 基本类型 | 对应的包装类(位于java.lang包中) |
| ------- | --------------------- |
| byte | Byte |
| short | Short |
| int | **Integer** |
| long | Long |
| float | Float |
| double | Double |
| char | **Character** |
| boolean | Boolean |
装箱 拆箱
装箱:从基本类型转换为对应的包装类对象
构造方法:
Integer(int value) 分配Integer对象指定的int值
Integer(String s) 基本类型的字符串
静态方法:
static Integer valueOf(int i) 返回一个表示指定的int值的Integer
static Integer valueOf(String s) 返回保持指定的String的值的Integer对象
拆箱:从包装类对象转换为对应的基本类型
int intValue() 以int类型返回该Integer的值
自动装箱与自动拆箱:从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成
基本类型与字符串之间的转换
基本类型->字符串
- 基本类型+” ”
- String类静态方法 static string toString(int i)
- 包装类 static String valueOf(int i)
字符串->基本类型
包装类中的静态方法 parseXXX(“字符串”)
另:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出`java.lang.NumberFormatException`异常
并发与并行
并发:指两个或多个事件在同一个时间段内发生。
并行:指两个或多个事件在同一时刻发生(同时发生)
线程与进程
进程:是操作系统分配资源的最小单位
线程:线程是进程中的一个最小执行单元,负责当前进程中程序的执行
另:一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
创建线程类
1. 定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体。
2. 创建Thread子类的实例,即创建了线程对象
3. 调用线程对象的start()方法来启动该线程